]> spindle.queued.net Git - midori/commitdiff
Show a notification upon opening a tab or window
authorChristian Dywan <christian@twotoasts.de>
Tue, 19 Apr 2011 21:16:34 +0000 (23:16 +0200)
committerChristian Dywan <christian@twotoasts.de>
Tue, 19 Apr 2011 21:16:34 +0000 (23:16 +0200)
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
midori/midori-browser.c
midori/midori-view.c

index 10da7979a7a37dcdb7223c609388fdfecec426e4..b0808f8aefb4024ae0f21ed1888724936530e823 100644 (file)
@@ -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
index 9234a966b88df326e2384f5294d5ba6b994636d6..c557179a16677b1e67532ac6ccb0fe87719e6c21 100644 (file)
@@ -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);
 }
 
index ade06f86a5b2d822dfac96f8c2223c6c55371c0f..6de6f74b0a54a26773741fc2a4c2e7bf2a550149 100644 (file)
@@ -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);
 }