[devhelp] Window: use dh_sidebar_get_selected_link()



commit 0621e56774edcd9c555ece4e790cc410c179ce1b
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sat May 19 11:34:13 2018 +0200

    Window: use dh_sidebar_get_selected_link()
    
    The code is more correct with dh_sidebar_get_selected_link(), as the doc
    of DhSidebar::link-selected explains.

 src/dh-window.c |   39 +++++++++++----------------------------
 1 files changed, 11 insertions(+), 28 deletions(-)
---
diff --git a/src/dh-window.c b/src/dh-window.c
index 1f368db..66e3fde 100644
--- a/src/dh-window.c
+++ b/src/dh-window.c
@@ -48,8 +48,6 @@ typedef struct {
         GtkButton *search_prev_button;
         GtkButton *search_next_button;
         GtkNotebook *notebook;
-
-        DhLink *selected_link;
 } DhWindowPrivate;
 
 static void open_new_tab (DhWindow    *window,
@@ -58,16 +56,6 @@ static void open_new_tab (DhWindow    *window,
 
 G_DEFINE_TYPE_WITH_PRIVATE (DhWindow, dh_window, GTK_TYPE_APPLICATION_WINDOW);
 
-static void
-dh_window_dispose (GObject *object)
-{
-        DhWindowPrivate *priv = dh_window_get_instance_private (DH_WINDOW (object));
-
-        g_clear_pointer (&priv->selected_link, (GDestroyNotify) dh_link_unref);
-
-        G_OBJECT_CLASS (dh_window_parent_class)->dispose (object);
-}
-
 static gboolean
 dh_window_delete_event (GtkWidget   *widget,
                         GdkEventAny *event)
@@ -87,11 +75,8 @@ dh_window_delete_event (GtkWidget   *widget,
 static void
 dh_window_class_init (DhWindowClass *klass)
 {
-        GObjectClass *object_class = G_OBJECT_CLASS (klass);
         GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
-        object_class->dispose = dh_window_dispose;
-
         widget_class->delete_event = dh_window_delete_event;
 
         /* Bind class to template */
@@ -297,13 +282,17 @@ copy_cb (GSimpleAction *action,
         if (GTK_IS_EDITABLE (widget)) {
                 gtk_editable_copy_clipboard (GTK_EDITABLE (widget));
         } else if (GTK_IS_TREE_VIEW (widget) &&
-                   gtk_widget_is_ancestor (widget, GTK_WIDGET (priv->sidebar)) &&
-                   priv->selected_link != NULL) {
-                GtkClipboard *clipboard;
-                clipboard = gtk_widget_get_clipboard (widget, GDK_SELECTION_CLIPBOARD);
-                gtk_clipboard_set_text (clipboard,
-                                        dh_link_get_name (priv->selected_link),
-                                        -1);
+                   gtk_widget_is_ancestor (widget, GTK_WIDGET (priv->sidebar))) {
+                DhLink *link;
+
+                link = dh_sidebar_get_selected_link (priv->sidebar);
+                if (link != NULL) {
+                        GtkClipboard *clipboard;
+
+                        clipboard = gtk_widget_get_clipboard (widget, GDK_SELECTION_CLIPBOARD);
+                        gtk_clipboard_set_text (clipboard, dh_link_get_name (link), -1);
+                        dh_link_unref (link);
+                }
         } else {
                 DhWebView *web_view;
 
@@ -602,15 +591,9 @@ sidebar_link_selected_cb (DhSidebar *sidebar,
                           DhLink    *link,
                           DhWindow  *window)
 {
-        DhWindowPrivate *priv = dh_window_get_instance_private (window);
         gchar *uri;
         DhWebView *web_view;
 
-        if (priv->selected_link != link) {
-                g_clear_pointer (&priv->selected_link, (GDestroyNotify) dh_link_unref);
-                priv->selected_link = dh_link_ref (link);
-        }
-
         uri = dh_link_get_uri (link);
         if (uri == NULL)
                 return;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]