summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>2012-06-21 14:26:39 -0300
committerCaio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>2012-06-21 15:07:07 -0300
commit0a8b878e3bc152e079c12801cb0bfe9e89204440 (patch)
tree565efe12d08b702e73df9175181a340f3d643053
parent05703859cf7f236f4114036206b82b5c25d5965d (diff)
Fix saving the opened urls when closing snowshoe
Summary: There are three ways we can close Snowshoe 1) Closing the window from the Window Manager. 2) Using Ctrl-Shift-Q shortcut. 3) Using Ctrl-W to close last tab. The cases (2) and (3) were quitting and leaking the BrowserWindow, so ApplicationStateTracker destructor would not get called, and the tabs opened were not persisted. Fixed this by closing the window instead of quitting directly, so other cases work like case (1). However QWindow::close() is not enough. I've created a bug for it, but meanwhile we workaround by having our own close method. Reviewers: darktears Reviewed By: darktears Differential Revision: http://review.qtlabs.org.br/D5
-rw-r--r--src/desktop/BrowserWindow.cpp8
-rw-r--r--src/desktop/BrowserWindow.h2
-rw-r--r--src/desktop/qml/TabWidget.js2
-rw-r--r--src/desktop/qml/main.qml2
4 files changed, 12 insertions, 2 deletions
diff --git a/src/desktop/BrowserWindow.cpp b/src/desktop/BrowserWindow.cpp
index b5a22a7..522f44c 100644
--- a/src/desktop/BrowserWindow.cpp
+++ b/src/desktop/BrowserWindow.cpp
@@ -101,6 +101,14 @@ QString BrowserWindow::decideDownloadPath(const QString& suggestedFilename)
return homeDir.filePath(fallbackFilename.arg(i));
}
+void BrowserWindow::closeWindow()
+{
+ // This is a workaround because the Close event is not sent for this window when close() is called.
+ // See https://bugreports.qt-project.org/browse/QTBUG-26266.
+ close();
+ deleteLater();
+}
+
void BrowserWindow::moveEvent(QMoveEvent* event)
{
m_stateTracker.setWindowGeometry(geometry());
diff --git a/src/desktop/BrowserWindow.h b/src/desktop/BrowserWindow.h
index 3a68118..6196f2a 100644
--- a/src/desktop/BrowserWindow.h
+++ b/src/desktop/BrowserWindow.h
@@ -35,6 +35,8 @@ public:
// FIXME: Move to appropriate object exposed to handle download.
Q_INVOKABLE QString decideDownloadPath(const QString& suggestedPath);
+ Q_INVOKABLE void closeWindow();
+
protected:
virtual bool event(QEvent*);
virtual void moveEvent(QMoveEvent*);
diff --git a/src/desktop/qml/TabWidget.js b/src/desktop/qml/TabWidget.js
index 2770dbf..025b882 100644
--- a/src/desktop/qml/TabWidget.js
+++ b/src/desktop/qml/TabWidget.js
@@ -106,7 +106,7 @@ function closeTab(tab)
if (tabArray.length == 1) {
tabArray.pop()
updateUrlsOpened()
- Qt.quit()
+ BrowserWindow.closeWindow()
return
}
diff --git a/src/desktop/qml/main.qml b/src/desktop/qml/main.qml
index 8c5670d..21b98d7 100644
--- a/src/desktop/qml/main.qml
+++ b/src/desktop/qml/main.qml
@@ -192,7 +192,7 @@ Item {
Shortcut {
key: "Ctrl+Shift+Q"
- onTriggered: Qt.quit()
+ onTriggered: BrowserWindow.closeWindow()
}
Shortcut {