]> spindle.queued.net Git - midori/commitdiff
Introduce midori_view_get_for_widget
authorChristian Dywan <christian@twotoasts.de>
Sun, 25 Mar 2012 17:35:58 +0000 (19:35 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sun, 25 Mar 2012 17:35:58 +0000 (19:35 +0200)
Analogous to midori_browser_get_for_widget.

midori/midori-browser.c
midori/midori-view.c
midori/midori-view.h

index 5501679722efbb2949a8c9da7f0bc8a336890680..0692d7107607aad1fac2bb5a7c239fff88593026 100644 (file)
@@ -1780,8 +1780,8 @@ midori_browser_key_press_event (GtkWidget*   widget,
           && !webkit_web_view_can_paste_clipboard (WEBKIT_WEB_VIEW (focus)))
     {
         /* Space at the bottom of the page: Go to next page */
+        MidoriView* view = midori_view_get_for_widget (focus);
         GtkScrolledWindow* scrolled = GTK_SCROLLED_WINDOW (gtk_widget_get_parent (focus));
-        MidoriView* view = MIDORI_VIEW (gtk_widget_get_parent (GTK_WIDGET (scrolled)));
         GtkAdjustment* vadjust = gtk_scrolled_window_get_vadjustment (scrolled);
         if (gtk_adjustment_get_value (vadjust)
          == (gtk_adjustment_get_upper (vadjust) - gtk_adjustment_get_page_size (vadjust)))
index 4a9fb4ca04fee361e3abc7962acbc08c2696dec0..e985aec4454a6429854a98bd840d437e2d379e76 100644 (file)
@@ -2793,12 +2793,8 @@ static gboolean
 webkit_web_view_web_view_ready_cb (GtkWidget*  web_view,
                                    MidoriView* view)
 {
-    #if GTK_CHECK_VERSION(3, 2, 0)
-    GtkWidget* new_view = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (web_view)));
-    #else
-    GtkWidget* new_view = gtk_widget_get_parent (gtk_widget_get_parent (web_view));
-    #endif
     MidoriNewView where = MIDORI_NEW_VIEW_TAB;
+    GtkWidget* new_view = GTK_WIDGET (midori_view_get_for_widget (web_view));
 
     /* FIXME: Open windows opened by scripts in tabs if they otherwise
         would be replacing the page the user opened. */
@@ -5814,6 +5810,29 @@ midori_view_get_web_view        (MidoriView*        view)
     return view->web_view;
 }
 
+/**
+ * midori_view_get_for_widget:
+ * @widget: a #GtkWidget
+ *
+ * Determines the view appropriate for the specified widget.
+ *
+ * Return value: a #MidoriView
+ *
+ * Since 0.4.5
+ **/
+MidoriView*
+midori_view_get_for_widget (GtkWidget* web_view)
+{
+    GtkWidget* scrolled = gtk_widget_get_parent (web_view);
+    #if GTK_CHECK_VERSION(3, 2, 0)
+    GtkWidget* overlay = gtk_widget_get_parent (scrolled);
+    GtkWidget* view = gtk_widget_get_parent (overlay);
+    #else
+    GtkWidget* view = gtk_widget_get_parent (scrolled);
+    #endif
+    return MIDORI_VIEW (view);
+}
+
 /**
  * midori_view_get_security
  * @view: a #MidoriView
index 837f424d54146f1d4a738c2272fa2929113619dd..feba0526507704015ee9a67dc2b547999c382bcb 100644 (file)
@@ -248,6 +248,9 @@ midori_view_get_snapshot               (MidoriView*        view,
 GtkWidget*
 midori_view_get_web_view               (MidoriView*        view);
 
+MidoriView*
+midori_view_get_for_widget             (GtkWidget*         web_view);
+
 MidoriSecurity
 midori_view_get_security               (MidoriView*        view);