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:
2 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
Note: See TracChangeset for help on using the changeset viewer.