Changeset 44572 in vbox
- Timestamp:
- Feb 6, 2013 3:08:28 PM (12 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/extensions
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainDialog.cpp
r44529 r44572 247 247 } 248 248 249 void QIMainDialog::keyPressEvent(QKeyEvent *pEvent) 250 { 251 #if defined (Q_WS_MAC) && (QT_VERSION < 0x040402) 252 /* Bug in Qt below 4.4.2. 253 * The key events are send to the current window even if a menu is shown & has the focus. 254 * See http://trolltech.com/developer/task-tracker/index_html?method=entry&id=214681. */ 255 if (::darwinIsMenuOpen()) 256 return; 257 #endif /* defined (Q_WS_MAC) && (QT_VERSION < 0x040402) */ 258 259 /* Make sure that we only proceed if no 260 * popup or other modal widgets are open. */ 261 if (qApp->activePopupWidget() || 262 (qApp->activeModalWidget() && qApp->activeModalWidget() != this)) 263 { 264 /* Call to base-class: */ 265 return QMainWindow::keyPressEvent(pEvent); 266 } 267 268 /* Special handling for some keys: */ 269 switch (pEvent->key()) 270 { 271 /* Special handling for Escape key: */ 272 case Qt::Key_Escape: 273 { 274 if (pEvent->modifiers() == Qt::NoModifier) 275 { 276 reject(); 277 return; 278 } 279 break; 280 } 281 #ifdef Q_WS_MAC 282 /* Special handling for Period key: */ 283 case Qt::Key_Period: 284 { 285 if (pEvent->modifiers() == Qt::ControlModifier) 286 { 287 reject(); 288 return; 289 } 290 break; 291 } 292 #endif /* Q_WS_MAC */ 293 /* Special handling for Return/Enter key: */ 294 case Qt::Key_Return: 295 case Qt::Key_Enter: 296 { 297 if (((pEvent->modifiers() == Qt::NoModifier) && (pEvent->key() == Qt::Key_Return)) || 298 ((pEvent->modifiers() & Qt::KeypadModifier) && (pEvent->key() == Qt::Key_Enter))) 299 { 300 if (QPushButton *pCurrentDefault = searchDefaultButton()) 301 { 302 pCurrentDefault->animateClick(); 303 return; 304 } 305 } 306 break; 307 } 308 /* Default handling for others: */ 309 default: break; 310 } 311 /* Call to base-class: */ 312 return QMainWindow::keyPressEvent(pEvent); 313 } 314 249 315 bool QIMainDialog::eventFilter (QObject *aObject, QEvent *aEvent) 250 316 { … … 286 352 break; 287 353 } 288 case QEvent::KeyPress:289 {290 #if defined (Q_WS_MAC) && (QT_VERSION < 0x040402)291 /* Bug in Qt below 4.4.2. The key events are send to the current292 * window even if a menu is shown & has the focus. See293 * http://trolltech.com/developer/task-tracker/index_html?method=entry&id=214681. */294 if (::darwinIsMenuOpen())295 return true;296 #endif /* defined (Q_WS_MAC) && (QT_VERSION < 0x040402) */297 /* Make sure that we only proceed if no298 * popup or other modal widgets are open. */299 if (qApp->activePopupWidget() ||300 (qApp->activeModalWidget() && qApp->activeModalWidget() != this))301 break;302 303 QKeyEvent *event = static_cast<QKeyEvent*> (aEvent);304 #ifdef Q_WS_MAC305 if (event->modifiers() == Qt::ControlModifier &&306 event->key() == Qt::Key_Period)307 reject();308 else309 #endif310 if (event->modifiers() == Qt::NoModifier ||311 (event->modifiers() & Qt::KeypadModifier && event->key() == Qt::Key_Enter))312 {313 switch (event->key())314 {315 case Qt::Key_Enter:316 case Qt::Key_Return:317 {318 QPushButton *currentDefault = searchDefaultButton();319 if (currentDefault)320 {321 /* We handle this, so return true after322 * that. */323 currentDefault->animateClick();324 return true;325 }326 break;327 }328 case Qt::Key_Escape:329 {330 reject();331 return true;332 }333 default:334 break;335 }336 }337 }338 354 default: 339 355 break; -
trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainDialog.h
r44529 r44572 59 59 virtual void showEvent (QShowEvent *aEvent); 60 60 virtual void resizeEvent (QResizeEvent *aEvent); 61 virtual void keyPressEvent(QKeyEvent *pEvent); 61 62 virtual bool eventFilter (QObject *aObject, QEvent *aEvent); 62 63
Note:
See TracChangeset
for help on using the changeset viewer.