[Xfce4-commits] <midori:master> Show a notification upon opening a tab or window

Christian Dywan noreply at xfce.org
Tue Apr 19 23:18:01 CEST 2011


Updating branch refs/heads/master
         to a2fc8f405c7aeb97734e7d6ad873790bfdc38ecd (commit)
       from 7152189d825d95871a87147e3a3e4b5b825de9c6 (commit)

commit a2fc8f405c7aeb97734e7d6ad873790bfdc38ecd
Author: Christian Dywan <christian at twotoasts.de>
Date:   Tue Apr 19 23:16:34 2011 +0200

    Show a notification upon opening a tab or window
    
    The notification is shown when in fullscreen mode or the window
    is maximised, and a window is opened or a tab is opened while
    the tab bar is not visible.

 midori/marshal.list     |    2 +-
 midori/midori-browser.c |   21 +++++++++++++++++++--
 midori/midori-view.c    |   14 +++++++++-----
 3 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/midori/marshal.list b/midori/marshal.list
index 10da797..b0808f8 100644
--- a/midori/marshal.list
+++ b/midori/marshal.list
@@ -4,7 +4,7 @@ BOOLEAN:OBJECT,UINT
 BOOLEAN:VOID
 OBJECT:OBJECT
 VOID:BOOLEAN,STRING
-VOID:OBJECT,ENUM
+VOID:OBJECT,ENUM,BOOLEAN
 VOID:OBJECT,INT,INT
 VOID:POINTER,INT
 VOID:STRING,BOOLEAN
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 9234a96..c557179 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -1325,6 +1325,7 @@ static void
 midori_view_new_view_cb (GtkWidget*     view,
                          GtkWidget*     new_view,
                          MidoriNewView  where,
+                         gboolean       user_initiated,
                          MidoriBrowser* browser)
 {
     midori_browser_view_copy_history (new_view, view, TRUE);
@@ -1341,6 +1342,22 @@ midori_view_new_view_cb (GtkWidget*     view,
         if (where != MIDORI_NEW_VIEW_BACKGROUND)
             midori_browser_set_current_page (browser, n);
     }
+
+    if (!user_initiated)
+    {
+        GdkWindow* window = gtk_widget_get_window (GTK_WIDGET (browser));
+        GdkWindowState state = gdk_window_get_state (window);
+        if ((state | GDK_WINDOW_STATE_MAXIMIZED)
+         || (state | GDK_WINDOW_STATE_FULLSCREEN))
+        {
+            if (where == MIDORI_NEW_VIEW_WINDOW)
+                g_signal_emit (browser, signals[SEND_NOTIFICATION], 0,
+                    _("New Window"), _("A new window has been opened"));
+            else if (!browser->show_tabs)
+                g_signal_emit (browser, signals[SEND_NOTIFICATION], 0,
+                    _("New Tab"), _("A new tab has been opened"));
+        }
+    }
 }
 
 #if WEBKIT_CHECK_VERSION (1, 1, 3)
@@ -1817,7 +1834,7 @@ midori_browser_class_init (MidoriBrowserClass* class)
      * @message: the message for the notification
      *
      * Emitted when a browser wants to display a notification message,
-     * e.g. when a download has been completed.
+     * e.g. when a download has been completed or a new tab was opened.
      *
      * Since: 0.1.7
      */
@@ -4544,7 +4561,7 @@ _action_tab_duplicate_activate (GtkAction*     action,
     GtkWidget* new_view = midori_view_new_with_title (
         NULL, browser->settings, FALSE);
     const gchar* uri = midori_view_get_display_uri (MIDORI_VIEW (view));
-    g_signal_emit_by_name (view, "new-view", new_view, where);
+    g_signal_emit_by_name (view, "new-view", new_view, where, TRUE);
     midori_view_set_uri (MIDORI_VIEW (new_view), uri);
 }
 
diff --git a/midori/midori-view.c b/midori/midori-view.c
index ade06f8..6de6f74 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -337,12 +337,15 @@ midori_view_class_init (MidoriViewClass* class)
      * @view: the object on which the signal is emitted
      * @new_view: a newly created view
      * @where: where to open the view
+     * @user_initiated: %TRUE if the user actively opened the new view
      *
      * Emitted when a new view is created. The value of
      * @where determines where to open the view according
      * to how it was opened and user preferences.
      *
      * Since: 0.1.2
+     *
+     * Since 0.3.4 a boolean argument was added.
      */
     signals[NEW_VIEW] = g_signal_new (
         "new-view",
@@ -351,10 +354,11 @@ midori_view_class_init (MidoriViewClass* class)
         0,
         0,
         NULL,
-        midori_cclosure_marshal_VOID__OBJECT_ENUM,
-        G_TYPE_NONE, 2,
+        midori_cclosure_marshal_VOID__OBJECT_ENUM_BOOLEAN,
+        G_TYPE_NONE, 3,
         MIDORI_TYPE_VIEW,
-        MIDORI_TYPE_NEW_VIEW);
+        MIDORI_TYPE_NEW_VIEW,
+        G_TYPE_BOOLEAN);
 
     /**
      * MidoriView::download-requested:
@@ -2885,7 +2889,7 @@ webkit_web_view_web_view_ready_cb (GtkWidget*  web_view,
         where = MIDORI_NEW_VIEW_WINDOW;
 
     gtk_widget_show (new_view);
-    g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where);
+    g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where, FALSE);
 
     return TRUE;
 }
@@ -4607,7 +4611,7 @@ midori_view_tab_label_menu_duplicate_tab_cb (GtkWidget*  menuitem,
     GtkWidget* new_view = midori_view_new_with_title (
         NULL, view->settings, FALSE);
     const gchar* uri = midori_view_get_display_uri (MIDORI_VIEW (view));
-    g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where);
+    g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where, TRUE);
     midori_view_set_uri (MIDORI_VIEW (new_view), uri);
 }
 



More information about the Xfce4-commits mailing list