<https://webkit.org/b/120009> [GTK] Stop button should be added to MiniBrowser
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Aug 2013 11:00:14 +0000 (11:00 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Aug 2013 11:00:14 +0000 (11:00 +0000)
Patch by Anton Obzhirov <a.obzhirov@samsung.com> on 2013-08-20
Reviewed by Martin Robinson.

Added stop button in MiniBrowser

* MiniBrowser/gtk/BrowserWindow.c:
(reloadOrStopCallback): Callback to handle stop or reload button click.
(webViewLoadProgressChanged): Update reload or stop button icon.
(browser_window_init): Save button pointer for further icon updates.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@154322 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/MiniBrowser/gtk/BrowserWindow.c

index ffe1ab01c3c80e37ae14cf543f14659252a454ac..303e5d052c1a651f080663c2b8baf7a6b9a659f0 100644 (file)
@@ -1,3 +1,16 @@
+2013-08-20  Anton Obzhirov  <a.obzhirov@samsung.com>
+
+        <https://webkit.org/b/120009> [GTK] Stop button should be added to MiniBrowser
+
+        Reviewed by Martin Robinson.
+
+        Added stop button in MiniBrowser
+
+        * MiniBrowser/gtk/BrowserWindow.c:
+        (reloadOrStopCallback): Callback to handle stop or reload button click.
+        (webViewLoadProgressChanged): Update reload or stop button icon.
+        (browser_window_init): Save button pointer for further icon updates.
+
 2013-08-20  Simon Pena  <simon.pena@samsung.com>
 
         <https://webkit.org/b/117584> [GTK][WK1] http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html is failing
index c95f49c9855f3ec097b8de87832c4677bf96a749..c3d69e20ed88e536df2176a9540482d95972652a 100644 (file)
@@ -67,6 +67,7 @@ static const gdouble minimumZoomLevel = 0.5;
 static const gdouble maximumZoomLevel = 3;
 static const gdouble zoomStep = 1.2;
 static gint windowCount = 0;
+static GtkToolButton* reloadOrStopButton = 0;
 
 G_DEFINE_TYPE(BrowserWindow, browser_window, GTK_TYPE_WINDOW)
 
@@ -104,9 +105,12 @@ static void activateUriEntryCallback(BrowserWindow *window)
     browser_window_load_uri(window, gtk_entry_get_text(GTK_ENTRY(window->uriEntry)));
 }
 
-static void reloadCallback(BrowserWindow *window)
+static void reloadOrStopCallback(BrowserWindow *window)
 {
-    webkit_web_view_reload(window->webView);
+    if (!g_strcmp0(gtk_tool_button_get_stock_id(reloadOrStopButton), GTK_STOCK_STOP))
+        webkit_web_view_stop_loading(window->webView);
+    else
+        webkit_web_view_reload(window->webView);
 }
 
 static void goBackCallback(BrowserWindow *window)
@@ -155,8 +159,14 @@ static void webViewLoadProgressChanged(WebKitWebView *webView, GParamSpec *pspec
 {
     gdouble progress = webkit_web_view_get_estimated_load_progress(webView);
     gtk_entry_set_progress_fraction(GTK_ENTRY(window->uriEntry), progress);
-    if (progress == 1.0)
+
+    if (progress > 0.0 && progress < 1.0)
+        gtk_tool_button_set_stock_id(reloadOrStopButton, GTK_STOCK_STOP);
+
+    if (progress == 1.0) {
+        gtk_tool_button_set_stock_id(reloadOrStopButton, GTK_STOCK_REFRESH);
         g_timeout_add(500, (GSourceFunc)resetEntryProgress, window->uriEntry);
+    }
 }
 
 static void downloadStarted(WebKitWebContext *webContext, WebKitDownload *download, BrowserWindow *window)
@@ -571,11 +581,11 @@ static void browser_window_init(BrowserWindow *window)
     gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
     gtk_widget_show(GTK_WIDGET(item));
 
-    item = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
-    g_signal_connect_swapped(item, "clicked", G_CALLBACK(reloadCallback), window);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-    gtk_widget_add_accelerator(GTK_WIDGET(item), "clicked", accelGroup, GDK_KEY_F5, 0, GTK_ACCEL_VISIBLE);
-    gtk_widget_show(GTK_WIDGET(item));
+    reloadOrStopButton = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
+    g_signal_connect_swapped(reloadOrStopButton, "clicked", G_CALLBACK(reloadOrStopCallback), window);
+    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), reloadOrStopButton, -1);
+    gtk_widget_add_accelerator(GTK_WIDGET(reloadOrStopButton), "clicked", accelGroup, GDK_KEY_F5, 0, GTK_ACCEL_VISIBLE);
+    gtk_widget_show(GTK_WIDGET(reloadOrStopButton));
 
     GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
     window->mainBox = vbox;