[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