diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-11-11 16:28:31 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-11-11 16:28:31 (GMT) |
commit | 7b3880475d02bd3db630387bccccc7e1ef9d4e9a (patch) | |
tree | ed35f6c268382b7f0fe16321147c914f3b1b5092 /src | |
parent | a868f4c9761597abc764c3578b0fffad1fb8177a (diff) | |
parent | 4b618e48c909fcc5665e9d60645023c48b2ffb43 (diff) | |
download | Qt-7b3880475d02bd3db630387bccccc7e1ef9d4e9a.zip Qt-7b3880475d02bd3db630387bccccc7e1ef9d4e9a.tar.gz Qt-7b3880475d02bd3db630387bccccc7e1ef9d4e9a.tar.bz2 |
Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
ShortcutOverride has no effect on some shortcuts on Mac OS X (Cocoa).
Fix restore of maximized window geometry on Windows
Remove qDebug.
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/concurrent/qtconcurrentrunbase.h | 1 | ||||
-rw-r--r-- | src/gui/kernel/qt_cocoa_helpers_mac.mm | 22 | ||||
-rw-r--r-- | src/gui/kernel/qwidget.cpp | 4 | ||||
-rw-r--r-- | src/gui/widgets/qcocoamenu_mac.mm | 22 |
4 files changed, 40 insertions, 9 deletions
diff --git a/src/corelib/concurrent/qtconcurrentrunbase.h b/src/corelib/concurrent/qtconcurrentrunbase.h index a7a5cc4..888d395 100644 --- a/src/corelib/concurrent/qtconcurrentrunbase.h +++ b/src/corelib/concurrent/qtconcurrentrunbase.h @@ -106,7 +106,6 @@ public: this->runFunctor(); #ifndef QT_NO_EXCEPTIONS } catch (QtConcurrent::Exception &e) { - qDebug() << "cought exception"; QFutureInterface<T>::reportException(e); } catch (...) { QFutureInterface<T>::reportException(QtConcurrent::UnhandledException()); diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 5a522f9..48d21e9 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -79,6 +79,7 @@ #include <qdesktopwidget.h> #include <qevent.h> #include <qpixmapcache.h> +#include <qvarlengtharray.h> #include <private/qevent_p.h> #include <private/qt_cocoa_helpers_mac_p.h> #include <private/qt_mac_p.h> @@ -616,6 +617,27 @@ Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags) return qtMods; } +NSString *qt_mac_removePrivateUnicode(NSString* string) +{ + int len = [string length]; + if (len) { + QVarLengthArray <unichar, 10> characters(len); + bool changed = false; + for (int i = 0; i<len; i++) { + characters[i] = [string characterAtIndex:i]; + // check if they belong to key codes in private unicode range + // currently we need to handle only the NSDeleteFunctionKey + if (characters[i] == NSDeleteFunctionKey) { + characters[i] = NSDeleteCharacter; + changed = true; + } + } + if (changed) + return [NSString stringWithCharacters:characters.data() length:len]; + } + return string; +} + Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations) { Qt::KeyboardModifiers qtMods =Qt::NoModifier; diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 25450ce..cd1c9f0 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -7053,7 +7053,11 @@ bool QWidget::restoreGeometry(const QByteArray &geometry) if (maximized || fullScreen) { // set geomerty before setting the window state to make // sure the window is maximized to the right screen. + // Skip on windows: the window is restored into a broken + // half-maximized state. +#ifndef Q_WS_WIN setGeometry(restoredNormalGeometry); +#endif Qt::WindowStates ws = windowState(); if (maximized) ws |= Qt::WindowMaximized; diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm index 15fae23..b670186 100644 --- a/src/gui/widgets/qcocoamenu_mac.mm +++ b/src/gui/widgets/qcocoamenu_mac.mm @@ -156,10 +156,14 @@ QT_USE_NAMESPACE // In every other case we return NO, which means that Cocoa can do as it pleases // (i.e., fire the menu action). NSMenuItem *whichItem; + // Change the private unicode keys to the ones used in setting the "Key Equivalents" + extern NSString *qt_mac_removePrivateUnicode(NSString* string); + NSString *characters = qt_mac_removePrivateUnicode([event characters]); if ([self hasShortcut:menu - forKey:[event characters] - forModifiers:([event modifierFlags] & NSDeviceIndependentModifierFlagsMask) - whichItem:&whichItem]) { + forKey:characters + // Interested only in Shift, Cmd, Ctrl & Alt Keys, so ignoring masks like, Caps lock, Num Lock ... + forModifiers:([event modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask | NSAlternateKeyMask)) + whichItem:&whichItem]) { QWidget *widget = 0; QAction *qaction = 0; if (whichItem && [whichItem tag]) { @@ -170,6 +174,9 @@ QT_USE_NAMESPACE qApp->activePopupWidget()->focusWidget() : qApp->activePopupWidget()); else if (QApplicationPrivate::focus_widget) widget = QApplicationPrivate::focus_widget; + // If we could not find any receivers, pass it to the active window + if (!widget) + widget = qApp->activeWindow(); if (qaction && widget) { int key = qaction->shortcut(); QKeyEvent accel_ev(QEvent::ShortcutOverride, (key & (~Qt::KeyboardModifierMask)), @@ -177,11 +184,10 @@ QT_USE_NAMESPACE accel_ev.ignore(); qt_sendSpontaneousEvent(widget, &accel_ev); if (accel_ev.isAccepted()) { - if (qt_dispatchKeyEvent(event, widget)) { - *target = nil; - *action = nil; - return YES; - } + qt_dispatchKeyEvent(event, widget); + *target = nil; + *action = nil; + return YES; } } } |