summaryrefslogtreecommitdiffstats
path: root/kdeui/ksharedpixmap.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-06 15:56:40 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-06 15:56:40 -0600
commite16866e072f94410321d70daedbcb855ea878cac (patch)
treeee3f52eabde7da1a0e6ca845fb9c2813cf1558cf /kdeui/ksharedpixmap.cpp
parenta58c20c1a7593631a1b50213c805507ebc16adaf (diff)
downloadtdelibs-e16866e072f94410321d70daedbcb855ea878cac.tar.gz
tdelibs-e16866e072f94410321d70daedbcb855ea878cac.zip
Actually move the kde files that were renamed in the last commit
Diffstat (limited to 'kdeui/ksharedpixmap.cpp')
-rw-r--r--kdeui/ksharedpixmap.cpp228
1 files changed, 0 insertions, 228 deletions
diff --git a/kdeui/ksharedpixmap.cpp b/kdeui/ksharedpixmap.cpp
deleted file mode 100644
index d0a74f223..000000000
--- a/kdeui/ksharedpixmap.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-/* vi: ts=8 sts=4 sw=4
- *
- *
- * This file is part of the KDE libraries.
- * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * Shared pixmap client for KDE.
- */
-#include "config.h"
-
-#include <tqrect.h>
-#include <tqsize.h>
-#include <tqstring.h>
-#include <tqpixmap.h>
-#include <tqwindowdefs.h>
-#include <tqwidget.h>
-
-#ifdef Q_WS_X11
-
-#include <kapplication.h>
-#include <krootprop.h>
-#include <ksharedpixmap.h>
-#include <kdebug.h>
-#include <stdlib.h> // for abs
-
-#include <X11/Xlib.h>
-
-// Make sure to include all this X-based shit before we clean up the mess.
-// Needed for --enable-final. Not needed by this file itself!
-#include <X11/Xutil.h>
-#ifdef HAVE_MITSHM
-#include <X11/extensions/XShm.h>
-#endif
-
-#include <netwm.h>
-
-// Clean up the mess
-
-#undef Bool
-#undef Above
-#undef Below
-#undef KeyPress
-#undef KeyRelease
-#undef FocusOut
-
-/**
- * KSharedPixmap
- */
-
-class KSharedPixmapPrivate
-{
-public:
- Atom pixmap;
- Atom target;
- Atom selection;
- TQRect rect;
-};
-
-KSharedPixmap::KSharedPixmap()
- : TQWidget(0L, "shpixmap comm window")
-{
- d = new KSharedPixmapPrivate;
- init();
-}
-
-
-KSharedPixmap::~KSharedPixmap()
-{
- delete d;
-}
-
-
-void KSharedPixmap::init()
-{
- d->pixmap = XInternAtom(qt_xdisplay(), "PIXMAP", false);
- TQCString atom;
- atom.sprintf("target prop for window %lx", static_cast<unsigned long int>(winId()));
- d->target = XInternAtom(qt_xdisplay(), atom.data(), false);
- d->selection = None;
-}
-
-
-bool KSharedPixmap::isAvailable(const TQString & name) const
-{
- TQString str = TQString("KDESHPIXMAP:%1").arg(name);
- Atom sel = XInternAtom(qt_xdisplay(), str.latin1(), true);
- if (sel == None)
- return false;
- return XGetSelectionOwner(qt_xdisplay(), sel) != None;
-}
-
-
-bool KSharedPixmap::loadFromShared(const TQString & name, const TQRect & rect)
-{
- d->rect = rect;
- if (d->selection != None)
- // already active
- return false;
-
- TQPixmap::resize(0, 0); // tqinvalidate
-
- TQString str = TQString("KDESHPIXMAP:%1").arg(name);
- d->selection = XInternAtom(qt_xdisplay(), str.latin1(), true);
- if (d->selection == None)
- return false;
- if (XGetSelectionOwner(qt_xdisplay(), d->selection) == None)
- {
- d->selection = None;
- return false;
- }
-
- XConvertSelection(qt_xdisplay(), d->selection, d->pixmap, d->target,
- winId(), CurrentTime);
- return true;
-}
-
-
-bool KSharedPixmap::x11Event(XEvent *event)
-{
- if (event->type != SelectionNotify)
- return false;
-
- XSelectionEvent *ev = &event->xselection;
- if (ev->selection != d->selection)
- return false;
-
- if ((ev->target != d->pixmap) || (ev->property == None))
- {
- kdWarning(270) << k_funcinfo << "illegal selection notify event.\n";
- d->selection = None;
- emit done(false);
- return true;
- }
-
- // Read pixmap handle from ev->property
-
- int dummy, format;
- unsigned long nitems, ldummy;
- unsigned char *pixmap_id = 0;
- Atom type;
-
- XGetWindowProperty(qt_xdisplay(), winId(), ev->property, 0, 1, false,
- d->pixmap, &type, &format, &nitems, &ldummy,
- &pixmap_id);
-
- if (nitems != 1 || !pixmap_id)
- {
- kdWarning(270) << k_funcinfo << "could not read property, nitems = " << nitems << "\n";
- emit done(false);
- return true;
- }
-
- Window root;
- unsigned int width, height, udummy;
- void *drawable_id = (void *) pixmap_id;
- Drawable pixmap = *(Drawable*) drawable_id;
-
- Status status = XGetGeometry(qt_xdisplay(), pixmap, &root, &dummy, &dummy, &width, &height, &udummy, &udummy);
-
- if (status == BadDrawable)
- return false;
-
- if (d->rect.isEmpty())
- {
- TQPixmap::resize(width, height);
- XCopyArea(qt_xdisplay(), pixmap, ((KPixmap*)this)->handle(), qt_xget_temp_gc(qt_xscreen(), false),
- 0, 0, width, height, 0, 0);
-
- XFree(pixmap_id);
- XDeleteProperty(qt_xdisplay(), winId(), ev->property);
- d->selection = None;
- emit done(true);
- return true;
- }
-
- // Do some more processing here: Generate a tile that can be used as a
- // background tile for the rectangle "rect".
-
- //Check for origin off screen
- TQPoint origin(0, 0);
- if( d->rect.topLeft().x() < 0 || d->rect.topLeft().y() < 0 ) {
- //Save the offset and relocate the rect corners
- TQPoint tl = d->rect.topLeft();
- TQPoint br = d->rect.bottomRight();
- if( tl.x() < 0 ) {
- origin.setX( abs( tl.x() ) );
- tl.setX( 0 );
- }
- if( tl.y() < 0 ) {
- origin.setY( abs( tl.y() ) );
- tl.setY( 0 );
- }
- TQRect adjustedRect( tl, br );
- d->rect = adjustedRect;
- }
-
- unsigned w = d->rect.width(), h = d->rect.height();
- unsigned tw = QMIN(width, w), th = QMIN(height, h);
- unsigned xa = d->rect.x() % width, ya = d->rect.y() % height;
- unsigned t1w = QMIN(width-xa,tw), t1h = QMIN(height-ya,th);
-
- TQPixmap::resize( tw+origin.x(), th+origin.y() );
-
- XCopyArea(qt_xdisplay(), pixmap, (static_cast<KPixmap*>(this))->handle(), qt_xget_temp_gc(qt_xscreen(), false),
- xa, ya, t1w+origin.x(), t1h+origin.y(), origin.x(), origin.y() );
- XCopyArea(qt_xdisplay(), pixmap, (static_cast<KPixmap*>(this))->handle(), qt_xget_temp_gc(qt_xscreen(), false),
- 0, ya, tw-t1w, t1h, t1w, 0);
- XCopyArea(qt_xdisplay(), pixmap, (static_cast<KPixmap*>(this))->handle(), qt_xget_temp_gc(qt_xscreen(), false),
- xa, 0, t1w, th-t1h, 0, t1h);
- XCopyArea(qt_xdisplay(), pixmap, (static_cast<KPixmap*>(this))->handle(), qt_xget_temp_gc(qt_xscreen(), false),
- 0, 0, tw-t1w, th-t1h, t1w, t1h);
-
- XFree(pixmap_id);
-
- d->selection = None;
- XDeleteProperty(qt_xdisplay(), winId(), ev->property);
- emit done(true);
- return true;
-}
-
-
-#include "ksharedpixmap.moc"
-#endif