[Pkg-xfce-commits] r1883 - in desktop/trunk/xfce4-terminal/debian: . patches

corsac at alioth.debian.org corsac at alioth.debian.org
Mon Apr 21 20:26:44 UTC 2008


Author: corsac
Date: 2008-04-21 20:26:43 +0000 (Mon, 21 Apr 2008)
New Revision: 1883

Added:
   desktop/trunk/xfce4-terminal/debian/patches/03_background-activity.patch
Modified:
   desktop/trunk/xfce4-terminal/debian/changelog
Log:
debian/patch: 03_background-activity added.                 closes: #353482

Modified: desktop/trunk/xfce4-terminal/debian/changelog
===================================================================
--- desktop/trunk/xfce4-terminal/debian/changelog	2008-04-20 15:49:23 UTC (rev 1882)
+++ desktop/trunk/xfce4-terminal/debian/changelog	2008-04-21 20:26:43 UTC (rev 1883)
@@ -1,3 +1,9 @@
+xfce4-terminal (0.2.8-5) UNRELEASED; urgency=low
+
+  * debian/patch: 03_background-activity added.                 closes: #353482
+
+ -- Yves-Alexis Perez <corsac at debian.org>  Sun, 20 Apr 2008 18:28:27 +0200
+
 xfce4-terminal (0.2.8-4) unstable; urgency=low
 
   [ David Paleino ]

Added: desktop/trunk/xfce4-terminal/debian/patches/03_background-activity.patch
===================================================================
--- desktop/trunk/xfce4-terminal/debian/patches/03_background-activity.patch	                        (rev 0)
+++ desktop/trunk/xfce4-terminal/debian/patches/03_background-activity.patch	2008-04-21 20:26:43 UTC (rev 1883)
@@ -0,0 +1,498 @@
+diff --git a/terminal/terminal-preferences-dialog.c b/terminal/terminal-preferences-dialog.c
+index bccf1a1..51422f9 100644
+--- a/terminal/terminal-preferences-dialog.c
++++ b/terminal/terminal-preferences-dialog.c
+@@ -768,6 +768,52 @@ terminal_preferences_dialog_init (TerminalPreferencesDialog *dialog)
+       g_free (name);
+     }
+ 
++  frame = g_object_new (GTK_TYPE_FRAME, "border-width", 0, "shadow-type", GTK_SHADOW_NONE, NULL);
++  gtk_box_pack_start (GTK_BOX (box), frame, FALSE, TRUE, 0);
++  gtk_widget_show (frame);
++
++  label = g_object_new (GTK_TYPE_LABEL, "label", _("<b>Tab activity</b>"), "use-markup", TRUE, NULL);
++  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
++  gtk_widget_show (label);
++
++  table = gtk_table_new (2, 1, FALSE);
++  gtk_table_set_row_spacings (GTK_TABLE (table), 6);
++  gtk_table_set_col_spacings (GTK_TABLE (table), 12);
++  gtk_container_set_border_width (GTK_CONTAINER (table), 12);
++  gtk_container_add (GTK_CONTAINER (frame), table);
++  gtk_widget_show (table);
++
++  label = g_object_new (GTK_TYPE_LABEL,
++                        "label", _("T_ab activity color:"),
++                        "use-underline", TRUE,
++                        "xalign", 0.0,
++                        NULL);
++  gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
++  gtk_widget_show (label);
++
++  align = gtk_alignment_new (0.0, 0.5, 0.0, 0.0);
++  gtk_table_attach (GTK_TABLE (table), align, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
++  gtk_widget_show (align);
++
++  hbox = gtk_hbox_new (FALSE, 0);
++  gtk_container_add (GTK_CONTAINER (align), hbox);
++  gtk_widget_show (hbox);
++
++  button = g_object_new (GTK_TYPE_COLOR_BUTTON, "title", _("Choose tab activity color"), NULL);
++  exo_mutual_binding_new (G_OBJECT (dialog->preferences), "tab-activity-color", G_OBJECT (button), "color");
++  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
++  gtk_label_set_mnemonic_widget (GTK_LABEL (label), button);
++  gtk_widget_show (button);
++
++  /* set Atk name/description and label relation for the button */
++  object = gtk_widget_get_accessible (button);
++  atk_object_set_name (object, _("Color Selector"));
++  atk_object_set_description (object, _("Open a dialog to specify the color"));
++  relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
++  relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
++  atk_relation_set_add (relations, relation);
++  g_object_unref (G_OBJECT (relation));
++
+   icon = gtk_widget_render_icon (GTK_WIDGET (dialog->icon_bar),
+                                  TERMINAL_STOCK_COLORS,
+                                  GTK_ICON_SIZE_DIALOG,
+@@ -982,6 +1028,46 @@ terminal_preferences_dialog_init (TerminalPreferencesDialog *dialog)
+   /* set Atk label relation for the entry */
+   terminal_gtk_label_set_a11y_relation (GTK_LABEL (label), entry);
+ 
++/* start */
++  frame = g_object_new (GTK_TYPE_FRAME, "border-width", 0, "shadow-type", GTK_SHADOW_NONE, NULL);
++  gtk_box_pack_start (GTK_BOX (box), frame, FALSE, TRUE, 0);
++  gtk_widget_show (frame);
++
++  label = g_object_new (GTK_TYPE_LABEL, "label", _("<b>Tab activity indicator</b>"), "use-markup", TRUE, NULL);
++  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
++  gtk_widget_show (label);
++
++  vbox = gtk_vbox_new (FALSE, 6);
++  gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
++  gtk_container_add (GTK_CONTAINER (frame), vbox);
++  gtk_widget_show (vbox);
++
++  hbox = gtk_hbox_new (FALSE, 6);
++  gtk_container_set_border_width (GTK_CONTAINER (hbox), 0);
++  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
++  gtk_widget_show (hbox);
++
++  label = gtk_label_new (_("Reset tab activity indicator after"));
++  g_object_set (G_OBJECT (label), "wrap", TRUE, "xalign", 0.0, NULL);
++  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
++  gtk_widget_show (label);
++
++  button = gtk_spin_button_new_with_range (0.0, 30.0, 1.0);
++  gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(button), TRUE);
++  exo_mutual_binding_new (G_OBJECT (dialog->preferences), "tab-activity-timeout", G_OBJECT (button), "value");
++  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
++  gtk_label_set_mnemonic_widget (GTK_LABEL (label), button);
++  gtk_widget_show (button);
++
++  /* set Atk label relation for the button */
++  terminal_gtk_label_set_a11y_relation (GTK_LABEL (label), button);
++
++  label = gtk_label_new (_("seconds"));
++  g_object_set (G_OBJECT (label), "wrap", TRUE, "xalign", 0.0, NULL);
++  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
++  gtk_widget_show (label);
++
++/*end */
+   icon = gtk_widget_render_icon (GTK_WIDGET (dialog->icon_bar),
+                                  TERMINAL_STOCK_ADVANCED,
+                                  GTK_ICON_SIZE_DIALOG,
+diff --git a/terminal/terminal-preferences.c b/terminal/terminal-preferences.c
+index bb6f6c0..311efe0 100644
+--- a/terminal/terminal-preferences.c
++++ b/terminal/terminal-preferences.c
+@@ -130,6 +130,8 @@ enum
+   PROP_TERM,
+   PROP_VTE_WORKAROUND_TITLE_BUG,
+   PROP_WORD_CHARS,
++  PROP_TAB_ACTIVITY_COLOR,
++  PROP_TAB_ACTIVITY_TIMEOUT,
+   N_PROPERTIES,
+ };
+ 
+@@ -910,6 +912,27 @@ terminal_preferences_class_init (TerminalPreferencesClass *klass)
+                                                         EXO_PARAM_READWRITE));
+ 
+   /**
++   * TerminalPreferences:tab-activity-color:
++   **/
++  g_object_class_install_property (gobject_class,
++                                   PROP_TAB_ACTIVITY_COLOR,
++                                   g_param_spec_string ("tab-activity-color",
++                                                        "tab-activity-color",
++                                                        "tab-activity-color",
++                                                        "#afff00000000",
++                                                        EXO_PARAM_READWRITE));
++  /**
++   * TerminalPreferences:tab-activity-timeout:
++   **/
++  g_object_class_install_property (gobject_class,
++                                   PROP_TAB_ACTIVITY_TIMEOUT,
++                                   g_param_spec_double ("tab-activity-timeout",
++                                                        "tab-activity-timeout",
++                                                        "tab-activity-timeout",
++                                                        0.0, 30.0, 2.0,
++                                                        EXO_PARAM_READWRITE));
++
++  /**
+    * TerminalPreferences:command-update-records:
+    **/
+   g_object_class_install_property (gobject_class,
+@@ -1640,5 +1663,16 @@ terminal_preferences_get (void)
+   return preferences;
+ }
+ 
++void
++query_color (TerminalPreferences *preferences,
++             const gchar         *property,
++             GdkColor            *color_return)
++{
++  gchar *spec;
++
++  g_object_get (G_OBJECT (preferences), property, &spec, NULL);
++  gdk_color_parse (spec, color_return);
++  g_free (spec);
++}
+ 
+ 
+diff --git a/terminal/terminal-preferences.h b/terminal/terminal-preferences.h
+index f053a78..f102718 100644
+--- a/terminal/terminal-preferences.h
++++ b/terminal/terminal-preferences.h
+@@ -83,6 +83,11 @@ GType                terminal_preferences_get_type  (void) G_GNUC_CONST;
+ 
+ TerminalPreferences *terminal_preferences_get       (void);
+ 
++void                 query_color                    (TerminalPreferences *preferences,
++                                                     const gchar         *property,
++                                                     GdkColor            *color_return);
++
++
+ G_END_DECLS;
+ 
+ #endif /* !__TERMINAL_PREFERENCES_H__ */
+diff --git a/terminal/terminal-screen.c b/terminal/terminal-screen.c
+index 886b8d7..dc17195 100644
+--- a/terminal/terminal-screen.c
++++ b/terminal/terminal-screen.c
+@@ -44,6 +44,7 @@
+ #include <terminal/terminal-private.h>
+ #include <terminal/terminal-screen.h>
+ #include <terminal/terminal-widget.h>
++#include <terminal/terminal-window.h>
+ 
+ #if defined(GDK_WINDOWING_X11)
+ #include <gdk/gdkx.h>
+@@ -56,6 +57,7 @@ enum
+   PROP_0,
+   PROP_CUSTOM_TITLE,
+   PROP_TITLE,
++  PROP_ACTIVITY,
+ };
+ 
+ enum
+@@ -107,6 +109,8 @@ static void       terminal_screen_vte_selection_changed         (VteTerminal
+                                                                  TerminalScreen        *screen);
+ static void       terminal_screen_vte_window_title_changed      (VteTerminal           *terminal,
+                                                                  TerminalScreen        *screen);
++static void       terminal_screen_vte_window_contents_changed   (VteTerminal           *terminal,
++                                                                 TerminalScreen        *screen);
+ static gboolean   terminal_screen_timer_background              (gpointer               user_data);
+ static void       terminal_screen_timer_background_destroy      (gpointer               user_data);
+ 
+@@ -138,6 +142,9 @@ struct _TerminalScreen
+ 
+   guint                background_timer_id;
+   guint                launch_idle_id;
++  
++  gboolean             activity;
++  guint                reset_activity_cb;
+ };
+ 
+ 
+@@ -188,6 +195,17 @@ terminal_screen_class_init (TerminalScreenClass *klass)
+                                                         G_PARAM_READABLE));
+ 
+   /**
++   * TerminalScreen:activity:
++   **/
++  g_object_class_install_property (gobject_class,
++                                   PROP_ACTIVITY,
++                                   g_param_spec_boolean ("activity",
++                                                         "activity",
++                                                         "activity",
++                                                         FALSE,
++                                                         G_PARAM_READWRITE));
++
++  /**
+    * TerminalScreen::get-context-menu
+    **/
+   screen_signals[GET_CONTEXT_MENU] =
+@@ -227,6 +245,7 @@ terminal_screen_init (TerminalScreen *screen)
+                     "signal::context-menu", G_CALLBACK (terminal_screen_vte_get_context_menu), screen,
+                     "signal::selection-changed", G_CALLBACK (terminal_screen_vte_selection_changed), screen,
+                     "signal::window-title-changed", G_CALLBACK (terminal_screen_vte_window_title_changed), screen,
++                    "signal::contents-changed", G_CALLBACK (terminal_screen_vte_window_contents_changed), screen,
+                     "swapped-signal::size-allocate", G_CALLBACK (terminal_screen_timer_background), screen,
+                     "swapped-signal::style-set", G_CALLBACK (terminal_screen_update_colors), screen,
+                     NULL);
+@@ -340,6 +359,10 @@ terminal_screen_get_property (GObject          *object,
+       g_value_take_string (value, terminal_screen_get_title (screen));
+       break;
+ 
++    case PROP_ACTIVITY:
++      g_value_set_boolean (value, screen->activity);
++      break;
++
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -362,6 +385,10 @@ terminal_screen_set_property (GObject          *object,
+       terminal_screen_set_custom_title (screen, g_value_get_string (value));
+       break;
+ 
++    case PROP_ACTIVITY:
++      screen->activity = g_value_get_boolean (value);
++      break;
++
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -597,22 +624,6 @@ terminal_screen_update_binding_delete (TerminalScreen *screen)
+     }
+ }
+ 
+-
+-
+-static void
+-query_color (TerminalPreferences *preferences,
+-             const gchar         *property,
+-             GdkColor            *color_return)
+-{
+-  gchar *spec;
+-
+-  g_object_get (G_OBJECT (preferences), property, &spec, NULL);
+-  gdk_color_parse (spec, color_return);
+-  g_free (spec);
+-}
+-
+-
+-
+ static void
+ terminal_screen_update_colors (TerminalScreen *screen)
+ {
+@@ -843,7 +854,38 @@ terminal_screen_vte_window_title_changed (VteTerminal    *terminal,
+   g_object_notify (G_OBJECT (screen), "title");
+ }
+ 
++static gboolean terminal_screen_reset_activity(TerminalScreen *screen)
++{
++  screen->activity = FALSE;
++  screen->reset_activity_cb = 0;
++  g_object_notify (G_OBJECT (screen), "activity");
++  return FALSE;
++}
++
++static void
++terminal_screen_vte_window_contents_changed (VteTerminal    *terminal,
++                                             TerminalScreen *screen)
++{
++  gdouble timeout_seconds = 2.0;
++
++  _terminal_return_if_fail (VTE_IS_TERMINAL (terminal));
++  _terminal_return_if_fail (TERMINAL_IS_SCREEN (screen));
++
++  if (terminal_window_is_screen_active (screen))
++    return;
+ 
++  g_object_get (G_OBJECT (screen->preferences), "tab-activity-timeout", &timeout_seconds, NULL);
++  if (timeout_seconds < 1.0)
++    return;
++
++  screen->activity = TRUE;
++  g_object_notify (G_OBJECT (screen), "activity");
++  if (screen->reset_activity_cb != 0) {
++    g_source_remove(screen->reset_activity_cb);
++  }
++  screen->reset_activity_cb = g_timeout_add_seconds ((gint)timeout_seconds,
++                     (GSourceFunc)terminal_screen_reset_activity, screen);
++}
+ 
+ static gboolean
+ terminal_screen_timer_background (gpointer user_data)
+@@ -1226,8 +1268,6 @@ terminal_screen_get_title (TerminalScreen *screen)
+   return title;
+ }
+ 
+-
+-
+ /**
+  * terminal_screen_get_working_directory:
+  * @screen      : A #TerminalScreen.
+diff --git a/terminal/terminal-tab-header.c b/terminal/terminal-tab-header.c
+index aebe338..9ddd5b7 100644
+--- a/terminal/terminal-tab-header.c
++++ b/terminal/terminal-tab-header.c
+@@ -27,6 +27,7 @@
+ #include <terminal/terminal-preferences.h>
+ #include <terminal/terminal-stock.h>
+ #include <terminal/terminal-tab-header.h>
++#include <terminal/terminal-screen.h>
+ 
+ 
+ 
+@@ -35,6 +36,7 @@ enum
+   PROP_0,
+   PROP_TAB_POS,
+   PROP_TITLE,
++  PROP_ACTIVITY,
+ };
+ 
+ enum
+@@ -135,6 +137,17 @@ terminal_tab_header_class_init (TerminalTabHeaderClass *klass)
+                                                         G_PARAM_READWRITE));
+ 
+   /**
++   * TerminalTabHeader:activity:
++   **/
++  g_object_class_install_property (gobject_class,
++                                   PROP_ACTIVITY,
++                                   g_param_spec_boolean ("activity",
++                                                         "activity",
++                                                         "activity",
++                                                         FALSE,
++                                                         G_PARAM_READWRITE));
++
++  /**
+    * TerminalTabHeader::close-tab:
+    **/
+   header_signals[CLOSE_TAB] =
+@@ -248,6 +261,10 @@ terminal_tab_header_get_property (GObject    *object,
+       g_object_get_property (G_OBJECT (header->label), "label", value);
+       break;
+ 
++    case PROP_ACTIVITY:
++      g_object_get_property (G_OBJECT (header), "activity", value);
++      break;
++
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -265,7 +282,9 @@ terminal_tab_header_set_property (GObject      *object,
+   TerminalTabHeader *header = TERMINAL_TAB_HEADER (object);
+   GtkPositionType    position;
+   const gchar       *title;
+-
++  gboolean           act = FALSE;
++  GdkColor           act_color;
++  
+   switch (prop_id)
+     {
+     case PROP_TAB_POS:
+@@ -296,6 +315,13 @@ terminal_tab_header_set_property (GObject      *object,
+       gtk_label_set_text (GTK_LABEL (header->label), title);
+       break;
+ 
++    case PROP_ACTIVITY:
++      act = g_value_get_boolean(value);
++      query_color (header->preferences, "tab-activity-color", &act_color);
++      /* strangely, inactive tab are in state ACTIVE */
++      gtk_widget_modify_fg(header->label, GTK_STATE_ACTIVE, act ? &act_color:NULL);
++      break;
++
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+diff --git a/terminal/terminal-window.c b/terminal/terminal-window.c
+index d62632f..69d58b2 100644
+--- a/terminal/terminal-window.c
++++ b/terminal/terminal-window.c
+@@ -845,8 +845,8 @@ terminal_window_page_notified (GtkNotebook    *notebook,
+       title = terminal_screen_get_title (terminal);
+       gtk_window_set_title (GTK_WINDOW (window), title);
+       g_free (title);
+-
+       terminal_window_update_actions (window);
++      g_object_set (G_OBJECT (terminal), "activity", FALSE, NULL);
+     }
+ }
+ 
+@@ -1022,8 +1022,6 @@ terminal_window_screen_removed (GtkNotebook     *notebook,
+     }
+ }
+ 
+-
+-
+ static void
+ terminal_window_action_new_tab (GtkAction       *action,
+                                 TerminalWindow  *window)
+@@ -1512,11 +1510,13 @@ terminal_window_add (TerminalWindow *window,
+ 
+   header = terminal_tab_header_new ();
+   exo_binding_new (G_OBJECT (screen), "title", G_OBJECT (header), "title");
++  exo_binding_new (G_OBJECT (screen), "activity", G_OBJECT (header), "activity");
+   exo_binding_new (G_OBJECT (window->notebook), "tab-pos", G_OBJECT (header), "tab-pos");
+   g_signal_connect_swapped (G_OBJECT (header), "close-tab", G_CALLBACK (gtk_widget_destroy), screen);
+   g_signal_connect_swapped (G_OBJECT (header), "detach-tab", G_CALLBACK (terminal_window_detach_screen), window);
+   g_signal_connect_swapped (G_OBJECT (header), "set-title", G_CALLBACK (gtk_action_activate), action);
+   g_object_set_data_full (G_OBJECT (header), I_("terminal-window-screen"), g_object_ref (G_OBJECT (screen)), (GDestroyNotify) g_object_unref);
++  g_object_set_data_full (G_OBJECT (screen), I_("terminal-window"), g_object_ref (G_OBJECT (window)), (GDestroyNotify) g_object_unref);
+   gtk_widget_show (header);
+ 
+   page = gtk_notebook_append_page (GTK_NOTEBOOK (window->notebook),
+@@ -1603,6 +1603,29 @@ terminal_window_get_active (TerminalWindow *window)
+     return NULL;
+ }
+ 
++/**
++ * terminal_window_is_screen_active:
++ * @screen : a #TerminalScreen.
++ *
++ * Return value: TRUE if @screen is active.
++ **/
++gboolean 
++terminal_window_is_screen_active (TerminalScreen *screen)
++{
++  TerminalWindow *window = NULL;
++  GtkNotebook    *notebook;
++  gint            page_num;
++  
++  window = g_object_get_data (G_OBJECT (screen), I_("terminal-window"));
++  _terminal_return_val_if_fail (TERMINAL_IS_WINDOW (window), FALSE);
++  notebook = GTK_NOTEBOOK (window->notebook);
++  page_num = gtk_notebook_get_current_page (notebook);
++  if (G_LIKELY (page_num >= 0))
++    return (TERMINAL_SCREEN (gtk_notebook_get_nth_page (notebook, page_num)) == screen);
++  else
++    return FALSE;
++}
++
+ 
+ 
+ /**
+diff --git a/terminal/terminal-window.h b/terminal/terminal-window.h
+index 8546bfa..7923524 100644
+--- a/terminal/terminal-window.h
++++ b/terminal/terminal-window.h
+@@ -23,6 +23,7 @@
+ #define __TERMINAL_WINDOW_H__
+ 
+ #include <terminal/terminal-screen.h>
++#include <terminal/terminal-options.h>
+ 
+ G_BEGIN_DECLS;
+ 
+@@ -67,6 +68,8 @@ void            terminal_window_set_startup_id       (TerminalWindow     *window
+ 
+ GList          *terminal_window_get_restart_command  (TerminalWindow     *window);
+ 
++gboolean        terminal_window_is_screen_active     (TerminalScreen     *screen);
++
+ G_END_DECLS;
+ 
+ #endif /* !__TERMINAL_WINDOW_H__ */




More information about the Pkg-xfce-commits mailing list