[devhelp] BookTree/Window: block signal handler at a more appropriate place
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp] BookTree/Window: block signal handler at a more appropriate place
- Date: Fri, 18 May 2018 20:34:29 +0000 (UTC)
commit 229708ed538b8454bfc17e56ff7c1c1b88493ff9
Author: Sébastien Wilmet <swilmet gnome org>
Date: Fri May 18 22:03:48 2018 +0200
BookTree/Window: block signal handler at a more appropriate place
devhelp/dh-book-tree.c | 20 --------------------
src/dh-window.c | 44 ++++++++++++++++++++++++--------------------
2 files changed, 24 insertions(+), 40 deletions(-)
---
diff --git a/devhelp/dh-book-tree.c b/devhelp/dh-book-tree.c
index cbd7af8..1b03b3e 100644
--- a/devhelp/dh-book-tree.c
+++ b/devhelp/dh-book-tree.c
@@ -1006,7 +1006,6 @@ dh_book_tree_select_uri (DhBookTree *tree,
DhBookTreePrivate *priv;
GtkTreeSelection *selection;
FindURIData data;
- DhLink *link;
g_return_if_fail (DH_IS_BOOK_TREE (tree));
g_return_if_fail (uri != NULL);
@@ -1029,31 +1028,12 @@ dh_book_tree_select_uri (DhBookTree *tree,
if (gtk_tree_selection_iter_is_selected (selection, &data.iter))
goto out;
- /* FIXME: it's strange to block the signal here. The signal handler
- * should probably be blocked in DhWindow instead.
- */
- g_signal_handlers_block_by_func (selection,
- book_tree_selection_changed_cb,
- tree);
-
gtk_tree_view_expand_to_path (GTK_TREE_VIEW (tree), data.path);
-
- gtk_tree_model_get (GTK_TREE_MODEL (priv->store),
- &data.iter,
- COL_LINK, &link,
- -1);
- g_clear_pointer (&priv->selected_link, (GDestroyNotify)dh_link_unref);
- priv->selected_link = link;
gtk_tree_selection_select_iter (selection, &data.iter);
-
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (tree),
data.path, NULL,
FALSE, 0.0, 0.0);
- g_signal_handlers_unblock_by_func (selection,
- book_tree_selection_changed_cb,
- tree);
-
out:
gtk_tree_path_free (data.path);
}
diff --git a/src/dh-window.c b/src/dh-window.c
index c59ad67..1f368db 100644
--- a/src/dh-window.c
+++ b/src/dh-window.c
@@ -623,6 +623,28 @@ sidebar_link_selected_cb (DhSidebar *sidebar,
}
static void
+sync_active_web_view_uri_to_sidebar (DhWindow *window)
+{
+ DhWindowPrivate *priv = dh_window_get_instance_private (window);
+ DhWebView *web_view;
+ const gchar *uri = NULL;
+
+ g_signal_handlers_block_by_func (priv->sidebar,
+ sidebar_link_selected_cb,
+ window);
+
+ web_view = get_active_web_view (window);
+ if (web_view != NULL)
+ uri = webkit_web_view_get_uri (WEBKIT_WEB_VIEW (web_view));
+ if (uri != NULL)
+ dh_sidebar_select_uri (priv->sidebar, uri);
+
+ g_signal_handlers_unblock_by_func (priv->sidebar,
+ sidebar_link_selected_cb,
+ window);
+}
+
+static void
update_search_in_web_view (DhWindow *window,
DhWebView *view)
{
@@ -776,24 +798,11 @@ notebook_switch_page_after_cb (GtkNotebook *notebook,
guint new_page_num,
DhWindow *window)
{
- DhWindowPrivate *priv = dh_window_get_instance_private (window);
-
update_window_title (window);
update_zoom_actions_sensitivity (window);
update_back_forward_actions_sensitivity (window);
update_search_in_active_web_view (window);
-
- if (new_page != NULL) {
- DhWebView *web_view;
- const gchar *uri;
-
- web_view = dh_tab_get_web_view (DH_TAB (new_page));
-
- /* Sync the book tree */
- uri = webkit_web_view_get_uri (WEBKIT_WEB_VIEW (web_view));
- if (uri != NULL)
- dh_sidebar_select_uri (priv->sidebar, uri);
- }
+ sync_active_web_view_uri_to_sidebar (window);
}
static void
@@ -1024,14 +1033,9 @@ web_view_load_changed_cb (DhWebView *web_view,
WebKitLoadEvent load_event,
DhWindow *window)
{
- DhWindowPrivate *priv = dh_window_get_instance_private (window);
-
if (load_event == WEBKIT_LOAD_COMMITTED &&
web_view == get_active_web_view (window)) {
- const gchar *uri;
-
- uri = webkit_web_view_get_uri (WEBKIT_WEB_VIEW (web_view));
- dh_sidebar_select_uri (priv->sidebar, uri);
+ sync_active_web_view_uri_to_sidebar (window);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]