[libhandy/tabs: 8/62] Show secondary icon instead of the main one for pinned




commit 10a9904917c3bda64d0f7ab514559750a531ebe0
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Fri Sep 4 03:06:30 2020 +0500

    Show secondary icon instead of the main one for pinned

 src/hdy-tab.c  | 23 ++++++++++-------------
 src/hdy-tab.ui | 11 +++++++++++
 2 files changed, 21 insertions(+), 13 deletions(-)
---
diff --git a/src/hdy-tab.c b/src/hdy-tab.c
index 41c0eef8..22221472 100644
--- a/src/hdy-tab.c
+++ b/src/hdy-tab.c
@@ -21,6 +21,7 @@ struct _HdyTab
   GtkStack *icon_stack;
   GtkStack *pinned_icon_stack;
   GtkImage *secondary_icon;
+  GtkImage *pinned_secondary_icon;
 
   GtkWidget *child;
   GdkWindow *window;
@@ -88,14 +89,19 @@ static void
 update_icon (HdyTab *self)
 {
   GIcon *gicon = hdy_tab_page_get_icon (self->page);
+  GIcon *secondary_gicon = hdy_tab_page_get_secondary_icon (self->page);
   gboolean loading = hdy_tab_page_get_loading (self->page);
   const gchar *name = loading ? "spinner" : "icon";
+  const gchar *pinned_name = secondary_gicon ? "secondary-icon" : name;
 
   gtk_image_set_from_gicon (self->icon, gicon, GTK_ICON_SIZE_BUTTON);
   gtk_widget_set_visible (GTK_WIDGET (self->icon_stack),
                           gicon != NULL || loading);
   gtk_stack_set_visible_child_name (self->icon_stack, name);
 
+  gtk_image_set_from_gicon (self->secondary_icon, secondary_gicon, GTK_ICON_SIZE_BUTTON);
+  gtk_widget_set_visible (GTK_WIDGET (self->secondary_icon), secondary_gicon != NULL);
+
   if (gicon)
     gtk_image_set_from_gicon (self->pinned_icon, gicon, GTK_ICON_SIZE_BUTTON);
   else {
@@ -104,16 +110,8 @@ update_icon (HdyTab *self)
     gtk_image_set_from_gicon (self->pinned_icon, gicon, GTK_ICON_SIZE_BUTTON);
   }
 
-  gtk_stack_set_visible_child_name (self->pinned_icon_stack, name);
-}
-
-static void
-update_secondary_icon (HdyTab *self)
-{
-  GIcon *gicon = hdy_tab_page_get_secondary_icon (self->page);
-
-  gtk_image_set_from_gicon (self->secondary_icon, gicon, GTK_ICON_SIZE_BUTTON);
-  gtk_widget_set_visible (GTK_WIDGET (self->secondary_icon), gicon != NULL);
+  gtk_image_set_from_gicon (self->pinned_secondary_icon, secondary_gicon, GTK_ICON_SIZE_BUTTON);
+  gtk_stack_set_visible_child_name (self->pinned_icon_stack, pinned_name);
 }
 
 static void
@@ -604,6 +602,7 @@ hdy_tab_class_init (HdyTabClass *klass)
   gtk_widget_class_bind_template_child (widget_class, HdyTab, icon_stack);
   gtk_widget_class_bind_template_child (widget_class, HdyTab, pinned_icon_stack);
   gtk_widget_class_bind_template_child (widget_class, HdyTab, secondary_icon);
+  gtk_widget_class_bind_template_child (widget_class, HdyTab, pinned_secondary_icon);
   gtk_widget_class_bind_template_callback (widget_class, close_clicked_cb);
 
   gtk_widget_class_set_css_name (widget_class, "tab");
@@ -639,7 +638,6 @@ hdy_tab_set_page (HdyTab     *self,
   if (self->page) {
     g_signal_handlers_disconnect_by_func (self->page, update_tooltip, self);
     g_signal_handlers_disconnect_by_func (self->page, update_icon, self);
-    g_signal_handlers_disconnect_by_func (self->page, update_secondary_icon, self);
     g_signal_handlers_disconnect_by_func (self->page, update_needs_attention, self);
     g_signal_handlers_disconnect_by_func (self->page, update_loading, self);
     g_clear_pointer (&self->selected_binding, g_binding_unbind);
@@ -652,7 +650,6 @@ hdy_tab_set_page (HdyTab     *self,
     update_state (self);
     update_tooltip (self);
     update_icon (self);
-    update_secondary_icon (self);
     update_needs_attention (self);
     update_loading (self);
 
@@ -666,7 +663,7 @@ hdy_tab_set_page (HdyTab     *self,
                              G_CALLBACK (update_icon), self,
                              G_CONNECT_SWAPPED);
     g_signal_connect_object (self->page, "notify::secondary-icon",
-                             G_CALLBACK (update_secondary_icon), self,
+                             G_CALLBACK (update_icon), self,
                              G_CONNECT_SWAPPED);
     g_signal_connect_object (self->page, "notify::needs-attention",
                              G_CALLBACK (update_needs_attention), self,
diff --git a/src/hdy-tab.ui b/src/hdy-tab.ui
index ac26e22c..ade27591 100644
--- a/src/hdy-tab.ui
+++ b/src/hdy-tab.ui
@@ -124,6 +124,17 @@
                 <property name="name">spinner</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkImage" id="pinned_secondary_icon">
+                <property name="visible">True</property>
+                <style>
+                  <class name="tab-secondary-icon"/>
+                </style>
+              </object>
+              <packing>
+                <property name="name">secondary-icon</property>
+              </packing>
+            </child>
           </object>
           <packing>
             <property name="name">pinned</property>


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