Changeset 865 for trunk/src/gui/kernel


Ignore:
Timestamp:
May 16, 2011, 4:09:34 PM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.3 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/kernel/qapplication_s60.cpp

    r846 r865  
    12441244        qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle());
    12451245#ifdef Q_WS_S60
    1246         // If widget is fullscreen/minimized, hide status pane and button container otherwise show them.
    1247         QWidget *const window = qwidget->window();
    1248         if (!window->parentWidget()) { // Only top level native windows have control over cba/status pane
    1249             const bool decorationsVisible = !(window->windowState() & (Qt::WindowFullScreen | Qt::WindowMinimized));
    1250             const bool statusPaneVisibility = decorationsVisible;
    1251             const bool isFullscreen = window->windowState() & Qt::WindowFullScreen;
    1252             const bool cbaVisibilityHint = window->windowFlags() & Qt::WindowSoftkeysVisibleHint;
    1253             const bool buttonGroupVisibility = (decorationsVisible || (isFullscreen && cbaVisibilityHint));
    1254             S60->setStatusPaneAndButtonGroupVisibility(statusPaneVisibility, buttonGroupVisibility);
     1246        if (qwidget->isWindow()) {
     1247            QWidget *const window = qwidget->window();
     1248            QWidget *parentWindow = window->parentWidget();
     1249            if (parentWindow) {
     1250                while (parentWindow->parentWidget())
     1251                    parentWindow = parentWindow->parentWidget();
     1252            } else {
     1253                parentWindow = window;
     1254            }
     1255
     1256            const bool parentDecorationsVisible = !(parentWindow->windowState() & (Qt::WindowFullScreen | Qt::WindowMinimized));
     1257            const bool parentIsFullscreen = parentWindow->windowState() & Qt::WindowFullScreen;
     1258            const bool parentCbaVisibilityHint = parentWindow->windowFlags() & Qt::WindowSoftkeysVisibleHint;
     1259            bool buttonGroupVisibility = (parentDecorationsVisible || (parentIsFullscreen && parentCbaVisibilityHint));
     1260
     1261            // For non-toplevel normal and maximized windows, show cba if window has softkey
     1262            // actions even if topmost parent is not showing cba. Do the same for fullscreen
     1263            // windows that request it.
     1264            if (!buttonGroupVisibility
     1265                && window->parentWidget()
     1266                && !(window->windowState() & Qt::WindowMinimized)
     1267                && ((window->windowFlags() & Qt::WindowSoftkeysVisibleHint) || !(window->windowState() & Qt::WindowFullScreen))) {
     1268                for (int i = 0; i < window->actions().size(); ++i) {
     1269                    if (window->actions().at(i)->softKeyRole() != QAction::NoSoftKey) {
     1270                        buttonGroupVisibility = true;
     1271                        break;
     1272                    }
     1273                }
     1274            }
     1275            S60->setStatusPaneAndButtonGroupVisibility(parentDecorationsVisible, buttonGroupVisibility);
    12551276        }
    12561277#endif
  • trunk/src/gui/kernel/qwidget_s60.cpp

    r846 r865  
    11851185
    11861186#ifdef Q_WS_S60
    1187         bool decorationsVisible(false);
    1188         if (!parentWidget()) { // Only top level native windows have control over cba/status pane
    1189             // Hide window decoration when switching to fullscreen / minimized otherwise show decoration.
    1190             // The window decoration visibility has to be changed before doing actual window state
    1191             // change since in that order the availableGeometry will return directly the right size and
    1192             // we will avoid unnecessary redraws
    1193             decorationsVisible = !(newstate & (Qt::WindowFullScreen | Qt::WindowMinimized));
    1194             const bool statusPaneVisibility = decorationsVisible;
    1195             const bool buttonGroupVisibility = (decorationsVisible || (isFullscreen && cbaRequested));
    1196             S60->setStatusPaneAndButtonGroupVisibility(statusPaneVisibility, buttonGroupVisibility);
    1197         }
     1187        // Hide window decoration when switching to fullscreen / minimized otherwise show decoration.
     1188        // The window decoration visibility has to be changed before doing actual window state
     1189        // change since in that order the availableGeometry will return directly the right size and
     1190        // we will avoid unnecessary redraws
     1191        Qt::WindowStates comparisonState = newstate;
     1192        QWidget *parentWindow = parentWidget();
     1193        if (parentWindow) {
     1194            while (parentWindow->parentWidget())
     1195                parentWindow = parentWindow->parentWidget();
     1196            comparisonState = parentWindow->windowState();
     1197        } else {
     1198            parentWindow = this;
     1199        }
     1200
     1201        const bool decorationsVisible = !(comparisonState & (Qt::WindowFullScreen | Qt::WindowMinimized));
     1202        const bool parentIsFullscreen = comparisonState & Qt::WindowFullScreen;
     1203        const bool parentCbaVisibilityHint = parentWindow->windowFlags() & Qt::WindowSoftkeysVisibleHint;
     1204        bool buttonGroupVisibility = (decorationsVisible || (parentIsFullscreen && parentCbaVisibilityHint));
     1205
     1206        // For non-toplevel normal and maximized windows, show cba if window has softkey
     1207        // actions even if topmost parent is not showing cba. Do the same for fullscreen
     1208        // windows that request it.
     1209        if (!buttonGroupVisibility
     1210            && parentWidget()
     1211            && !(newstate & Qt::WindowMinimized)
     1212            && ((windowFlags() & Qt::WindowSoftkeysVisibleHint) || !(newstate & Qt::WindowFullScreen))) {
     1213            for (int i = 0; i < actions().size(); ++i) {
     1214                if (actions().at(i)->softKeyRole() != QAction::NoSoftKey) {
     1215                    buttonGroupVisibility = true;
     1216                    break;
     1217                }
     1218            }
     1219        }
     1220        S60->setStatusPaneAndButtonGroupVisibility(decorationsVisible, buttonGroupVisibility);
     1221
    11981222#endif // Q_WS_S60
    11991223
Note: See TracChangeset for help on using the changeset viewer.