diff options
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqcursor_x11.cpp')
-rw-r--r-- | tqtinterface/qt4/src/kernel/tqcursor_x11.cpp | 1013 |
1 files changed, 0 insertions, 1013 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqcursor_x11.cpp b/tqtinterface/qt4/src/kernel/tqcursor_x11.cpp deleted file mode 100644 index 4b9bd06..0000000 --- a/tqtinterface/qt4/src/kernel/tqcursor_x11.cpp +++ /dev/null @@ -1,1013 +0,0 @@ -/**************************************************************************** -** -** Implementation of TQCursor class for X11 -** -** Created : 940219 -** -** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. -** -** This file is part of the kernel module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at sales@trolltech.com. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#include "tqcursor.h" -#include "tqbitmap.h" -#include "tqimage.h" -#include "tqapplication.h" -#include "tqdatastream.h" -#include "tqnamespace.h" -#include "tqt_x11_p.h" -#include <X11/cursorfont.h> - -#ifndef TQT_NO_XCURSOR -# include <X11/Xcursor/Xcursor.h> -#endif // TQT_NO_XCURSOR - -#ifdef USE_QT4 - -/***************************************************************************** - Global cursors - *****************************************************************************/ - -static TQCursor cursorTable[TQt::LastCursor+1]; - -static const int arrowCursorIdx = 0; - -TQT_STATIC_CONST_IMPL TQCursor & TQt::arrowCursor = cursorTable[0]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::upArrowCursor = cursorTable[1]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::crossCursor = cursorTable[2]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::waitCursor = cursorTable[3]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::ibeamCursor = cursorTable[4]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeVerCursor = cursorTable[5]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeHorCursor = cursorTable[6]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeBDiagCursor = cursorTable[7]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeFDiagCursor = cursorTable[8]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeAllCursor = cursorTable[9]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::blankCursor = cursorTable[10]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::splitVCursor = cursorTable[11]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::splitHCursor = cursorTable[12]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::pointingHandCursor = cursorTable[13]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::forbiddenCursor = cursorTable[14]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::whatsThisCursor = cursorTable[15]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::busyCursor = cursorTable[16]; - -// TQT_STATIC_CONST TQCursor & arrowCursor = Qt::ArrowCursor; -// TQT_STATIC_CONST TQCursor & upArrowCursor = Qt::UpArrowCursor; -// TQT_STATIC_CONST TQCursor & crossCursor = Qt::CrossCursor; -// TQT_STATIC_CONST TQCursor & waitCursor = Qt::WaitCursor; -// TQT_STATIC_CONST TQCursor & ibeamCursor = Qt::IBeamCursor; -// TQT_STATIC_CONST TQCursor & sizeVerCursor = Qt::SizeVerCursor; -// TQT_STATIC_CONST TQCursor & sizeHorCursor = Qt::SizeHorCursor; -// TQT_STATIC_CONST TQCursor & sizeBDiagCursor = Qt::SizeBDiagCursor; -// TQT_STATIC_CONST TQCursor & sizeFDiagCursor = Qt::SizeFDiagCursor; -// TQT_STATIC_CONST TQCursor & sizeAllCursor = Qt::SizeAllCursor; -// TQT_STATIC_CONST TQCursor & blankCursor = Qt::BlankCursor; -// TQT_STATIC_CONST TQCursor & splitVCursor = Qt::SplitVCursor; -// TQT_STATIC_CONST TQCursor & splitHCursor = Qt::SplitHCursor; -// TQT_STATIC_CONST TQCursor & pointingHandCursor = Qt::PointingHandCursor; -// TQT_STATIC_CONST TQCursor & forbiddenCursor = Qt::ForbiddenCursor; -// TQT_STATIC_CONST TQCursor & whatsThisCursor = Qt::WhatsThisCursor; -// TQT_STATIC_CONST TQCursor & busyCursor = Qt::BusyCursor; - -// TQT_STATIC_CONST_IMPL TQCursor & TQt::arrowCursor = Qt::ArrowCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::upArrowCursor = Qt::UpArrowCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::crossCursor = Qt::CrossCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::waitCursor = Qt::WaitCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::ibeamCursor = Qt::IBeamCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeVerCursor = Qt::SizeVerCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeHorCursor = Qt::SizeHorCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeBDiagCursor = Qt::SizeBDiagCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeFDiagCursor = Qt::SizeFDiagCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeAllCursor = Qt::SizeAllCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::blankCursor = Qt::BlankCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::splitVCursor = Qt::SplitVCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::splitHCursor = Qt::SplitHCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::pointingHandCursor = Qt::PointingHandCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::forbiddenCursor = Qt::ForbiddenCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::whatsThisCursor = Qt::WhatsThisCursor; -// TQT_STATIC_CONST_IMPL TQCursor & TQt::busyCursor = Qt::BusyCursor; - -/***************************************************************************** - Internal TQCursorData class - *****************************************************************************/ - -// struct TQCursorData : public TQShared -// { -// TQCursorData( int s = 0 ); -// ~TQCursorData(); -// int ctqshape; -// TQBitmap *bm, *bmm; -// short hx, hy; -// XColor fg,bg; -// Cursor hcurs; -// Pixmap pm, pmm; -// }; -// -// TQCursorData::TQCursorData( int s ) -// { -// ctqshape = s; -// hcurs = 0; -// bm = bmm = 0; -// hx = hy = 0; -// pm = pmm = 0; -// } - -// TQCursorData::~TQCursorData() -// { -// Display *dpy = TQPaintDevice::x11AppDisplay(); -// -// // Add in checking for the display too as on HP-UX -// // we seem to get a core dump as the cursor data is -// // deleted again from main() on exit... -// if ( hcurs && dpy ) -// XFreeCursor( dpy, hcurs ); -// if ( pm && dpy ) -// XFreePixmap( dpy, pm ); -// if ( pmm && dpy ) -// XFreePixmap( dpy, pmm ); -// delete bm; -// delete bmm; -// } - -static bool initialized = FALSE; - -/*! - Internal function that deinitializes the predefined cursors. - This function is called from the TQApplication destructor. - - \sa initialize() -*/ -void TQCursor::cleanup() -{ - if ( !initialized ) - return; - -// int tqshape; -// for( tqshape = 0; tqshape <= LastCursor; tqshape++ ) { -// if ( cursorTable[tqshape].data && cursorTable[tqshape].data->deref() ) -// delete cursorTable[tqshape].data; -// cursorTable[tqshape].data = 0; -// } - - initialized = FALSE; -} - - -/*! - Internal function that initializes the predefined cursors. - This function is called from the TQApplication constructor. - - \sa cleanup() -*/ - -void TQCursor::initialize() -{ -// int tqshape; -// for( tqshape = 0; tqshape <= LastCursor; tqshape++ ) -// cursorTable[tqshape].data = new TQCursorData( tqshape ); -// initialized = TRUE; -// qAddPostRoutine( cleanup ); - - int tqshape; - for( tqshape = 0; tqshape <= TQt::LastCursor; tqshape++ ) { - switch(tqshape) { - case 0: new(&cursorTable[tqshape]) TQCursor(Qt::ArrowCursor); break; - case 1: new(&cursorTable[tqshape]) TQCursor(Qt::UpArrowCursor); break; - case 2: new(&cursorTable[tqshape]) TQCursor(Qt::CrossCursor); break; - case 3: new(&cursorTable[tqshape]) TQCursor(Qt::WaitCursor); break; - case 4: new(&cursorTable[tqshape]) TQCursor(Qt::IBeamCursor); break; - case 5: new(&cursorTable[tqshape]) TQCursor(Qt::SizeVerCursor); break; - case 6: new(&cursorTable[tqshape]) TQCursor(Qt::SizeHorCursor); break; - case 7: new(&cursorTable[tqshape]) TQCursor(Qt::SizeBDiagCursor); break; - case 8: new(&cursorTable[tqshape]) TQCursor(Qt::SizeFDiagCursor); break; - case 9: new(&cursorTable[tqshape]) TQCursor(Qt::SizeAllCursor); break; - case 10: new(&cursorTable[tqshape]) TQCursor(Qt::BlankCursor); break; - case 11: new(&cursorTable[tqshape]) TQCursor(Qt::SplitVCursor); break; - case 12: new(&cursorTable[tqshape]) TQCursor(Qt::SplitHCursor); break; - case 13: new(&cursorTable[tqshape]) TQCursor(Qt::PointingHandCursor); break; - case 14: new(&cursorTable[tqshape]) TQCursor(Qt::ForbiddenCursor); break; - case 15: new(&cursorTable[tqshape]) TQCursor(Qt::WhatsThisCursor); break; - case 16: new(&cursorTable[tqshape]) TQCursor(Qt::BusyCursor); break; - case 17: new(&cursorTable[tqshape]) TQCursor(Qt::OpenHandCursor); break; - case 18: new(&cursorTable[tqshape]) TQCursor(Qt::ClosedHandCursor); break; - case 19: new(&cursorTable[tqshape]) TQCursor(Qt::DragCopyCursor); break; - case 20: new(&cursorTable[tqshape]) TQCursor(Qt::DragMoveCursor); break; - case 21: new(&cursorTable[tqshape]) TQCursor(Qt::DragLinkCursor); break; - } - } - initialized = TRUE; - qAddPostRoutine( cleanup ); -} - -#else // USE_QT4 - -// Define TQT_USE_APPROXIMATE_CURSORS when compiling if you REALLY want to -// use the ugly X11 cursors. - -/***************************************************************************** - Internal TQCursorData class - *****************************************************************************/ - -struct TQCursorData : public TQShared -{ - TQCursorData( int s = 0 ); - ~TQCursorData(); - int ctqshape; - TQBitmap *bm, *bmm; - short hx, hy; - XColor fg,bg; - Cursor hcurs; - Pixmap pm, pmm; -}; - -TQCursorData::TQCursorData( int s ) -{ - ctqshape = s; - hcurs = 0; - bm = bmm = 0; - hx = hy = 0; - pm = pmm = 0; -} - -TQCursorData::~TQCursorData() -{ - Display *dpy = TQPaintDevice::x11AppDisplay(); - - // Add in checking for the display too as on HP-UX - // we seem to get a core dump as the cursor data is - // deleted again from main() on exit... - if ( hcurs && dpy ) - XFreeCursor( dpy, hcurs ); - if ( pm && dpy ) - XFreePixmap( dpy, pm ); - if ( pmm && dpy ) - XFreePixmap( dpy, pmm ); - delete bm; - delete bmm; -} - - -/***************************************************************************** - Global cursors - *****************************************************************************/ - -static TQCursor cursorTable[TQt::LastCursor+1]; - -static const int arrowCursorIdx = 0; - -TQT_STATIC_CONST_IMPL TQCursor & TQt::arrowCursor = cursorTable[0]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::upArrowCursor = cursorTable[1]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::crossCursor = cursorTable[2]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::waitCursor = cursorTable[3]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::ibeamCursor = cursorTable[4]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeVerCursor = cursorTable[5]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeHorCursor = cursorTable[6]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeBDiagCursor = cursorTable[7]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeFDiagCursor = cursorTable[8]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::sizeAllCursor = cursorTable[9]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::blankCursor = cursorTable[10]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::splitVCursor = cursorTable[11]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::splitHCursor = cursorTable[12]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::pointingHandCursor = cursorTable[13]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::forbiddenCursor = cursorTable[14]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::whatsThisCursor = cursorTable[15]; -TQT_STATIC_CONST_IMPL TQCursor & TQt::busyCursor = cursorTable[16]; - - -TQCursor *TQCursor::find_cur( int tqshape ) // find predefined cursor -{ - return (uint)tqshape <= LastCursor ? &cursorTable[tqshape] : 0; -} - - -static bool initialized = FALSE; - -/*! - Internal function that deinitializes the predefined cursors. - This function is called from the TQApplication destructor. - - \sa initialize() -*/ -void TQCursor::cleanup() -{ - if ( !initialized ) - return; - - int tqshape; - for( tqshape = 0; tqshape <= LastCursor; tqshape++ ) { - if ( cursorTable[tqshape].data && cursorTable[tqshape].data->deref() ) - delete cursorTable[tqshape].data; - cursorTable[tqshape].data = 0; - } - initialized = FALSE; -} - - -/*! - Internal function that initializes the predefined cursors. - This function is called from the TQApplication constructor. - - \sa cleanup() -*/ - -void TQCursor::initialize() -{ - int tqshape; - for( tqshape = 0; tqshape <= LastCursor; tqshape++ ) - cursorTable[tqshape].data = new TQCursorData( tqshape ); - initialized = TRUE; - qAddPostRoutine( cleanup ); -} - - -/*! - Constructs a cursor with the default arrow tqshape. -*/ -TQCursor::TQCursor() -{ - if ( !initialized ) { - if ( tqApp->startingUp() ) { - data = 0; - return; - } - initialize(); - } - TQCursor* c = &cursorTable[arrowCursorIdx]; - c->data->ref(); - data = c->data; -} - - - -/*! - Constructs a cursor with the specified \a tqshape. - - See \l tqCursorShape for a list of tqshapes. - - \sa setShape() -*/ - -TQCursor::TQCursor( int tqshape ) -{ - if ( !initialized ) - initialize(); - TQCursor *c = find_cur( tqshape ); - if ( !c ) // not found - c = &cursorTable[arrowCursorIdx]; // then use arrowCursor - c->data->ref(); - data = c->data; -} - -/*! - Constructs a cursor from the window system cursor \a cursor. - - \warning Using this function is not portable. This function is only - available on X11 and Windows. -*/ -TQCursor::TQCursor( HANDLE cursor ) -{ - if ( !initialized ) - initialize(); - - data = new TQCursorData; - TQ_CHECK_PTR( data ); - data->hcurs = cursor; -} - - - -void TQCursor::setBitmap( const TQBitmap &bitmap, const TQBitmap &mask, - int hotX, int hotY ) -{ - if ( !initialized ) - initialize(); - if ( bitmap.depth() != 1 || mask.depth() != 1 || - bitmap.size() != mask.size() ) { -#if defined(TQT_CHECK_NULL) - qWarning( "TQCursor: Cannot create bitmap cursor; invalid bitmap(s)" ); -#endif - TQCursor *c = &cursorTable[arrowCursorIdx]; - c->data->ref(); - data = c->data; - return; - } - data = new TQCursorData; - TQ_CHECK_PTR( data ); - data->bm = new TQBitmap( bitmap ); - data->bmm = new TQBitmap( mask ); - data->hcurs = 0; - data->ctqshape = BitmapCursor; - data->hx = hotX >= 0 ? hotX : bitmap.width()/2; - data->hy = hotY >= 0 ? hotY : bitmap.height()/2; - data->fg.red = 0 << 8; - data->fg.green = 0 << 8; - data->fg.blue = 0 << 8; - data->bg.red = 255 << 8; - data->bg.green = 255 << 8; - data->bg.blue = 255 << 8; - update(); // Xcursor's backward compatibility hack needs the cursor to be created - // right after the bitmaps are created and filled with data -} - - -/*! - Constructs a copy of the cursor \a c. -*/ - -TQCursor::TQCursor( const TQCursor &c ) -{ - if ( !initialized ) - initialize(); - data = c.data; // shallow copy - data->ref(); -} - -/*! - Destroys the cursor. -*/ - -TQCursor::~TQCursor() -{ - if ( data && data->deref() ) - delete data; -} - - -/*! - Assigns \a c to this cursor and returns a reference to this - cursor. -*/ - -TQCursor &TQCursor::operator=( const TQCursor &c ) -{ - if ( !initialized ) - initialize(); - c.data->ref(); // avoid c = c - if ( data->deref() ) - delete data; - data = c.data; - return *this; -} - - -/*! - Returns the cursor tqshape identifier. The return value is one of - the \l tqCursorShape enum values (cast to an int). - - \sa setShape() -*/ - -int TQCursor::tqshape() const -{ - if ( !initialized ) - initialize(); - return data->ctqshape; -} - -/*! - Sets the cursor to the tqshape identified by \a tqshape. - - See \l tqCursorShape for the list of cursor tqshapes. - - \sa tqshape() -*/ - -void TQCursor::setShape( int tqshape ) -{ - if ( !initialized ) - initialize(); - TQCursor *c = find_cur( tqshape ); // find one of the global ones - if ( !c ) // not found - c = &cursorTable[arrowCursorIdx]; // then use arrowCursor - c->data->ref(); - if ( data->deref() ) // make shallow copy - delete data; - data = c->data; -} - - -/*! - Returns the cursor bitmap, or 0 if it is one of the standard - cursors. -*/ -const TQBitmap *TQCursor::bitmap() const -{ - if ( !initialized ) - initialize(); - return data->bm; -} - -/*! - Returns the cursor bitmap mask, or 0 if it is one of the standard - cursors. -*/ - -const TQBitmap *TQCursor::mask() const -{ - if ( !initialized ) - initialize(); - return data->bmm; -} - -/*! - Returns the cursor hot spot, or (0, 0) if it is one of the - standard cursors. -*/ - -TQPoint TQCursor::hotSpot() const -{ - if ( !initialized ) - initialize(); - return TQPoint( data->hx, data->hy ); -} - - -/*! - Returns the window system cursor handle. - - \warning - Portable in principle, but if you use it you are probably about to - do something non-portable. Be careful. -*/ - -TQt::HANDLE TQCursor::handle() const -{ - if ( !initialized ) - initialize(); - if ( !data->hcurs ) - update(); - return data->hcurs; -} - -/*! - \fn TQCursor::TQCursor( HCURSOR handle ) - - Creates a cursor with the specified window system handle \a - handle. - - \warning - Portable in principle, but if you use it you are probably about to - do something non-portable. Be careful. -*/ - -/*! - Returns the position of the cursor (hot spot) in global screen - coordinates. - - You can call TQWidget::mapFromGlobal() to translate it to widget - coordinates. - - \sa setPos(), TQWidget::mapFromGlobal(), TQWidget::mapToGlobal() -*/ -TQPoint TQCursor::pos() -{ - Window root; - Window child; - int root_x, root_y, win_x, win_y; - uint buttons; - Display* dpy = TQPaintDevice::x11AppDisplay(); - for ( int i = 0; i < ScreenCount( dpy ); i++ ) { - if ( XQueryPointer( dpy, TQPaintDevice::x11AppRootWindow( i ), &root, &child, - &root_x, &root_y, &win_x, &win_y, &buttons ) ) - - return TQPoint( root_x, root_y ); - } - return TQPoint(); -} - -/*! \internal -*/ -int TQCursor::x11Screen() -{ - Window root; - Window child; - int root_x, root_y, win_x, win_y; - uint buttons; - Display* dpy = TQPaintDevice::x11AppDisplay(); - for ( int i = 0; i < ScreenCount( dpy ); i++ ) { - if ( XQueryPointer( dpy, TQPaintDevice::x11AppRootWindow( i ), &root, &child, - &root_x, &root_y, &win_x, &win_y, &buttons ) ) - return i; - } - return -1; -} - -/*! - Moves the cursor (hot spot) to the global screen position (\a x, - \a y). - - You can call TQWidget::mapToGlobal() to translate widget - coordinates to global screen coordinates. - - \sa pos(), TQWidget::mapFromGlobal(), TQWidget::mapToGlobal() -*/ - -void TQCursor::setPos( int x, int y ) -{ - TQPoint current, target(x, y); - - // this is copied from pos(), since we need the screen number for the correct - // root window in the XWarpPointer call - Window root; - Window child; - int root_x, root_y, win_x, win_y; - uint buttons; - Display* dpy = TQPaintDevice::x11AppDisplay(); - int screen; - for ( screen = 0; screen < ScreenCount( dpy ); screen++ ) { - if ( XQueryPointer( dpy, TQPaintDevice::x11AppRootWindow( screen ), &root, &child, - &root_x, &root_y, &win_x, &win_y, &buttons ) ) { - current = TQPoint( root_x, root_y ); - break; - } - } - - if ( screen >= ScreenCount( dpy ) ) - return; - - // Need to check, since some X servers generate null mouse move - // events, causing looping in applications which call setPos() on - // every mouse move event. - // - if ( current == target ) - return; - - XWarpPointer( TQPaintDevice::x11AppDisplay(), None, - TQPaintDevice::x11AppRootWindow( screen ), - 0, 0, 0, 0, x, y ); -} - -/*! - \overload void TQCursor::setPos ( const TQPoint & ) -*/ - - -/*! - \internal - - Creates the cursor. -*/ - -void TQCursor::update() const -{ - if ( !initialized ) - initialize(); - register TQCursorData *d = data; // cheat const! - if ( d->hcurs ) // already loaded - return; - - Display *dpy = TQPaintDevice::x11AppDisplay(); - Window rootwin = TQPaintDevice::x11AppRootWindow(); - - if ( d->ctqshape == BitmapCursor ) { - d->hcurs = XCreatePixmapCursor( dpy, d->bm->handle(), d->bmm->handle(), - &d->fg, &d->bg, d->hx, d->hy ); - return; - } - -#ifndef TQT_NO_XCURSOR - static const char *cursorNames[] = { - "left_ptr", - "up_arrow", - "cross", - "wait", - "ibeam", - "size_ver", - "size_hor", - "size_bdiag", - "size_fdiag", - "size_all", - "blank", - "split_v", - "split_h", - "pointing_hand", - "forbidden", - "whats_this", - "left_ptr_watch" - }; - - d->hcurs = XcursorLibraryLoadCursor( dpy, cursorNames[d->ctqshape] ); - if ( d->hcurs ) - return; -#endif // TQT_NO_XCURSOR - - static uchar cur_blank_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - - // Non-standard X11 cursors are created from bitmaps - -#ifndef TQT_USE_APPROXIMATE_CURSORS - static const uchar cur_ver_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f, - 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00 }; - static const uchar mcur_ver_bits[] = { - 0x00, 0x00, 0x80, 0x03, 0xc0, 0x07, 0xe0, 0x0f, 0xf0, 0x1f, 0xf8, 0x3f, - 0xfc, 0x7f, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xfc, 0x7f, 0xf8, 0x3f, - 0xf0, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03 }; - static const uchar cur_hor_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x30, 0x18, - 0x38, 0x38, 0xfc, 0x7f, 0xfc, 0x7f, 0x38, 0x38, 0x30, 0x18, 0x20, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - static const uchar mcur_hor_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x60, 0x0c, 0x70, 0x1c, 0x78, 0x3c, - 0xfc, 0x7f, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0x7f, 0x78, 0x3c, - 0x70, 0x1c, 0x60, 0x0c, 0x40, 0x04, 0x00, 0x00 }; - static const uchar cur_bdiag_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3e, - 0x00, 0x37, 0x88, 0x23, 0xd8, 0x01, 0xf8, 0x00, 0x78, 0x00, 0xf8, 0x00, - 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - static const uchar mcur_bdiag_bits[] = { - 0x00, 0x00, 0xc0, 0x7f, 0x80, 0x7f, 0x00, 0x7f, 0x00, 0x7e, 0x04, 0x7f, - 0x8c, 0x7f, 0xdc, 0x77, 0xfc, 0x63, 0xfc, 0x41, 0xfc, 0x00, 0xfc, 0x01, - 0xfc, 0x03, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00 }; - static const uchar cur_fdiag_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xf8, 0x00, 0x78, 0x00, - 0xf8, 0x00, 0xd8, 0x01, 0x88, 0x23, 0x00, 0x37, 0x00, 0x3e, 0x00, 0x3c, - 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00 }; - static const uchar mcur_fdiag_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0x03, 0xfc, 0x01, 0xfc, 0x00, - 0xfc, 0x41, 0xfc, 0x63, 0xdc, 0x77, 0x8c, 0x7f, 0x04, 0x7f, 0x00, 0x7e, - 0x00, 0x7f, 0x80, 0x7f, 0xc0, 0x7f, 0x00, 0x00 }; - static const uchar *cursor_bits16[] = { - cur_ver_bits, mcur_ver_bits, cur_hor_bits, mcur_hor_bits, - cur_bdiag_bits, mcur_bdiag_bits, cur_fdiag_bits, mcur_fdiag_bits, - 0, 0, cur_blank_bits, cur_blank_bits }; - - static const uchar vsplit_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, - 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - static const uchar vsplitm_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00, - 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, - 0x00, 0xc0, 0x01, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, - 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, - 0x80, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, - 0x00, 0xc0, 0x01, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, - 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - static const uchar hsplit_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, - 0x00, 0x41, 0x82, 0x00, 0x80, 0x41, 0x82, 0x01, 0xc0, 0x7f, 0xfe, 0x03, - 0x80, 0x41, 0x82, 0x01, 0x00, 0x41, 0x82, 0x00, 0x00, 0x40, 0x02, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - static const uchar hsplitm_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, - 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe2, 0x47, 0x00, 0x00, 0xe3, 0xc7, 0x00, - 0x80, 0xe3, 0xc7, 0x01, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07, - 0xc0, 0xff, 0xff, 0x03, 0x80, 0xe3, 0xc7, 0x01, 0x00, 0xe3, 0xc7, 0x00, - 0x00, 0xe2, 0x47, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, - 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - static const uchar whatsthis_bits[] = { - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0xf0, 0x07, 0x00, - 0x09, 0x18, 0x0e, 0x00, 0x11, 0x1c, 0x0e, 0x00, 0x21, 0x1c, 0x0e, 0x00, - 0x41, 0x1c, 0x0e, 0x00, 0x81, 0x1c, 0x0e, 0x00, 0x01, 0x01, 0x07, 0x00, - 0x01, 0x82, 0x03, 0x00, 0xc1, 0xc7, 0x01, 0x00, 0x49, 0xc0, 0x01, 0x00, - 0x95, 0xc0, 0x01, 0x00, 0x93, 0xc0, 0x01, 0x00, 0x21, 0x01, 0x00, 0x00, - 0x20, 0xc1, 0x01, 0x00, 0x40, 0xc2, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; - static const uchar whatsthism_bits[] = { - 0x01, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x07, 0x00, 0x07, 0xf8, 0x0f, 0x00, - 0x0f, 0xfc, 0x1f, 0x00, 0x1f, 0x3e, 0x1f, 0x00, 0x3f, 0x3e, 0x1f, 0x00, - 0x7f, 0x3e, 0x1f, 0x00, 0xff, 0x3e, 0x1f, 0x00, 0xff, 0x9d, 0x0f, 0x00, - 0xff, 0xc3, 0x07, 0x00, 0xff, 0xe7, 0x03, 0x00, 0x7f, 0xe0, 0x03, 0x00, - 0xf7, 0xe0, 0x03, 0x00, 0xf3, 0xe0, 0x03, 0x00, 0xe1, 0xe1, 0x03, 0x00, - 0xe0, 0xe1, 0x03, 0x00, 0xc0, 0xe3, 0x03, 0x00, 0xc0, 0xe3, 0x03, 0x00, - 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; - static const uchar busy_bits[] = { - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x41, 0xe0, 0xff, 0x00, 0x81, 0x20, 0x80, 0x00, 0x01, 0xe1, 0xff, 0x00, - 0x01, 0x42, 0x40, 0x00, 0xc1, 0x47, 0x40, 0x00, 0x49, 0x40, 0x55, 0x00, - 0x95, 0x80, 0x2a, 0x00, 0x93, 0x00, 0x15, 0x00, 0x21, 0x01, 0x0a, 0x00, - 0x20, 0x01, 0x11, 0x00, 0x40, 0x82, 0x20, 0x00, 0x40, 0x42, 0x44, 0x00, - 0x80, 0x41, 0x4a, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0xe0, 0xff, 0x00, - 0x00, 0x20, 0x80, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - static const uchar busym_bits[] = { - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x7f, 0xe0, 0xff, 0x00, 0xff, 0xe0, 0xff, 0x00, 0xff, 0xe1, 0xff, 0x00, - 0xff, 0xc3, 0x7f, 0x00, 0xff, 0xc7, 0x7f, 0x00, 0x7f, 0xc0, 0x7f, 0x00, - 0xf7, 0x80, 0x3f, 0x00, 0xf3, 0x00, 0x1f, 0x00, 0xe1, 0x01, 0x0e, 0x00, - 0xe0, 0x01, 0x1f, 0x00, 0xc0, 0x83, 0x3f, 0x00, 0xc0, 0xc3, 0x7f, 0x00, - 0x80, 0xc1, 0x7f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x00, - 0x00, 0xe0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - static const uchar * const cursor_bits32[] = { - vsplit_bits, vsplitm_bits, hsplit_bits, hsplitm_bits, - 0, 0, 0, 0, whatsthis_bits, whatsthism_bits, busy_bits, busym_bits - }; - - static const uchar forbidden_bits[] = { - 0x00,0x00,0x00,0x80,0x1f,0x00,0xe0,0x7f,0x00,0xf0,0xf0,0x00,0x38,0xc0,0x01, - 0x7c,0x80,0x03,0xec,0x00,0x03,0xce,0x01,0x07,0x86,0x03,0x06,0x06,0x07,0x06, - 0x06,0x0e,0x06,0x06,0x1c,0x06,0x0e,0x38,0x07,0x0c,0x70,0x03,0x1c,0xe0,0x03, - 0x38,0xc0,0x01,0xf0,0xe0,0x00,0xe0,0x7f,0x00,0x80,0x1f,0x00,0x00,0x00,0x00 }; - - static const unsigned char forbiddenm_bits[] = { - 0x80,0x1f,0x00,0xe0,0x7f,0x00,0xf0,0xff,0x00,0xf8,0xff,0x01,0xfc,0xf0,0x03, - 0xfe,0xc0,0x07,0xfe,0x81,0x07,0xff,0x83,0x0f,0xcf,0x07,0x0f,0x8f,0x0f,0x0f, - 0x0f,0x1f,0x0f,0x0f,0x3e,0x0f,0x1f,0xfc,0x0f,0x1e,0xf8,0x07,0x3e,0xf0,0x07, - 0xfc,0xe0,0x03,0xf8,0xff,0x01,0xf0,0xff,0x00,0xe0,0x7f,0x00,0x80,0x1f,0x00}; - - static const uchar * const cursor_bits20[] = { - forbidden_bits, forbiddenm_bits - }; - - if ( d->ctqshape >= SizeVerCursor && d->ctqshape < SizeAllCursor || - d->ctqshape == BlankCursor ) { - XColor bg, fg; - bg.red = 255 << 8; - bg.green = 255 << 8; - bg.blue = 255 << 8; - fg.red = 0; - fg.green = 0; - fg.blue = 0; - int i = (d->ctqshape - SizeVerCursor)*2; - d->pm = XCreateBitmapFromData( dpy, rootwin, (char *)cursor_bits16[i], - 16, 16 ); - d->pmm = XCreateBitmapFromData( dpy, rootwin, (char *)cursor_bits16[i+1], - 16,16); - d->hcurs = XCreatePixmapCursor( dpy, d->pm, d->pmm, &fg, &bg, 8, 8 ); - return; - } - if ( ( d->ctqshape >= SplitVCursor && d->ctqshape <= SplitHCursor ) || - d->ctqshape == WhatsThisCursor || d->ctqshape == BusyCursor ) { - XColor bg, fg; - bg.red = 255 << 8; - bg.green = 255 << 8; - bg.blue = 255 << 8; - fg.red = 0; - fg.green = 0; - fg.blue = 0; - int i = (d->ctqshape - SplitVCursor)*2; - d->pm = XCreateBitmapFromData( dpy, rootwin, (char *)cursor_bits32[i], - 32, 32 ); - d->pmm = XCreateBitmapFromData( dpy, rootwin, (char *)cursor_bits32[i+1], - 32, 32); - int hs = ( d->ctqshape == PointingHandCursor || - d->ctqshape == WhatsThisCursor || - d->ctqshape == BusyCursor ) ? 0 : 16; - d->hcurs = XCreatePixmapCursor( dpy, d->pm, d->pmm, &fg, &bg, hs, hs ); - return; - } - if ( d->ctqshape == ForbiddenCursor ) { - XColor bg, fg; - bg.red = 255 << 8; - bg.green = 255 << 8; - bg.blue = 255 << 8; - fg.red = 0; - fg.green = 0; - fg.blue = 0; - int i = (d->ctqshape - ForbiddenCursor)*2; - d->pm = XCreateBitmapFromData( dpy, rootwin, (char *)cursor_bits20[i], - 20, 20 ); - d->pmm = XCreateBitmapFromData( dpy, rootwin, (char *)cursor_bits20[i+1], - 20, 20); - d->hcurs = XCreatePixmapCursor( dpy, d->pm, d->pmm, &fg, &bg, 10, 10 ); - return; - } -#endif /* ! TQT_USE_APPROXIMATE_CURSORS */ - - uint sh; - switch ( d->ctqshape ) { // map Q cursor to X cursor - case ArrowCursor: - sh = XC_left_ptr; - break; - case UpArrowCursor: - sh = XC_center_ptr; - break; - case CrossCursor: - sh = XC_crosshair; - break; - case WaitCursor: - sh = XC_watch; - break; - case IbeamCursor: - sh = XC_xterm; - break; - case SizeAllCursor: - sh = XC_fleur; - break; - case PointingHandCursor: - sh = XC_hand2; - break; -#ifdef TQT_USE_APPROXIMATE_CURSORS - case SizeBDiagCursor: - sh = XC_top_right_corner; - break; - case SizeFDiagCursor: - sh = XC_bottom_right_corner; - break; - case BlankCursor: - XColor bg, fg; - bg.red = 255 << 8; - bg.green = 255 << 8; - bg.blue = 255 << 8; - fg.red = 0; - fg.green = 0; - fg.blue = 0; - d->pm = XCreateBitmapFromData( dpy, rootwin, - (char *)cur_blank_bits, 16, 16 ); - d->pmm = XCreateBitmapFromData( dpy, rootwin, - (char *)cur_blank_bits, 16,16); - d->hcurs = XCreatePixmapCursor( dpy, d->pm, d->pmm, &fg, - &bg, 8, 8 ); - return; - break; - case SizeVerCursor: - case SplitVCursor: - sh = XC_sb_v_double_arrow; - break; - case SizeHorCursor: - case SplitHCursor: - sh = XC_sb_h_double_arrow; - break; - case WhatsThisCursor: - sh = XC_question_arrow; - break; - case ForbiddenCursor: - sh = XC_circle; - break; - case BusyCursor: - sh = XC_watch; - break; -#endif /* TQT_USE_APPROXIMATE_CURSORS */ - default: -#if defined(TQT_CHECK_RANGE) - qWarning( "TQCursor::update: Invalid cursor tqshape %d", d->ctqshape ); -#endif - return; - } - d->hcurs = XCreateFontCursor( dpy, sh ); -} - -#endif // USE_QT4
\ No newline at end of file |