From 583eccca3fc839a00270a8ab05d85ac9632775cf Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Tue, 16 Jun 2015 12:19:05 +0200 Subject: yelp-window: Fix loading cursor inconsistencies Connect to WebKitWebView notify::is-loading to change the cursor only when the view is loading. --- src/yelp-window.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/yelp-window.c b/src/yelp-window.c index 8890aeb6..1ab1464f 100644 --- a/src/yelp-window.c +++ b/src/yelp-window.c @@ -122,6 +122,9 @@ static void view_new_window (YelpView *view, YelpWindow *window); static void view_loaded (YelpView *view, YelpWindow *window); +static void view_is_loading_changed (YelpView *view, + GParamSpec *pspec, + YelpWindow *window); static void view_uri_selected (YelpView *view, GParamSpec *pspec, YelpWindow *window); @@ -504,6 +507,7 @@ window_construct (YelpWindow *window) g_signal_connect (priv->view, "new-view-requested", G_CALLBACK (view_new_window), window); g_signal_connect (priv->view, "loaded", G_CALLBACK (view_loaded), window); + g_signal_connect (priv->view, "notify::is-loading", G_CALLBACK (view_is_loading_changed), window); g_signal_connect (priv->view, "notify::yelp-uri", G_CALLBACK (view_uri_selected), window); g_signal_connect_swapped (priv->view, "notify::page-id", G_CALLBACK (window_set_bookmark_buttons), window); @@ -1066,7 +1070,6 @@ view_loaded (YelpView *view, YelpUri *uri; gchar *doc_uri; YelpViewState state; - GdkWindow *gdkwin; YelpWindowPrivate *priv = GET_PRIV (window); g_object_get (view, @@ -1075,10 +1078,6 @@ view_loaded (YelpView *view, NULL); doc_uri = yelp_uri_get_document_uri (uri); - gdkwin = gtk_widget_get_window (GTK_WIDGET (window)); - if (gdkwin != NULL) - gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), NULL); - if (state != YELP_VIEW_STATE_ERROR) { gchar *page_id, *icon, *title; g_object_get (view, @@ -1103,6 +1102,26 @@ view_loaded (YelpView *view, g_object_unref (uri); } +static void +view_is_loading_changed (YelpView *view, + GParamSpec *pspec, + YelpWindow *window) +{ + GdkWindow *gdkwin; + + gdkwin = gtk_widget_get_window (GTK_WIDGET (window)); + if (!gdkwin) + return; + + if (webkit_web_view_is_loading (WEBKIT_WEB_VIEW (view))) { + gdk_window_set_cursor (gdkwin, + gdk_cursor_new_for_display (gdk_window_get_display (gdkwin), + GDK_WATCH)); + } else { + gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), NULL); + } +} + static void view_uri_selected (YelpView *view, GParamSpec *pspec, @@ -1110,19 +1129,12 @@ view_uri_selected (YelpView *view, { YelpUri *uri; gchar *doc_uri; - GdkWindow *gdkwin; YelpWindowPrivate *priv = GET_PRIV (window); g_object_get (G_OBJECT (view), "yelp-uri", &uri, NULL); if (uri == NULL) return; - gdkwin = gtk_widget_get_window (GTK_WIDGET (window)); - if (gdkwin != NULL) - gdk_window_set_cursor (gdkwin, - gdk_cursor_new_for_display (gdk_window_get_display (gdkwin), - GDK_WATCH)); - doc_uri = yelp_uri_get_document_uri (uri); if (priv->doc_uri == NULL || !g_str_equal (priv->doc_uri, doc_uri)) { window_set_bookmarks (window, doc_uri); -- cgit v1.2.1