~michael-sheldon/webbrowser-app/fix-1531179

« back to all changes in this revision

Viewing changes to src/app/webbrowser/Browser.qml

Do not allow interacting with tabs and the chrome while the settings page is shown. Fixes: #1524353
Approved by: PS Jenkins bot, Ugo Riboni

Show diffs side-by-side

added added

removed removed

Lines of Context:
172
172
 
173
173
    FocusScope {
174
174
        anchors.fill: parent
175
 
        visible: !settingsContainer.visible && !historyViewLoader.active && !bookmarksViewLoader.active && !downloadsContainer.visible
 
175
        visible: !settingsViewLoader.active && !historyViewLoader.active && !bookmarksViewLoader.active && !downloadsContainer.visible
176
176
 
177
177
        FocusScope {
178
178
            id: tabContainer
223
223
 
224
224
            anchors {
225
225
                fill: tabContainer
226
 
                topMargin: (chrome.state == "shown" && chrome.visible) ? chrome.height : 0
 
226
                topMargin: (chrome.state == "shown") ? chrome.height : 0
227
227
            }
228
228
 
229
229
            // Avoid loading the new tab view if the webview is about to load
571
571
                objectName: "settings"
572
572
                text: i18n.tr("Settings")
573
573
                iconName: "settings"
574
 
                onTriggered: {
575
 
                    settingsComponent.createObject(settingsContainer)
576
 
                    settingsContainer.focus = true
577
 
                    chrome.findInPageMode = false
578
 
                }
 
574
                onTriggered: settingsViewLoader.active = true
579
575
            }
580
576
        ]
581
577
 
896
892
        }
897
893
    }
898
894
 
899
 
    FocusScope {
900
 
        id: settingsContainer
 
895
    Loader {
 
896
        id: settingsViewLoader
901
897
 
902
 
        visible: children.length > 0
903
898
        anchors.fill: parent
904
 
 
905
 
        Component {
906
 
            id: settingsComponent
907
 
 
908
 
            SettingsPage {
909
 
                anchors.fill: parent
910
 
                focus: true
911
 
                settingsObject: settings
912
 
                onDone: destroy()
913
 
                Keys.onEscapePressed: {
914
 
                    destroy()
915
 
                    internal.resetFocus()
916
 
                }
917
 
            }
 
899
        active: false
 
900
 
 
901
        onStatusChanged: {
 
902
            if (status == Loader.Ready) {
 
903
                settingsViewLoader.item.forceActiveFocus()
 
904
            } else {
 
905
                internal.resetFocus()
 
906
            }
 
907
        }
 
908
 
 
909
        Keys.onEscapePressed: settingsViewLoader.active = false
 
910
 
 
911
        onActiveChanged: {
 
912
            if (active) {
 
913
                chrome.findInPageMode = false
 
914
                forceActiveFocus()
 
915
            }
 
916
        }
 
917
 
 
918
        sourceComponent: SettingsPage {
 
919
            anchors.fill: parent
 
920
            focus: true
 
921
            settingsObject: settings
 
922
            onDone: settingsViewLoader.active = false
918
923
        }
919
924
    }
920
925
 
1813
1818
        KeyboardShortcut {
1814
1819
            modifiers: Qt.ControlModifier
1815
1820
            key: Qt.Key_Tab
1816
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1821
            enabled: tabContainer.visible || recentView.visible
1817
1822
            onTriggered: internal.switchToNextTab()
1818
1823
        }
1819
1824
        KeyboardShortcut {
1820
1825
            modifiers: Qt.ControlModifier
1821
1826
            key: Qt.Key_PageDown
1822
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1827
            enabled: tabContainer.visible || recentView.visible
1823
1828
            onTriggered: internal.switchToNextTab()
1824
1829
        }
1825
1830
 
1827
1832
        KeyboardShortcut {
1828
1833
            modifiers: Qt.ControlModifier
1829
1834
            key: Qt.Key_Backtab
1830
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1835
            enabled: tabContainer.visible || recentView.visible
1831
1836
            onTriggered: internal.switchToPreviousTab()
1832
1837
        }
1833
1838
        KeyboardShortcut {
1834
1839
            modifiers: Qt.ControlModifier
1835
1840
            key: Qt.Key_PageUp
1836
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1841
            enabled: tabContainer.visible || recentView.visible
1837
1842
            onTriggered: internal.switchToPreviousTab()
1838
1843
        }
1839
1844
 
1841
1846
        KeyboardShortcut {
1842
1847
            modifiers: Qt.ControlModifier | Qt.ShiftModifier
1843
1848
            key: Qt.Key_W
1844
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1849
            enabled: tabContainer.visible || recentView.visible
1845
1850
            onTriggered: internal.undoCloseTab()
1846
1851
        }
1847
1852
 
1848
1853
        KeyboardShortcut {
1849
1854
            modifiers: Qt.ControlModifier | Qt.ShiftModifier
1850
1855
            key: Qt.Key_T
1851
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1856
            enabled: tabContainer.visible || recentView.visible
1852
1857
            onTriggered: internal.undoCloseTab()
1853
1858
        }
1854
1859
 
1856
1861
        KeyboardShortcut {
1857
1862
            modifiers: Qt.ControlModifier
1858
1863
            key: Qt.Key_W
1859
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1864
            enabled: tabContainer.visible || recentView.visible
1860
1865
            onTriggered: internal.closeCurrentTab()
1861
1866
        }
1862
1867
        KeyboardShortcut {
1863
1868
            modifiers: Qt.ControlModifier
1864
1869
            key: Qt.Key_F4
1865
 
            enabled: (chrome.visible || recentView.visible) && !downloadsContainer.visible
 
1870
            enabled: tabContainer.visible || recentView.visible
1866
1871
            onTriggered: internal.closeCurrentTab()
1867
1872
        }
1868
1873
 
1870
1875
        KeyboardShortcut {
1871
1876
            modifiers: Qt.ControlModifier
1872
1877
            key: Qt.Key_T
1873
 
            enabled: (chrome.visible || recentView.visible || bookmarksViewLoader.active || historyViewLoader.active) && !downloadsContainer.visible
 
1878
            enabled: tabContainer.visible || recentView.visible ||
 
1879
                     bookmarksViewLoader.active || historyViewLoader.active
1874
1880
            onTriggered: {
1875
1881
                openUrlInNewTab("", true)
1876
1882
                if (recentView.visible) recentView.reset()
1877
 
 
1878
1883
                bookmarksViewLoader.active = false
1879
1884
                historyViewLoader.active = false
1880
1885
            }
1884
1889
        KeyboardShortcut {
1885
1890
            modifiers: Qt.ControlModifier
1886
1891
            key: Qt.Key_L
1887
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1892
            enabled: tabContainer.visible
1888
1893
            onTriggered: internal.focusAddressBar(true)
1889
1894
        }
1890
1895
        KeyboardShortcut {
1891
1896
            modifiers: Qt.AltModifier
1892
1897
            key: Qt.Key_D
1893
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1898
            enabled: tabContainer.visible
1894
1899
            onTriggered: internal.focusAddressBar(true)
1895
1900
        }
1896
1901
        KeyboardShortcut {
1897
1902
            key: Qt.Key_F6
1898
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1903
            enabled: tabContainer.visible
1899
1904
            onTriggered: internal.focusAddressBar(true)
1900
1905
        }
1901
1906
 
1903
1908
        KeyboardShortcut {
1904
1909
            modifiers: Qt.ControlModifier
1905
1910
            key: Qt.Key_D
1906
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1911
            enabled: tabContainer.visible
1907
1912
            onTriggered: {
1908
1913
                if (currentWebview) {
1909
1914
                    if (BookmarksModel.contains(currentWebview.url)) {
1919
1924
        KeyboardShortcut {
1920
1925
            modifiers: Qt.ControlModifier
1921
1926
            key: Qt.Key_H
1922
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1927
            enabled: tabContainer.visible
1923
1928
            onTriggered: historyViewLoader.active = true
1924
1929
        }
1925
1930
 
1927
1932
        KeyboardShortcut {
1928
1933
            modifiers: Qt.ControlModifier | Qt.ShiftModifier
1929
1934
            key: Qt.Key_O
1930
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1935
            enabled: tabContainer.visible
1931
1936
            onTriggered: bookmarksViewLoader.active = true
1932
1937
        }
1933
1938
 
1935
1940
        KeyboardShortcut {
1936
1941
            modifiers: Qt.AltModifier
1937
1942
            key: Qt.Key_Left
1938
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1943
            enabled: tabContainer.visible
1939
1944
            onTriggered: internal.historyGoBack()
1940
1945
        }
1941
1946
        KeyboardShortcut {
1942
1947
            key: Qt.Key_Backspace
1943
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1948
            enabled: tabContainer.visible
1944
1949
            onTriggered: internal.historyGoBack()
1945
1950
        }
1946
1951
 
1948
1953
        KeyboardShortcut {
1949
1954
            modifiers: Qt.AltModifier
1950
1955
            key: Qt.Key_Right
1951
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1956
            enabled: tabContainer.visible
1952
1957
            onTriggered: internal.historyGoForward()
1953
1958
        }
1954
1959
        KeyboardShortcut {
1955
1960
            modifiers: Qt.ShiftModifier
1956
1961
            key: Qt.Key_Backspace
1957
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1962
            enabled: tabContainer.visible
1958
1963
            onTriggered: internal.historyGoForward()
1959
1964
        }
1960
1965
 
1961
1966
        // F5 or Ctrl+R: Reload current Tab
1962
1967
        KeyboardShortcut {
1963
1968
            key: Qt.Key_F5
1964
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1969
            enabled: tabContainer.visible
1965
1970
            onTriggered: if (currentWebview) currentWebview.reload()
1966
1971
        }
1967
1972
        KeyboardShortcut {
1968
1973
            modifiers: Qt.ControlModifier
1969
1974
            key: Qt.Key_R
1970
 
            enabled: chrome.visible && !downloadsContainer.visible
 
1975
            enabled: tabContainer.visible
1971
1976
            onTriggered: if (currentWebview) currentWebview.reload()
1972
1977
        }
1973
1978
 
1975
1980
        KeyboardShortcut {
1976
1981
            modifiers: Qt.ControlModifier
1977
1982
            key: Qt.Key_F
1978
 
            enabled: !newTabViewLoader.active && !bookmarksViewLoader.active && !downloadsContainer.visible
 
1983
            enabled: tabContainer.visible && !newTabViewLoader.active
1979
1984
            onTriggered: chrome.findInPageMode = true
1980
1985
        }
1981
1986