From 2eb373a68367a6511e12d60034e920345431bcc8 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Thu, 15 Oct 2009 14:47:35 +0200 Subject: Some sub menus are disabled in Cocoa The commit faec535829a0e454a6784b0c5c37cb63e7da8f73 introduced this bug. Since we can add a submenu to the same supermenu, we should consider it before disabling the submenu who already have a supermenu. Reviewed-by: MortenS --- src/gui/widgets/qmenu_mac.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/widgets/qmenu_mac.mm b/src/gui/widgets/qmenu_mac.mm index 354161d..c3b954f 100644 --- a/src/gui/widgets/qmenu_mac.mm +++ b/src/gui/widgets/qmenu_mac.mm @@ -1413,7 +1413,7 @@ QMenuPrivate::QMacMenuPrivate::syncAction(QMacMenuAction *action) SetMenuItemProperty(data.submenuHandle, 0, kMenuCreatorQt, kMenuPropertyCausedQWidget, sizeof(caused), &caused); #else NSMenu *subMenu = static_cast(action->action->menu()->macMenu()); - if ([subMenu supermenu] != nil) { + if ([subMenu supermenu] && [subMenu supermenu] != [item menu]) { // The menu is already a sub-menu of another one. Cocoa will throw an exception, // in such cases. For the time being, a new QMenu with same set of actions is the // only workaround. @@ -1686,7 +1686,7 @@ QMenuBarPrivate::QMacMenuBarPrivate::syncAction(QMacMenuAction *action) GetMenuItemProperty(action->menu, 0, kMenuCreatorQt, kMenuPropertyQWidget, sizeof(caused), 0, &caused); SetMenuItemProperty(submenu, 0, kMenuCreatorQt, kMenuPropertyCausedQWidget, sizeof(caused), &caused); #else - if ([submenu supermenu] != nil) + if ([submenu supermenu] && [submenu supermenu] != [item menu]) return; else [item setSubmenu:submenu]; -- cgit v0.12 From fbe6a9aaae0c6de017af08150678bf2001284178 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Fri, 16 Oct 2009 14:48:59 +1000 Subject: Recognize transformed screens when looking for a QGLScreen If the QWS_DISPLAY is specified as "Transformed:powervr:...", then we will encounter QScreen::TransformedClass rather than QScreen::ProxyClass when searching for the QGLScreen. This change makes the code search for both. Task-number: QT-2261 Reviewed-by: Sarah Smith Back port of 8e4fa6e87f74cfb3457e8270a361cf30ca7d3593 --- src/opengl/qegl_qws.cpp | 3 ++- src/opengl/qgl_qws.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/opengl/qegl_qws.cpp b/src/opengl/qegl_qws.cpp index 8d1c8b0..f0433bb 100644 --- a/src/opengl/qegl_qws.cpp +++ b/src/opengl/qegl_qws.cpp @@ -65,7 +65,8 @@ static QGLScreen *glScreenForDevice(QPaintDevice *device) screenNumber = 0; screen = screen->subScreens()[screenNumber]; } - while (screen->classId() == QScreen::ProxyClass) { + while (screen->classId() == QScreen::ProxyClass || + screen->classId() == QScreen::TransformedClass) { screen = static_cast(screen)->screen(); } if (screen->classId() == QScreen::GLClass) diff --git a/src/opengl/qgl_qws.cpp b/src/opengl/qgl_qws.cpp index 4058b66..dd578b2 100644 --- a/src/opengl/qgl_qws.cpp +++ b/src/opengl/qgl_qws.cpp @@ -72,7 +72,8 @@ static QGLScreen *glScreenForDevice(QPaintDevice *device) screenNumber = 0; screen = screen->subScreens()[screenNumber]; } - while (screen->classId() == QScreen::ProxyClass) { + while (screen->classId() == QScreen::ProxyClass || + screen->classId() == QScreen::TransformedClass) { screen = static_cast(screen)->screen(); } if (screen->classId() == QScreen::GLClass) -- cgit v0.12 From e7a92a1b9ff31cf036982bee1221d7e7cb3aea6a Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 15 Oct 2009 16:35:45 +0200 Subject: QNetworkProxyFactory: Never return empty list on windows Task-number: Salesforce 00062670 Reviewed-by: Thiago --- src/network/kernel/qnetworkproxy_win.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/network/kernel/qnetworkproxy_win.cpp b/src/network/kernel/qnetworkproxy_win.cpp index f0fff2f..2100215 100644 --- a/src/network/kernel/qnetworkproxy_win.cpp +++ b/src/network/kernel/qnetworkproxy_win.cpp @@ -398,7 +398,12 @@ QList QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro if (isBypassed(query.peerHostName(), sp->proxyBypass)) return sp->defaultResult; - return parseServerList(query, sp->proxyServerList); + QList result = parseServerList(query, sp->proxyServerList); + // In some cases, this was empty. See SF task 00062670 + if (result.isEmpty()) + return sp->defaultResult; + + return result; } #else // !UNICODE -- cgit v0.12