void ChoosePositionPushButton::mousePressEvent(QMouseEvent *event) { QPushButton::mousePressEvent(event); mSearching = true; update(); #ifdef Q_WS_X11 if(mMainWindow) mMainWindow->showMinimized(); #endif #ifdef Q_WS_WIN foreach(QWidget *widget, qApp->topLevelWidgets()) widget->setWindowOpacity(0.0f); #endif QCursor newCursor(*mCrossIcon); emit chooseStarted(); #ifdef Q_WS_WIN mPreviousCursor = SetCursor(newCursor.handle()); #endif #ifdef Q_WS_X11 nativeEventFilteringApp->installNativeEventFilter(this); if(XGrabPointer(QX11Info::display(), DefaultRootWindow(QX11Info::display()), True, ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, newCursor.handle(), CurrentTime) != GrabSuccess) { QMessageBox::warning(this, tr("Choose a window"), tr("Unable to grab the pointer.")); event->ignore(); } #endif }
void ChoosePositionPushButton::mousePressEvent(QMouseEvent *event) { QPushButton::mousePressEvent(event); mSearching = true; update(); #ifdef Q_OS_UNIX mShownWindows.clear(); for(QWidget *widget: qApp->topLevelWidgets()) { if(mMainWindow == widget) continue; if(widget->isVisible() && !widget->windowTitle().isEmpty()) { mShownWindows.append(widget); XUnmapWindow(QX11Info::display(), widget->winId()); } } if(mMainWindow) mMainWindow->hide(); #endif #ifdef Q_OS_WIN for(QWidget *widget: qApp->topLevelWidgets()) widget->setWindowOpacity(0.0f); #endif QCursor newCursor(*mCrossIcon); emit chooseStarted(); #ifdef Q_OS_WIN mPreviousCursor = SetCursor(LoadCursor(0, IDC_CROSS)); #endif #ifdef Q_OS_UNIX QCoreApplication::instance()->installNativeEventFilter(this); if(XGrabPointer(QX11Info::display(), DefaultRootWindow(QX11Info::display()), True, ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, mCrossCursor, CurrentTime) != GrabSuccess) { QMessageBox::warning(this, tr("Choose a window"), tr("Unable to grab the pointer.")); event->ignore(); } #endif }