[gnome-terminal/f22] Withdraw the notification on focus-in-event
Debarshi Ray
rishi at fedoraproject.org
Mon Mar 16 14:18:35 UTC 2015
commit 7ed60bd072a5d61db64f226a07819c60ab8f84d4
Author: Debarshi Ray <debarshir at gnome.org>
Date: Mon Mar 16 15:16:27 2015 +0100
Withdraw the notification on focus-in-event
gnome-terminal-command-notify.patch | 130 ++++++++++++++++++++++++------------
gnome-terminal.spec | 5 +-
2 files changed, 91 insertions(+), 44 deletions(-)
---
diff --git a/gnome-terminal-command-notify.patch b/gnome-terminal-command-notify.patch
index 6a1e09d..c535dca 100644
--- a/gnome-terminal-command-notify.patch
+++ b/gnome-terminal-command-notify.patch
@@ -1,19 +1,18 @@
-From 2cfb5a8b205c61f773d5d438842b829ef3fcc220 Mon Sep 17 00:00:00 2001
+From 94b29611359d0d8510876be531825ec2edf44e09 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir at gnome.org>
Date: Tue, 27 Jan 2015 18:40:13 +0100
Subject: [PATCH 1/3] Support desktop notifications from OSC 777
https://bugzilla.gnome.org/show_bug.cgi?id=711059
---
- src/terminal-app.c | 32 +++++++++++++++++++++++
- src/terminal-notebook.c | 4 +++
- src/terminal-screen.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
- src/terminal-tab-label.c | 28 +++++++++++++++++++-
- src/terminal-tab-label.h | 4 +++
- 5 files changed, 135 insertions(+), 1 deletion(-)
+ src/terminal-app.c | 32 ++++++++++++++
+ src/terminal-screen.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++
+ src/terminal-tab-label.c | 28 +++++++++++-
+ src/terminal-tab-label.h | 4 ++
+ 4 files changed, 171 insertions(+), 1 deletion(-)
diff --git a/src/terminal-app.c b/src/terminal-app.c
-index 95302c5..ae2043e 100644
+index 94fa35b..de74532 100644
--- a/src/terminal-app.c
+++ b/src/terminal-app.c
@@ -299,6 +299,31 @@ app_menu_quit_cb (GSimpleAction *action,
@@ -69,30 +68,8 @@ index 95302c5..ae2043e 100644
builder = gtk_builder_new ();
gtk_builder_add_from_resource (builder,
-diff --git a/src/terminal-notebook.c b/src/terminal-notebook.c
-index d855a7b..31f2771 100644
---- a/src/terminal-notebook.c
-+++ b/src/terminal-notebook.c
-@@ -243,6 +243,7 @@ terminal_notebook_switch_page (GtkNotebook *gtk_notebook,
- {
- TerminalNotebook *notebook = TERMINAL_NOTEBOOK (gtk_notebook);
- TerminalNotebookPrivate *priv = notebook->priv;
-+ GtkWidget *tab_label;
- TerminalScreen *screen, *old_active_screen;
-
- GTK_NOTEBOOK_CLASS (terminal_notebook_parent_class)->switch_page (gtk_notebook, child, page_num);
-@@ -253,6 +254,9 @@ terminal_notebook_switch_page (GtkNotebook *gtk_notebook,
- if (screen == old_active_screen)
- return;
-
-+ tab_label = gtk_notebook_get_tab_label (gtk_notebook, child);
-+ terminal_tab_label_set_icon (TERMINAL_TAB_LABEL (tab_label), NULL, NULL);
-+
- /* Workaround to remove gtknotebook's feature of computing its size based on
- * all pages. When the widget is hidden, its size will not be taken into
- * account.
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
-index 62c9f5e..78b9d43 100644
+index df3fdde..bb139e3 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -48,6 +48,7 @@
@@ -111,7 +88,14 @@ index 62c9f5e..78b9d43 100644
int child_pid;
GSList *match_tags;
guint launch_child_source_id;
-@@ -136,6 +138,9 @@ static gboolean terminal_screen_do_exec (TerminalScreen *screen,
+@@ -131,11 +133,16 @@ static void terminal_screen_system_font_changed_cb (GSettings *,
+ static gboolean terminal_screen_popup_menu (GtkWidget *widget);
+ static gboolean terminal_screen_button_press (GtkWidget *widget,
+ GdkEventButton *event);
++static gboolean terminal_screen_focus_in (GtkWidget *widget,
++ GdkEventFocus *event);
+ static gboolean terminal_screen_do_exec (TerminalScreen *screen,
+ FDSetupData *data,
GError **error);
static void terminal_screen_child_exited (VteTerminal *terminal,
int status);
@@ -121,7 +105,14 @@ index 62c9f5e..78b9d43 100644
static void terminal_screen_window_title_changed (VteTerminal *vte_terminal,
TerminalScreen *screen);
-@@ -440,6 +445,7 @@ terminal_screen_class_init (TerminalScreenClass *klass)
+@@ -434,12 +441,14 @@ terminal_screen_class_init (TerminalScreenClass *klass)
+ object_class->get_property = terminal_screen_get_property;
+ object_class->set_property = terminal_screen_set_property;
+
++ widget_class->focus_in_event = terminal_screen_focus_in;
+ widget_class->realize = terminal_screen_realize;
+ widget_class->drag_data_received = terminal_screen_drag_data_received;
+ widget_class->button_press_event = terminal_screen_button_press;
widget_class->popup_menu = terminal_screen_popup_menu;
terminal_class->child_exited = terminal_screen_child_exited;
@@ -129,7 +120,7 @@ index 62c9f5e..78b9d43 100644
signals[PROFILE_SET] =
g_signal_new (I_("profile-set"),
-@@ -561,6 +567,10 @@ terminal_screen_dispose (GObject *object)
+@@ -561,6 +570,10 @@ terminal_screen_dispose (GObject *object)
TerminalScreen *screen = TERMINAL_SCREEN (object);
TerminalScreenPrivate *priv = screen->priv;
GtkSettings *settings;
@@ -140,7 +131,51 @@ index 62c9f5e..78b9d43 100644
settings = gtk_widget_get_settings (GTK_WIDGET (screen));
g_signal_handlers_disconnect_matched (settings, G_SIGNAL_MATCH_DATA,
-@@ -1623,6 +1633,64 @@ terminal_screen_child_exited (VteTerminal *terminal,
+@@ -1502,6 +1515,43 @@ terminal_screen_button_press (GtkWidget *widget,
+ return FALSE;
+ }
+
++static gboolean
++terminal_screen_focus_in (GtkWidget *widget,
++ GdkEventFocus *event)
++{
++ TerminalScreen *screen = TERMINAL_SCREEN (widget);
++ TerminalApp *app;
++ TerminalWindow *window;
++
++ window = terminal_screen_get_window (screen);
++ if (window != NULL)
++ {
++ TerminalScreenContainer *screen_container;
++
++ screen_container = terminal_screen_container_get_from_screen (screen);
++ if (screen_container != NULL)
++ {
++ GtkWidget *mdi_container;
++
++ mdi_container = terminal_window_get_mdi_container (window);
++ /* FIXME: add interface method to retrieve tab label */
++ if (GTK_IS_NOTEBOOK (mdi_container))
++ {
++ GtkWidget *tab_label;
++
++ tab_label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (mdi_container), GTK_WIDGET (screen_container));
++ terminal_tab_label_set_bold (TERMINAL_TAB_LABEL (tab_label), FALSE);
++ terminal_tab_label_set_icon (TERMINAL_TAB_LABEL (tab_label), NULL, NULL);
++ }
++ }
++ }
++
++ app = terminal_app_get ();
++ g_application_withdraw_notification (G_APPLICATION (app), screen->priv->uuid);
++
++ return GTK_WIDGET_CLASS (terminal_screen_parent_class)->focus_in_event (widget, event);
++}
++
+ /**
+ * terminal_screen_get_current_dir:
+ * @screen:
+@@ -1603,6 +1653,64 @@ terminal_screen_child_exited (VteTerminal *terminal,
}
static void
@@ -284,7 +319,7 @@ index 20cfbce..a987025 100644
2.1.0
-From a3413cd8453351cdb1fbe0e54166d5e326b27091 Mon Sep 17 00:00:00 2001
+From 261c88d13ede50b165aaef859f2f95660dc6c965 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir at gnome.org>
Date: Tue, 27 Jan 2015 19:04:19 +0100
Subject: [PATCH 2/3] Make notifications based on org.gtk.Notification work
@@ -517,7 +552,7 @@ index b6506f2..1b9f81c 100644
2.1.0
-From d65d9045e4458fc27a5a08450c07c8ac1fa29178 Mon Sep 17 00:00:00 2001
+From acd11f2b16e6fffebcb881a447b37913a960a324 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir at gnome.org>
Date: Thu, 29 Jan 2015 11:47:21 +0100
Subject: [PATCH 3/3] Sprinkle debug messages for notifications
@@ -529,8 +564,8 @@ https://bugzilla.gnome.org/show_bug.cgi?id=711059
---
src/terminal-debug.c | 1 +
src/terminal-debug.h | 3 ++-
- src/terminal-screen.c | 4 ++++
- 3 files changed, 7 insertions(+), 1 deletion(-)
+ src/terminal-screen.c | 6 ++++++
+ 3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/terminal-debug.c b/src/terminal-debug.c
index 0ff321f..dac79c3 100644
@@ -559,10 +594,19 @@ index 5dc3ca4..7499ebe 100644
void _terminal_debug_init(void);
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
-index 78b9d43..3845b10 100644
+index bb139e3..cd12ab9 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
-@@ -1641,6 +1641,8 @@ terminal_screen_notification_received (VteTerminal *terminal,
+@@ -1523,6 +1523,8 @@ terminal_screen_focus_in (GtkWidget *widget,
+ TerminalApp *app;
+ TerminalWindow *window;
+
++ _terminal_debug_print (TERMINAL_DEBUG_NOTIFICATIONS, "Notification withdrawn\n");
++
+ window = terminal_screen_get_window (screen);
+ if (window != NULL)
+ {
+@@ -1661,6 +1663,8 @@ terminal_screen_notification_received (VteTerminal *terminal,
TerminalScreenPrivate *priv = screen->priv;
TerminalWindow *window;
@@ -571,7 +615,7 @@ index 78b9d43..3845b10 100644
if (G_UNLIKELY (!priv->shell_prompt_shown))
{
priv->shell_prompt_shown = TRUE;
-@@ -1672,6 +1674,7 @@ terminal_screen_notification_received (VteTerminal *terminal,
+@@ -1692,6 +1696,7 @@ terminal_screen_notification_received (VteTerminal *terminal,
tab_label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (mdi_container), GTK_WIDGET (screen_container));
terminal_tab_label_set_bold (TERMINAL_TAB_LABEL (tab_label), TRUE);
terminal_tab_label_set_icon (TERMINAL_TAB_LABEL (tab_label), "dialog-information-symbolic", summary);
@@ -579,7 +623,7 @@ index 78b9d43..3845b10 100644
}
}
else
-@@ -1687,6 +1690,7 @@ terminal_screen_notification_received (VteTerminal *terminal,
+@@ -1707,6 +1712,7 @@ terminal_screen_notification_received (VteTerminal *terminal,
app = terminal_app_get ();
g_application_send_notification (G_APPLICATION (app), priv->uuid, notification);
diff --git a/gnome-terminal.spec b/gnome-terminal.spec
index fe0f29f..c0a499e 100644
--- a/gnome-terminal.spec
+++ b/gnome-terminal.spec
@@ -8,7 +8,7 @@
Summary: Terminal emulator for GNOME
Name: gnome-terminal
Version: 3.15.90
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv3+ and GFDL
Group: User Interface/Desktops
URL: http://www.gnome.org/
@@ -109,6 +109,9 @@ fi
%{_libdir}/nautilus/extensions-3.0/libterminal-nautilus.so
%changelog
+* Mon Mar 16 2015 Debarshi Ray <rishi at fedoraproject.org> - 3.15.90-2
+- Withdraw the notification on focus-in-event
+
* Wed Feb 18 2015 Debarshi Ray <rishi at fedoraproject.org> - 3.15.90-1
- Update to 3.15.90
- Restore translations for transparency strings
More information about the scm-commits
mailing list