From 89b62938c9aeb723b2519053928f979c7e781089 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Wed, 27 Nov 2019 19:10:48 +0100 Subject: Example 'quicknanobrowser' improvements * Fix TabView containing no tabs by using one method on close with tab's button, StandardKey and windowCloseRequested. * Prevent warning on invalid tab's icon * Set default title for new empty tab Change-Id: I1a8522b10fff8107e4ee213cb6760c637a4f6e9d Reviewed-by: Michal Klocek --- .../webengine/quicknanobrowser/BrowserWindow.qml | 31 +++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/examples/webengine/quicknanobrowser/BrowserWindow.qml b/examples/webengine/quicknanobrowser/BrowserWindow.qml index 2d3168382..c595c3bc5 100644 --- a/examples/webengine/quicknanobrowser/BrowserWindow.qml +++ b/examples/webengine/quicknanobrowser/BrowserWindow.qml @@ -132,6 +132,10 @@ ApplicationWindow { currentWebView.triggerWebAction(WebEngineView.RequestClose); } } + Action { + shortcut: StandardKey.Quit + onTriggered: browserWindow.close() + } Action { shortcut: "Escape" onTriggered: { @@ -268,7 +272,7 @@ ApplicationWindow { id: faviconImage width: 16; height: 16 sourceSize: Qt.size(width, height) - source: currentWebView && currentWebView.icon + source: currentWebView && currentWebView.icon ? currentWebView.icon : '' } style: TextFieldStyle { padding { @@ -395,11 +399,25 @@ ApplicationWindow { var tab = addTab("", tabComponent); // We must do this first to make sure that tab.active gets set so that tab.item gets instantiated immediately. tab.active = true; - tab.title = Qt.binding(function() { return tab.item.title }); + tab.title = Qt.binding(function() { return tab.item.title ? tab.item.title : 'New Tab' }); tab.item.profile = profile; return tab; } + function indexOfView(view) { + for (let i = 0; i < tabs.count; ++i) + if (tabs.getTab(i).item == view) + return i + return -1 + } + + function removeView(index) { + if (tabs.count > 1) + tabs.removeTab(index) + else + browserWindow.close(); + } + anchors.top: parent.top anchors.bottom: devToolsView.top anchors.left: parent.left @@ -447,7 +465,7 @@ ApplicationWindow { color: control.hovered ? "#ccc" : tabRectangle.color Text {text: "x" ; anchors.centerIn: parent ; color: "gray"} }} - onClicked: tabs.removeTab(styleData.index); + onClicked: tabs.removeView(styleData.index) } } } @@ -564,12 +582,7 @@ ApplicationWindow { reloadTimer.running = true; } - onWindowCloseRequested: { - if (tabs.count == 1) - browserWindow.close(); - else - tabs.removeTab(tabs.currentIndex); - } + onWindowCloseRequested: tabs.removeView(tabs.indexOfView(webEngineView)) onSelectClientCertificate: function(selection) { selection.certificates[0].select(); -- cgit v1.2.3