Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-53275

Popups should restore focus to the contentItem of ApplicationWindow upon closing

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P2: Important P2: Important
    • 5.7.0 RC
    • 5.7
    • Quick: Controls 2
    • None
    • eb6e122c68333382309843ad96e7d04d2c5a3595

      Run the application below:

      import QtQuick 2.6
      import QtQuick.Layouts 1.1
      import QtQuick.Window 2.2
      import QtQuick.Controls 2.0
      
      ApplicationWindow {
          width: 400
          height: 200
          visible: true
      
          onActiveFocusItemChanged: print("activeFocusItem", activeFocusItem)
      
          header: ToolBar {
              RowLayout {
                  ToolButton {
                      text: qsTr("File")
                      onClicked: fileMenu.open()
      
                      Menu {
                          id: fileMenu
                          y: parent.height
      
                          MenuItem {
                              text: qsTr("New")
                          }
                          MenuItem {
                              text: qsTr("open")
                          }
                          MenuItem {
                              text: qsTr("Close")
                          }
                      }
                  }
              }
          }
      
          FocusScope {
              id: focusScope
              focus: true
              anchors.fill: parent
      
              property bool toggled: false
              onToggledChanged: print("toggled", toggled)
      
              Keys.onPressed: {
                  if (event.modifiers === Qt.AltModifier) {
                      focusScope.toggled = true;
                  }
              }
              Keys.onReleased: {
                  if ((event.modifiers === Qt.AltModifier || event.key === Qt.Key_Alt) && !event.isAutoRepeat) {
                      focusScope.toggled = false;
                  }
              }
      
              RowLayout {
                  anchors.centerIn: parent
      
                  Button {
                      id: penButton
                      text: qsTr("Pen")
                      highlighted: !focusScope.toggled
                  }
                  Button {
                      id: eyedropperButton
                      text: qsTr("Eyedropper")
                      highlighted: focusScope.toggled
                  }
              }
          }
      }
      

      The idea is that holding the Alt key down will toggle between two "modes". The mode is indicated by a highlighted button.

      Try switching between the buttons. Now open the menu by clicking the "File" button. The menu will receive focus and the focus scope will lose it. If you then close the menu and try to switch between the buttons again, it won't work because the focus scope never regained focus (the root item now has it).

      In this thread, Andrew said that restoring focus to the contentItem of ApplicationWindow would make this work, so we should try to do that.

        For Gerrit Dashboard: QTBUG-53275
        # Subject Branch Project Status CR V

            mitch_curtis Mitch Curtis
            mitch_curtis Mitch Curtis
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes