diff options
author | Michele Calgaro <[email protected]> | 2020-12-07 22:58:44 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2020-12-07 22:58:44 +0900 |
commit | 145abc15d57fb29701a12e8a14dcb9c1fd72e9be (patch) | |
tree | fbb4f2f737ec6f4e8a85bea5f2ca2257d20d7e22 /kdesktop/pixmapserver.cc | |
parent | d95494d97233919fa0b2eebf60759537b793e05b (diff) | |
download | tdebase-145abc15d57fb29701a12e8a14dcb9c1fd72e9be.tar.gz tdebase-145abc15d57fb29701a12e8a14dcb9c1fd72e9be.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'kdesktop/pixmapserver.cc')
-rw-r--r-- | kdesktop/pixmapserver.cc | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/kdesktop/pixmapserver.cc b/kdesktop/pixmapserver.cc deleted file mode 100644 index 56224f37a..000000000 --- a/kdesktop/pixmapserver.cc +++ /dev/null @@ -1,254 +0,0 @@ -/* - * - * This file is part of the KDE project, module kdesktop. - * Copyright (C) 1999 Geert Jansen <[email protected]> - * - * You can Freely distribute this program under the GNU General Public - * License. See the file "COPYING" for the exact licensing terms. - * - * - * Shared pixmap server for KDE. - * - * 5 Dec 99: Geert Jansen: - * - * Initial implementation using the X11 selection mechanism. - */ - -#include <assert.h> - - -#include <tdeapplication.h> -#include <kdebug.h> - -#include <X11/X.h> -#include <X11/Xlib.h> - -#include "pixmapserver.h" - -#ifndef None -#define None 0L -#endif - -#ifdef __GNUC__ -#define ID __PRETTY_FUNCTION__ << ": " -#else -#define ID "KPixmapServer: " -#endif - - -KPixmapServer::KPixmapServer() - : TQWidget(0L, "shpixmap comm window") -{ - kapp->installX11EventFilter(this); - pixmap = XInternAtom(tqt_xdisplay(), "PIXMAP", false); -} - - -KPixmapServer::~KPixmapServer() -{ - SelectionIterator it; - for (it=m_Selections.begin(); it!=m_Selections.end(); it++) - XSetSelectionOwner(tqt_xdisplay(), it.key(), None, CurrentTime); - - DataIterator it2; - for (it2=m_Data.begin(); it2!=m_Data.end(); it2++) - delete it2.data().pixmap; -} - - -void KPixmapServer::add(TQString name, TQPixmap *pm, bool overwrite) -{ - if (m_Names.contains(name)) - { - if (overwrite) - remove(name); - else return; - } - - TQString str = TQString("KDESHPIXMAP:%1").arg(name); - Atom sel = XInternAtom(tqt_xdisplay(), str.latin1(), false); - KPixmapInode pi; - pi.handle = pm->handle(); - pi.selection = sel; - m_Names[name] = pi; - - TDESelectionInode si; - si.name = name; - si.handle = pm->handle(); - m_Selections[sel] = si; - - DataIterator it = m_Data.find(pm->handle()); - if (it == m_Data.end()) - { - KPixmapData data; - data.pixmap = pm; - data.usecount = 0; - data.refcount = 1; - m_Data[pm->handle()] = data; - } else - it.data().refcount++; - - XSetSelectionOwner(tqt_xdisplay(), sel, winId(), CurrentTime); -} - - -void KPixmapServer::remove(TQString name) -{ - // Remove the name - NameIterator it = m_Names.find(name); - if (it == m_Names.end()) - return; - KPixmapInode pi = it.data(); - m_Names.remove(it); - - // Remove and disown the selection - SelectionIterator it2 = m_Selections.find(pi.selection); - assert(it2 != m_Selections.end()); - m_Selections.remove(it2); - XSetSelectionOwner(tqt_xdisplay(), pi.selection, None, CurrentTime); - - // Decrease refcount on data - DataIterator it3 = m_Data.find(pi.handle); - assert(it3 != m_Data.end()); - it3.data().refcount--; - if (!it3.data().refcount && !it3.data().usecount) - { - delete it3.data().pixmap; - m_Data.remove(it3); - } -} - - -TQStringList KPixmapServer::list() -{ - TQStringList lst; - NameIterator it; - for (it=m_Names.begin(); it!=m_Names.end(); it++) - lst += it.key(); - return lst; -} - - -void KPixmapServer::setOwner(TQString name) -{ - NameIterator it = m_Names.find(name); - if (it == m_Names.end()) - return; - - XSetSelectionOwner(tqt_xdisplay(), it.data().selection, winId(), CurrentTime); -} - - -bool KPixmapServer::x11Event(XEvent *event) -{ - // Handle SelectionRequest events by which a X client can request a - // shared pixmap. - - if (event->type == SelectionRequest) - { - XSelectionRequestEvent *ev = &event->xselectionrequest; - - // Build negative reply - XEvent reply; - reply.type = SelectionNotify; - reply.xselection.display = tqt_xdisplay(); - reply.xselection.requestor = ev->requestor; - reply.xselection.selection = ev->selection; - reply.xselection.target = pixmap; - reply.xselection.property = None; - reply.xselection.time = ev->time; - - // Check if we know about this selection - Atom sel = ev->selection; - SelectionIterator it = m_Selections.find(sel); - if (it == m_Selections.end()) - return false; - TDESelectionInode si = it.data(); - - // Only convert to pixmap - if (ev->target != pixmap) - { - kdDebug(1204) << ID << "illegal target\n"; - XSendEvent(tqt_xdisplay(), ev->requestor, false, 0, &reply); - return true; - } - - // Check if there is no transaction in progress to the same property - if (m_Active.contains(ev->property)) - { - kdDebug(1204) << ID << "selection is busy.\n"; - XSendEvent(tqt_xdisplay(), ev->requestor, false, 0, &reply); - return true; - } - - // Check if the selection was not deleted - DataIterator it2 = m_Data.find(si.handle); - if (it2 == m_Data.end()) - { - kdDebug(1204) << ID << "selection has been deleted.\n"; - XSendEvent(tqt_xdisplay(), ev->requestor, false, 0, &reply); - return true; - } - - kdDebug(1204) << ID << "request for " << si.name << "\n"; - - // All OK: pass the pixmap handle. - XChangeProperty(tqt_xdisplay(), ev->requestor, ev->property, pixmap, - 32, PropModeReplace, (unsigned char *) &si.handle, 1); - it2.data().usecount++; - m_Active[ev->property] = si.handle; - - // Request PropertyNotify events for the target window - // XXX: The target window better not be handled by us! - XSelectInput(tqt_xdisplay(), ev->requestor, PropertyChangeMask); - - // Acknowledge to the client and return - reply.xselection.property = ev->property; - XSendEvent(tqt_xdisplay(), ev->requestor, false, 0, &reply); - return true; - } - - // ICCCM says that the target property is to be deleted by the - // requestor. We are notified of this by a PropertyNotify. Only then, we - // can actually delete the pixmap if it was removed. - - if (event->type == PropertyNotify) - { - XPropertyEvent *ev = &event->xproperty; - - AtomIterator it = m_Active.find(ev->atom); - if (it == m_Active.end()) - return false; - HANDLE handle = it.data(); - m_Active.remove(it); - - DataIterator it2 = m_Data.find(handle); - assert(it2 != m_Data.end()); - it2.data().usecount--; - if (!it2.data().usecount && !it2.data().refcount) - { - delete it2.data().pixmap; - m_Data.remove(it2); - } - return true; - } - - // Handle SelectionClear events. - - if (event->type == SelectionClear) - { - XSelectionClearEvent *ev = &event->xselectionclear; - - SelectionIterator it = m_Selections.find(ev->selection); - if (it == m_Selections.end()) - return false; - - emit selectionCleared(it.data().name); - return true; - } - - // Process further - return false; -} - -#include "pixmapserver.moc" |