|
|
|
@ -1487,28 +1487,31 @@ void QWidget::grabMouse()
|
|
|
|
|
void QWidget::grabMouse( const QCursor &cursor )
|
|
|
|
|
{
|
|
|
|
|
if ( !qt_nograb() ) {
|
|
|
|
|
if ( mouseGrb )
|
|
|
|
|
mouseGrb->releaseMouse();
|
|
|
|
|
if ( mouseGrb != this ) {
|
|
|
|
|
if ( mouseGrb ) {
|
|
|
|
|
mouseGrb->releaseMouse();
|
|
|
|
|
}
|
|
|
|
|
#if defined(QT_CHECK_STATE)
|
|
|
|
|
int status =
|
|
|
|
|
int status =
|
|
|
|
|
#endif
|
|
|
|
|
XGrabPointer( x11Display(), winId(), False,
|
|
|
|
|
(uint)(ButtonPressMask | ButtonReleaseMask |
|
|
|
|
|
PointerMotionMask | EnterWindowMask | LeaveWindowMask),
|
|
|
|
|
GrabModeAsync, GrabModeAsync,
|
|
|
|
|
None, cursor.handle(), qt_x_time );
|
|
|
|
|
XGrabPointer( x11Display(), winId(), False,
|
|
|
|
|
(uint)(ButtonPressMask | ButtonReleaseMask |
|
|
|
|
|
PointerMotionMask | EnterWindowMask | LeaveWindowMask),
|
|
|
|
|
GrabModeAsync, GrabModeAsync,
|
|
|
|
|
None, cursor.handle(), qt_x_time );
|
|
|
|
|
#if defined(QT_CHECK_STATE)
|
|
|
|
|
if ( status ) {
|
|
|
|
|
const char *s =
|
|
|
|
|
status == GrabNotViewable ? "\"GrabNotViewable\"" :
|
|
|
|
|
status == AlreadyGrabbed ? "\"AlreadyGrabbed\"" :
|
|
|
|
|
status == GrabFrozen ? "\"GrabFrozen\"" :
|
|
|
|
|
status == GrabInvalidTime ? "\"GrabInvalidTime\"" :
|
|
|
|
|
"<?>";
|
|
|
|
|
qWarning( "Grabbing the mouse failed with %s", s );
|
|
|
|
|
}
|
|
|
|
|
if ( status ) {
|
|
|
|
|
const char *s =
|
|
|
|
|
status == GrabNotViewable ? "\"GrabNotViewable\"" :
|
|
|
|
|
status == AlreadyGrabbed ? "\"AlreadyGrabbed\"" :
|
|
|
|
|
status == GrabFrozen ? "\"GrabFrozen\"" :
|
|
|
|
|
status == GrabInvalidTime ? "\"GrabInvalidTime\"" :
|
|
|
|
|
"<?>";
|
|
|
|
|
qWarning( "Grabbing the mouse failed with %s", s );
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
mouseGrb = this;
|
|
|
|
|
mouseGrb = this;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1548,11 +1551,13 @@ void QWidget::releaseMouse()
|
|
|
|
|
void QWidget::grabKeyboard()
|
|
|
|
|
{
|
|
|
|
|
if ( !qt_nograb() ) {
|
|
|
|
|
if ( keyboardGrb )
|
|
|
|
|
keyboardGrb->releaseKeyboard();
|
|
|
|
|
XGrabKeyboard( x11Display(), winid, False, GrabModeAsync, GrabModeAsync,
|
|
|
|
|
qt_x_time );
|
|
|
|
|
keyboardGrb = this;
|
|
|
|
|
if ( keyboardGrb != this ) {
|
|
|
|
|
if ( keyboardGrb ) {
|
|
|
|
|
keyboardGrb->releaseKeyboard();
|
|
|
|
|
}
|
|
|
|
|
XGrabKeyboard( x11Display(), winid, False, GrabModeAsync, GrabModeAsync, qt_x_time );
|
|
|
|
|
keyboardGrb = this;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|