Modified: releases/WebKitGTK/webkit-2.18/Tools/ChangeLog (223356 => 223357)
--- releases/WebKitGTK/webkit-2.18/Tools/ChangeLog 2017-10-16 09:40:36 UTC (rev 223356)
+++ releases/WebKitGTK/webkit-2.18/Tools/ChangeLog 2017-10-16 09:41:12 UTC (rev 223357)
@@ -1,3 +1,22 @@
+2017-09-10 Michael Catanzaro <mcatanz...@igalia.com>
+
+ [GTK] Improve Ctrl+W and Ctrl+Q shortcuts in MiniBrowser
+ https://bugs.webkit.org/show_bug.cgi?id=176619
+
+ Reviewed by Carlos Garcia Campos.
+
+ There are two different problems here. First, Ctrl+W is closing the entire window. That made
+ sense when I implemented the shortcut a couple years ago, but now MiniBrowser supports tabs
+ and it should really close only one single tab. Fix that.
+
+ Next, the keyboard shortcuts are not using webkit_web_view_try_close() and so are bypassing
+ onbeforeunload handlers, which are respected when closing with the mouse. Fix that too.
+
+ * MiniBrowser/gtk/BrowserWindow.c:
+ (browserWindowTryCloseCurrentWebView):
+ (browserWindowTryClose):
+ (browser_window_init):
+
2017-09-09 Michael Catanzaro <mcatanz...@igalia.com>
[GTK] Unreviewed, fix typo forwad -> forward
Modified: releases/WebKitGTK/webkit-2.18/Tools/MiniBrowser/gtk/BrowserWindow.c (223356 => 223357)
--- releases/WebKitGTK/webkit-2.18/Tools/MiniBrowser/gtk/BrowserWindow.c 2017-10-16 09:40:36 UTC (rev 223356)
+++ releases/WebKitGTK/webkit-2.18/Tools/MiniBrowser/gtk/BrowserWindow.c 2017-10-16 09:41:12 UTC (rev 223357)
@@ -254,6 +254,29 @@
g_list_free(list);
}
+static void browserWindowTryCloseCurrentWebView(BrowserWindow *window)
+{
+ int currentPage = gtk_notebook_get_current_page(GTK_NOTEBOOK(window->notebook));
+ BrowserTab *tab = (BrowserTab *)gtk_notebook_get_nth_page(GTK_NOTEBOOK(window->notebook), currentPage);
+ webkit_web_view_try_close(browser_tab_get_web_view(tab));
+}
+
+static void browserWindowTryClose(BrowserWindow *window)
+{
+ GSList *webViews = NULL;
+ int n = gtk_notebook_get_n_pages(GTK_NOTEBOOK(window->notebook));
+ int i;
+
+ for (i = 0; i < n; ++i) {
+ BrowserTab *tab = (BrowserTab *)gtk_notebook_get_nth_page(GTK_NOTEBOOK(window->notebook), i);
+ webViews = g_slist_prepend(webViews, browser_tab_get_web_view(tab));
+ }
+
+ GSList *link;
+ for (link = webViews; link; link = link->next)
+ webkit_web_view_try_close(link->data);
+}
+
static void backForwardlistChanged(WebKitBackForwardList *backForwardlist, WebKitBackForwardListItem *itemAdded, GList *itemsRemoved, BrowserWindow *window)
{
browserWindowUpdateNavigationActions(window, backForwardlist);
@@ -933,9 +956,9 @@
/* Quit */
gtk_accel_group_connect(window->accelGroup, GDK_KEY_Q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE,
- g_cclosure_new_swap(G_CALLBACK(gtk_widget_destroy), window, NULL));
+ g_cclosure_new_swap(G_CALLBACK(browserWindowTryClose), window, NULL));
gtk_accel_group_connect(window->accelGroup, GDK_KEY_W, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE,
- g_cclosure_new_swap(G_CALLBACK(gtk_widget_destroy), window, NULL));
+ g_cclosure_new_swap(G_CALLBACK(browserWindowTryCloseCurrentWebView), window, NULL));
/* Print */
gtk_accel_group_connect(window->accelGroup, GDK_KEY_P, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE,
@@ -1045,22 +1068,6 @@
g_bytes_unref(bytes);
}
-static void browserWindowTryClose(BrowserWindow *window)
-{
- GSList *webViews = NULL;
- int n = gtk_notebook_get_n_pages(GTK_NOTEBOOK(window->notebook));
- int i;
-
- for (i = 0; i < n; ++i) {
- BrowserTab *tab = (BrowserTab *)gtk_notebook_get_nth_page(GTK_NOTEBOOK(window->notebook), i);
- webViews = g_slist_prepend(webViews, browser_tab_get_web_view(tab));
- }
-
- GSList *link;
- for (link = webViews; link; link = link->next)
- webkit_web_view_try_close(link->data);
-}
-
static gboolean browserWindowDeleteEvent(GtkWidget *widget, GdkEventAny* event)
{
BrowserWindow *window = BROWSER_WINDOW(widget);