[Xfce4-commits] <midori:master> Handle empty tabs due to download links with a target

Christian Dywan noreply at xfce.org
Mon Apr 16 20:02:08 CEST 2012


Updating branch refs/heads/master
         to 7e04c76bce9bafba6833426def5f99c0c851053c (commit)
       from 0b8a080695ea839352f7a040d6caf65a10af4909 (commit)

commit 7e04c76bce9bafba6833426def5f99c0c851053c
Author: Martin Natano <natano at natano.net>
Date:   Mon Apr 16 19:55:09 2012 +0200

    Handle empty tabs due to download links with a target
    
    Fixes: https://bugs.launchpad.net/midori/+bug/973646

 midori/midori-browser.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index a409663..aae2d11 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -1454,10 +1454,24 @@ midori_browser_download_prepare_destination_uri (WebKitDownload* download,
 }
 
 static gboolean
+midori_browser_remove_tab_idle (gpointer view)
+{
+    MidoriBrowser* browser;
+
+    g_return_val_if_fail (GTK_IS_WIDGET (view), FALSE);
+    browser = midori_browser_get_for_widget (GTK_WIDGET (view));
+    midori_browser_remove_tab (browser, GTK_WIDGET (view));
+    return G_SOURCE_REMOVE;
+}
+
+static gboolean
 midori_view_download_requested_cb (GtkWidget*      view,
                                    WebKitDownload* download,
                                    MidoriBrowser*  browser)
 {
+    GtkWidget* web_view;
+    WebKitWebFrame* web_frame;
+    WebKitWebDataSource* datasource;
     gboolean handled;
 
     g_return_val_if_fail (MIDORI_IS_VIEW (view), FALSE);
@@ -1514,6 +1528,13 @@ midori_view_download_requested_cb (GtkWidget*      view,
             g_free (destination_uri);
         }
     }
+
+    /* Close empty tabs due to download links with a target */
+    web_view = midori_view_get_web_view (MIDORI_VIEW (view));
+    web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view));
+    datasource = webkit_web_frame_get_data_source (web_frame);
+    if (midori_view_is_blank (MIDORI_VIEW (view)) && webkit_web_data_source_get_data (datasource) == NULL)
+        g_idle_add (midori_browser_remove_tab_idle, view);
     return handled;
 }
 


More information about the Xfce4-commits mailing list