From 32f71ef5e030af07972d4491d1f7b43deb4b3d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20St=C3=B6sel?= Date: Tue, 9 Aug 2011 19:41:20 +0200 Subject: [PATCH] Flash browser window if new tab opened in background --- midori/midori-browser.c | 21 +++++++++++++++++++++ midori/midori-preferences.c | 2 ++ midori/midori-websettings.c | 18 +++++++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 1858f69e..6b84abd8 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -1240,6 +1240,23 @@ midori_browser_view_copy_history (GtkWidget* view_to, } } +static gint +midori_browser_notify_new_tab_timeout_cb (MidoriBrowser *browser) +{ + gtk_window_set_opacity (GTK_WINDOW (browser), 1); + return 0; +} + +static void +midori_browser_notify_new_tab (MidoriBrowser *browser) +{ + if (katze_object_get_boolean (browser->settings, "flash-window-on-new-bg-tabs")) + { + gtk_window_set_opacity (GTK_WINDOW (browser), 0.8); + gtk_timeout_add (100, (GtkFunction) midori_browser_notify_new_tab_timeout_cb, browser); + } +} + static void midori_view_new_tab_cb (GtkWidget* view, const gchar* uri, @@ -1252,6 +1269,8 @@ midori_view_new_tab_cb (GtkWidget* view, if (!background) midori_browser_set_current_page (browser, n); + else + midori_browser_notify_new_tab (browser); } static void @@ -1287,6 +1306,8 @@ midori_view_new_view_cb (GtkWidget* view, gint n = midori_browser_add_tab (browser, new_view); if (where != MIDORI_NEW_VIEW_BACKGROUND) midori_browser_set_current_page (browser, n); + else + midori_browser_notify_new_tab (browser); } if (!user_initiated) diff --git a/midori/midori-preferences.c b/midori/midori-preferences.c index aee12c2f..4d4a771d 100644 --- a/midori/midori-preferences.c +++ b/midori/midori-preferences.c @@ -393,6 +393,8 @@ midori_preferences_set_settings (MidoriPreferences* preferences, else button = katze_property_proxy (settings, "middle-click-opens-selection", NULL); INDENTED_ADD (button); + button = katze_property_proxy (settings, "flash-window-on-new-bg-tabs", NULL); + SPANNED_ADD (button); FRAME_NEW (NULL); button = katze_property_label (settings, "preferred-languages"); INDENTED_ADD (button); diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c index 73d1aa04..351f3df4 100644 --- a/midori/midori-websettings.c +++ b/midori/midori-websettings.c @@ -90,6 +90,7 @@ struct _MidoriWebSettings gboolean enable_dns_prefetching; #endif gboolean strip_referer; + gboolean flash_window_on_bg_tabs; }; struct _MidoriWebSettingsClass @@ -140,6 +141,7 @@ enum PROP_OPEN_TABS_IN_THE_BACKGROUND, PROP_OPEN_TABS_NEXT_TO_CURRENT, PROP_OPEN_POPUPS_IN_TABS, + PROP_FLASH_WINDOW_ON_BG_TABS, PROP_AUTO_LOAD_IMAGES, PROP_ENABLE_SCRIPTS, @@ -167,7 +169,7 @@ enum PROP_CLEAR_PRIVATE_DATA, PROP_CLEAR_DATA, PROP_ENABLE_DNS_PREFETCHING, - PROP_STRIP_REFERER + PROP_STRIP_REFERER, }; GType @@ -768,6 +770,14 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class) TRUE, flags)); #endif + g_object_class_install_property (gobject_class, + PROP_OPEN_TABS_IN_THE_BACKGROUND, + g_param_spec_boolean ( + "flash-window-on-new-bg-tabs", + _("Flash window on background tabs"), + _("Flash the browser window if a new tab was opened in the background"), + FALSE, + flags)); /** * MidoriWebSettings:zoom-text-and-images: @@ -1385,6 +1395,9 @@ midori_web_settings_set_property (GObject* object, case PROP_STRIP_REFERER: web_settings->strip_referer = g_value_get_boolean (value); break; + case PROP_FLASH_WINDOW_ON_BG_TABS: + web_settings->flash_window_on_bg_tabs = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1634,6 +1647,9 @@ midori_web_settings_get_property (GObject* object, case PROP_STRIP_REFERER: g_value_set_boolean (value, web_settings->strip_referer); break; + case PROP_FLASH_WINDOW_ON_BG_TABS: + g_value_set_boolean (value, web_settings->flash_window_on_bg_tabs); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break;