This is an automated email from the git hooks/post-receive script.

f2404 pushed a 
commit to branch 
master
in repository apps/xfce4-terminal.

commit d2d4b4e95977022df408647266226082843a9d86
Author: Igor <f2...@yandex.ru>
Date:   Sun May 27 10:15:00 2018 -0400

    Add action to set tab label color
---
 terminal/terminal-screen.c      |  81 +++++++++++++++++-------
 terminal/terminal-screen.h      | 135 ++++++++++++++++++++--------------------
 terminal/terminal-window-ui.xml |   4 ++
 terminal/terminal-window.c      |  25 ++++++++
 4 files changed, 155 insertions(+), 90 deletions(-)

diff --git a/terminal/terminal-screen.c b/terminal/terminal-screen.c
index 8b93d22..6b1d8bc 100644
--- a/terminal/terminal-screen.c
+++ b/terminal/terminal-screen.c
@@ -157,6 +157,8 @@ static void       terminal_screen_urgent_bell               
    (TerminalWidget
                                                                  
TerminalScreen        *screen);
 static void       terminal_screen_set_custom_command            
(TerminalScreen        *screen,
                                                                  gchar         
       **command);
+static void       terminal_screen_set_tab_label_color           
(TerminalScreen        *screen,
+                                                                 const GdkRGBA 
        *color);
 
 
 
@@ -188,6 +190,7 @@ struct _TerminalScreen
 
   gchar               *custom_fg_color;
   gchar               *custom_bg_color;
+  gchar               *custom_tab_label_color;
 
   TerminalTitle        dynamic_title_mode;
   guint                hold : 1;
@@ -376,6 +379,7 @@ terminal_screen_finalize (GObject *object)
   g_free (screen->initial_title);
   g_free (screen->custom_fg_color);
   g_free (screen->custom_bg_color);
+  g_free (screen->custom_tab_label_color);
 
   (*G_OBJECT_CLASS (terminal_screen_parent_class)->finalize) (object);
 }
@@ -1478,14 +1482,16 @@ terminal_screen_reset_activity_timeout (gpointer 
user_data)
   TerminalScreen *screen = TERMINAL_SCREEN (user_data);
   GdkRGBA         active_color;
   GdkRGBA         fg_color;
-  PangoAttrList  *attrs;
-  PangoAttribute *foreground;
+  GdkRGBA         label_color;
 
   if (G_UNLIKELY (screen->tab_label == NULL))
     return FALSE;
 
   /* unset */
-  gtk_label_set_attributes (GTK_LABEL (screen->tab_label), NULL);
+  if (G_LIKELY (screen->custom_tab_label_color == NULL))
+    gtk_label_set_attributes (GTK_LABEL (screen->tab_label), NULL);
+  else if (gdk_rgba_parse (&label_color, screen->custom_tab_label_color))
+    terminal_screen_set_tab_label_color (screen, &label_color);
 
   if (terminal_preferences_get_color (screen->preferences, 
"tab-activity-color", &active_color))
     {
@@ -1497,13 +1503,7 @@ terminal_screen_reset_activity_timeout (gpointer 
user_data)
       active_color.green = (active_color.green + fg_color.green) / 2;
       active_color.blue = (active_color.blue + fg_color.blue) / 2;
 
-      attrs = pango_attr_list_new ();
-      foreground = pango_attr_foreground_new 
((guint16)(active_color.red*65535),
-                                              
(guint16)(active_color.green*65535),
-                                              
(guint16)(active_color.blue*65535));
-      pango_attr_list_insert (attrs, foreground);
-      gtk_label_set_attributes (GTK_LABEL (screen->tab_label), attrs);
-      pango_attr_list_unref (attrs);
+      terminal_screen_set_tab_label_color (screen, &active_color);
     }
 
   return FALSE;
@@ -1524,9 +1524,8 @@ terminal_screen_vte_window_contents_changed 
(TerminalScreen *screen)
 {
   guint           timeout;
   GdkRGBA         color;
+  GdkRGBA         label_color;
   gboolean        has_color;
-  PangoAttrList  *attrs;
-  PangoAttribute *foreground;
 
   terminal_return_if_fail (TERMINAL_IS_SCREEN (screen));
   terminal_return_if_fail (GTK_IS_LABEL (screen->tab_label));
@@ -1547,17 +1546,11 @@ terminal_screen_vte_window_contents_changed 
(TerminalScreen *screen)
   /* set label color */
   has_color = terminal_preferences_get_color (screen->preferences, 
"tab-activity-color", &color);
   if (G_LIKELY (has_color))
-    {
-      attrs = pango_attr_list_new ();
-      foreground = pango_attr_foreground_new ((guint16)(color.red*65535),
-                                              (guint16)(color.green*65535),
-                                              (guint16)(color.blue*65535));
-      pango_attr_list_insert (attrs, foreground);
-      gtk_label_set_attributes (GTK_LABEL (screen->tab_label), attrs);
-      pango_attr_list_unref (attrs);
-    }
-  else
-      gtk_label_set_attributes (GTK_LABEL (screen->tab_label), NULL);
+    terminal_screen_set_tab_label_color (screen, &color);
+  else if (G_LIKELY (screen->custom_tab_label_color == NULL))
+    gtk_label_set_attributes (GTK_LABEL (screen->tab_label), NULL);
+  else if (gdk_rgba_parse (&label_color, screen->custom_tab_label_color))
+    terminal_screen_set_tab_label_color (screen, &label_color);
 
   /* stop running reset timeout */
   if (screen->activity_timeout_id != 0)
@@ -1718,6 +1711,21 @@ terminal_screen_set_custom_command (TerminalScreen 
*screen,
 
 
 
+static void
+terminal_screen_set_tab_label_color (TerminalScreen *screen,
+                                     const GdkRGBA  *color)
+{
+  PangoAttrList *attrs = pango_attr_list_new ();
+  PangoAttribute *foreground = pango_attr_foreground_new 
((guint16)(color->red*65535),
+                                                          
(guint16)(color->green*65535),
+                                                          
(guint16)(color->blue*65535));
+  pango_attr_list_insert (attrs, foreground);
+  gtk_label_set_attributes (GTK_LABEL (screen->tab_label), attrs);
+  pango_attr_list_unref (attrs);
+}
+
+
+
 #if VTE_CHECK_VERSION (0, 48, 0)
 static void
 terminal_screen_spawn_async_cb (VteTerminal *terminal,
@@ -2432,13 +2440,20 @@ terminal_screen_get_restart_command (TerminalScreen 
*screen)
 void
 terminal_screen_reset_activity (TerminalScreen *screen)
 {
+  GdkRGBA label_color;
+
   terminal_return_if_fail (TERMINAL_IS_SCREEN (screen));
 
   if (screen->activity_timeout_id != 0)
     g_source_remove (screen->activity_timeout_id);
 
   if (screen->tab_label != NULL)
-    gtk_label_set_attributes (GTK_LABEL (screen->tab_label), NULL);
+    {
+      if (G_LIKELY (screen->custom_tab_label_color == NULL))
+        gtk_label_set_attributes (GTK_LABEL (screen->tab_label), NULL);
+      else if (gdk_rgba_parse (&label_color, screen->custom_tab_label_color))
+        terminal_screen_set_tab_label_color (screen, &label_color);
+    }
 }
 
 
@@ -2821,3 +2836,21 @@ terminal_screen_get_custom_bg_color (TerminalScreen 
*screen)
   terminal_return_if_fail (TERMINAL_IS_SCREEN (screen));
   return screen->custom_bg_color;
 }
+
+
+
+void
+terminal_screen_set_custom_tab_label_color (TerminalScreen *screen,
+                                            const gchar    *color)
+{
+  GdkRGBA label_color;
+
+  terminal_return_if_fail (TERMINAL_IS_SCREEN (screen));
+
+  if (gdk_rgba_parse (&label_color, color))
+    {
+      g_free (screen->custom_tab_label_color);
+      screen->custom_tab_label_color = g_strdup (color);
+      terminal_screen_set_tab_label_color (screen, &label_color);
+    }
+}
diff --git a/terminal/terminal-screen.h b/terminal/terminal-screen.h
index f256dec..e0c5e5c 100644
--- a/terminal/terminal-screen.h
+++ b/terminal/terminal-screen.h
@@ -36,103 +36,106 @@ G_BEGIN_DECLS
 typedef struct _TerminalScreenClass TerminalScreenClass;
 typedef struct _TerminalScreen      TerminalScreen;
 
-GType           terminal_screen_get_type                  (void) G_GNUC_CONST;
+GType           terminal_screen_get_type                   (void) G_GNUC_CONST;
 
-TerminalScreen *terminal_screen_new                       (TerminalTabAttr 
*attr,
-                                                           glong            
columns,
-                                                           glong            
rows);
+TerminalScreen *terminal_screen_new                        (TerminalTabAttr 
*attr,
+                                                            glong            
columns,
+                                                            glong            
rows);
 
-void            terminal_screen_launch_child              (TerminalScreen 
*screen);
+void            terminal_screen_launch_child               (TerminalScreen 
*screen);
 
-const gchar    *terminal_screen_get_custom_title          (TerminalScreen 
*screen);
-void            terminal_screen_set_custom_title          (TerminalScreen 
*screen,
-                                                           const gchar    
*title);
+const gchar    *terminal_screen_get_custom_title           (TerminalScreen 
*screen);
+void            terminal_screen_set_custom_title           (TerminalScreen 
*screen,
+                                                            const gchar    
*title);
 
-void            terminal_screen_get_size                  (TerminalScreen 
*screen,
-                                                           glong          
*width_chars,
-                                                           glong          
*height_chars);
-void            terminal_screen_set_size                  (TerminalScreen 
*screen,
-                                                           glong           
width_chars,
-                                                           glong           
height_chars);
+void            terminal_screen_get_size                   (TerminalScreen 
*screen,
+                                                            glong          
*width_chars,
+                                                            glong          
*height_chars);
+void            terminal_screen_set_size                   (TerminalScreen 
*screen,
+                                                            glong           
width_chars,
+                                                            glong           
height_chars);
 
-void            terminal_screen_get_geometry              (TerminalScreen 
*screen,
-                                                           glong          
*char_width,
-                                                           glong          
*char_height,
-                                                           gint           
*xpad,
-                                                           gint           
*ypad);
+void            terminal_screen_get_geometry               (TerminalScreen 
*screen,
+                                                            glong          
*char_width,
+                                                            glong          
*char_height,
+                                                            gint           
*xpad,
+                                                            gint           
*ypad);
 
-void            terminal_screen_set_window_geometry_hints (TerminalScreen 
*screen,
-                                                           GtkWindow      
*window);
+void            terminal_screen_set_window_geometry_hints  (TerminalScreen 
*screen,
+                                                            GtkWindow      
*window);
 
-void            terminal_screen_force_resize_window       (TerminalScreen 
*screen,
-                                                           GtkWindow      
*window,
-                                                           glong           
force_columns,
-                                                           glong           
force_rows);
+void            terminal_screen_force_resize_window        (TerminalScreen 
*screen,
+                                                            GtkWindow      
*window,
+                                                            glong           
force_columns,
+                                                            glong           
force_rows);
 
-gchar          *terminal_screen_get_title                 (TerminalScreen 
*screen);
+gchar          *terminal_screen_get_title                  (TerminalScreen 
*screen);
 
-const gchar    *terminal_screen_get_working_directory     (TerminalScreen 
*screen);
-void            terminal_screen_set_working_directory     (TerminalScreen 
*screen,
-                                                           const gchar    
*directory);
+const gchar    *terminal_screen_get_working_directory      (TerminalScreen 
*screen);
+void            terminal_screen_set_working_directory      (TerminalScreen 
*screen,
+                                                            const gchar    
*directory);
 
-gboolean        terminal_screen_has_selection             (TerminalScreen 
*screen);
+gboolean        terminal_screen_has_selection              (TerminalScreen 
*screen);
 
-void            terminal_screen_copy_clipboard            (TerminalScreen 
*screen);
+void            terminal_screen_copy_clipboard             (TerminalScreen 
*screen);
 #if VTE_CHECK_VERSION (0, 49, 2)
-void            terminal_screen_copy_clipboard_html       (TerminalScreen 
*screen);
+void            terminal_screen_copy_clipboard_html        (TerminalScreen 
*screen);
 #endif
-void            terminal_screen_paste_clipboard           (TerminalScreen 
*screen);
-void            terminal_screen_paste_primary             (TerminalScreen 
*screen);
+void            terminal_screen_paste_clipboard            (TerminalScreen 
*screen);
+void            terminal_screen_paste_primary              (TerminalScreen 
*screen);
 
-void            terminal_screen_select_all                (TerminalScreen 
*screen);
+void            terminal_screen_select_all                 (TerminalScreen 
*screen);
 
-void            terminal_screen_reset                     (TerminalScreen 
*screen,
-                                                           gboolean        
clear);
+void            terminal_screen_reset                      (TerminalScreen 
*screen,
+                                                            gboolean        
clear);
 
-GSList         *terminal_screen_get_restart_command       (TerminalScreen 
*screen);
+GSList         *terminal_screen_get_restart_command        (TerminalScreen 
*screen);
 
-void            terminal_screen_reset_activity            (TerminalScreen 
*screen);
+void            terminal_screen_reset_activity             (TerminalScreen 
*screen);
 
-GtkWidget      *terminal_screen_get_tab_label             (TerminalScreen 
*screen);
+GtkWidget      *terminal_screen_get_tab_label              (TerminalScreen 
*screen);
 
-void            terminal_screen_focus                     (TerminalScreen 
*screen);
+void            terminal_screen_focus                      (TerminalScreen 
*screen);
 
-const gchar    *terminal_screen_get_encoding              (TerminalScreen 
*screen);
-void            terminal_screen_set_encoding              (TerminalScreen 
*screen,
-                                                           const gchar    
*charset);
+const gchar    *terminal_screen_get_encoding               (TerminalScreen 
*screen);
+void            terminal_screen_set_encoding               (TerminalScreen 
*screen,
+                                                            const gchar    
*charset);
 
-void            terminal_screen_search_set_gregex         (TerminalScreen 
*screen,
-                                                           GRegex         
*regex,
-                                                           gboolean        
wrap_around);
-gboolean        terminal_screen_search_has_gregex         (TerminalScreen 
*screen);
+void            terminal_screen_search_set_gregex          (TerminalScreen 
*screen,
+                                                            GRegex         
*regex,
+                                                            gboolean        
wrap_around);
+gboolean        terminal_screen_search_has_gregex          (TerminalScreen 
*screen);
 
-void            terminal_screen_search_find_next          (TerminalScreen 
*screen);
-void            terminal_screen_search_find_previous      (TerminalScreen 
*screen);
+void            terminal_screen_search_find_next           (TerminalScreen 
*screen);
+void            terminal_screen_search_find_previous       (TerminalScreen 
*screen);
 
-void            terminal_screen_update_scrolling_bar      (TerminalScreen 
*screen);
+void            terminal_screen_update_scrolling_bar       (TerminalScreen 
*screen);
 
-void            terminal_screen_update_font               (TerminalScreen 
*screen);
+void            terminal_screen_update_font                (TerminalScreen 
*screen);
 
-gboolean        terminal_screen_get_input_enabled         (TerminalScreen 
*screen);
-void            terminal_screen_set_input_enabled         (TerminalScreen 
*screen,
-                                                           gboolean        
enabled);
+gboolean        terminal_screen_get_input_enabled          (TerminalScreen 
*screen);
+void            terminal_screen_set_input_enabled          (TerminalScreen 
*screen,
+                                                            gboolean        
enabled);
 
-gboolean        terminal_screen_get_scroll_on_output      (TerminalScreen 
*screen);
-void            terminal_screen_set_scroll_on_output      (TerminalScreen 
*screen,
-                                                           gboolean        
enabled);
+gboolean        terminal_screen_get_scroll_on_output       (TerminalScreen 
*screen);
+void            terminal_screen_set_scroll_on_output       (TerminalScreen 
*screen,
+                                                            gboolean        
enabled);
 
-void            terminal_screen_save_contents             (TerminalScreen 
*screen,
-                                                           GOutputStream  
*stream,
-                                                           GError         
*error);
+void            terminal_screen_save_contents              (TerminalScreen 
*screen,
+                                                            GOutputStream  
*stream,
+                                                            GError         
*error);
 
-gboolean        terminal_screen_has_foreground_process    (TerminalScreen 
*screen);
+gboolean        terminal_screen_has_foreground_process     (TerminalScreen 
*screen);
 
-void            terminal_screen_feed_text                 (TerminalScreen 
*screen,
-                                                           const char     
*text);
+void            terminal_screen_feed_text                  (TerminalScreen 
*screen,
+                                                            const char     
*text);
 
-const gchar    *terminal_screen_get_custom_fg_color       (TerminalScreen 
*screen);
+const gchar    *terminal_screen_get_custom_fg_color        (TerminalScreen 
*screen);
 
-const gchar    *terminal_screen_get_custom_bg_color       (TerminalScreen 
*screen);
+const gchar    *terminal_screen_get_custom_bg_color        (TerminalScreen 
*screen);
+
+void            terminal_screen_set_custom_tab_label_color (TerminalScreen 
*screen,
+                                                            const gchar    
*color);
 
 G_END_DECLS
 
diff --git a/terminal/terminal-window-ui.xml b/terminal/terminal-window-ui.xml
index 824660e..9c5a227 100644
--- a/terminal/terminal-window-ui.xml
+++ b/terminal/terminal-window-ui.xml
@@ -64,6 +64,8 @@
       <menuitem action="move-tab-left"/>
       <menuitem action="move-tab-right"/>
       <separator/>
+      <menuitem action="set-tab-label-color"/>
+      <separator/>
       <placeholder name="placeholder-tab-items"/>
     </menu>
     <menu action="help-menu">
@@ -104,6 +106,8 @@
     <menuitem action="move-tab-left"/>
     <menuitem action="move-tab-right"/>
     <separator/>
+    <menuitem action="set-tab-label-color"/>
+    <separator/>
     <menu action="tabs-menu">
       <placeholder name="placeholder-tab-items"/>
     </menu>
diff --git a/terminal/terminal-window.c b/terminal/terminal-window.c
index 9a21fe6..a6894b0 100644
--- a/terminal/terminal-window.c
+++ b/terminal/terminal-window.c
@@ -217,6 +217,8 @@ static void         terminal_window_action_move_tab_right   
      (GtkAction
                                                                    
TerminalWindow         *window);
 static void         terminal_window_action_goto_tab               
(GtkRadioAction         *action,
                                                                    GtkNotebook 
           *notebook);
+static void         terminal_window_action_set_tab_label_color    (GtkAction   
           *action,
+                                                                   
TerminalWindow         *window);
 static void         terminal_window_action_set_title              (GtkAction   
           *action,
                                                                    
TerminalWindow         *window);
 static void         terminal_window_action_search                 (GtkAction   
           *action,
@@ -347,6 +349,7 @@ static const GtkActionEntry action_entries[] =
     { "next-tab", "go-next", N_ ("_Next Tab"), "<control>Page_Down", N_ 
("Switch to next tab"), G_CALLBACK (terminal_window_action_next_tab), },
     { "move-tab-left", NULL, N_ ("Move Tab _Left"), "<control><shift>Page_Up", 
NULL, G_CALLBACK (terminal_window_action_move_tab_left), },
     { "move-tab-right", NULL, N_ ("Move Tab _Right"), 
"<control><shift>Page_Down", NULL, G_CALLBACK 
(terminal_window_action_move_tab_right), },
+    { "set-tab-label-color", NULL, N_ ("Set Tab Label _Color"), NULL, NULL, 
G_CALLBACK (terminal_window_action_set_tab_label_color), },
   { "help-menu", NULL, N_ ("_Help"), NULL, NULL, NULL, },
     { "contents", "help-browser", N_ ("_Contents"), "F1", N_ ("Display help 
contents"), G_CALLBACK (terminal_window_action_contents), },
     { "about", "help-about", N_ ("_About"), NULL, NULL, G_CALLBACK 
(terminal_window_action_about), },
@@ -2087,6 +2090,28 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
 
 static void
+terminal_window_action_set_tab_label_color (GtkAction      *action,
+                                            TerminalWindow *window)
+{
+  GdkRGBA    color;
+  gchar     *color_string;
+  GtkWidget *dialog = gtk_color_chooser_dialog_new (_("Choose tab label 
color"), GTK_WINDOW (window));
+  int        response = gtk_dialog_run (GTK_DIALOG (dialog));
+
+  if (response == GTK_RESPONSE_OK)
+    {
+      gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color);
+      color_string = gdk_rgba_to_string (&color);
+      terminal_screen_set_custom_tab_label_color (window->priv->active, 
color_string);
+      g_free (color_string);
+    }
+
+  gtk_widget_destroy (dialog);
+}
+
+
+
+static void
 title_popover_close (GtkWidget      *popover,
                      TerminalWindow *window)
 {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to