]> spindle.queued.net Git - midori/commitdiff
Share net between browser and views
authorChristian Dywan <christian@twotoasts.de>
Mon, 27 Oct 2008 03:23:41 +0000 (04:23 +0100)
committerChristian Dywan <christian@twotoasts.de>
Mon, 27 Oct 2008 03:23:41 +0000 (04:23 +0100)
midori/midori-browser.c
midori/midori-view.c
midori/midori-view.h

index e7b43ee99aa70441df4ff26eb26538419dd2ff48..4ef511c0b202ead75bdc641f51b620480381dbbf 100644 (file)
@@ -1845,7 +1845,7 @@ _action_source_view_activate (GtkAction*     action,
     {
         uri = g_strdup_printf ("view-source:%s",
             midori_view_get_display_uri (MIDORI_VIEW (view)));
-        source_view = midori_view_new ();
+        source_view = midori_view_new (browser->net);
         midori_view_set_settings (MIDORI_VIEW (source_view), browser->settings);
         midori_view_set_uri (MIDORI_VIEW (source_view), uri);
         midori_view_notify_icon_cb (MIDORI_VIEW (source_view), NULL, browser);
@@ -3687,7 +3687,7 @@ midori_browser_init (MidoriBrowser* browser)
                               STOCK_BOOKMARKS, _("Bookmarks"));
 
     /* Transfers */
-    GtkWidget* panel = midori_view_new ();
+    GtkWidget* panel = midori_view_new (browser->net);
     gtk_widget_show (panel);
     midori_panel_append_page (MIDORI_PANEL (browser->panel),
                               panel, NULL,
@@ -3741,7 +3741,7 @@ midori_browser_init (MidoriBrowser* browser)
                               STOCK_HISTORY, _("History"));
 
     /* Pageholder */
-    browser->panel_pageholder = midori_view_new ();
+    browser->panel_pageholder = midori_view_new (browser->net);
     midori_view_set_settings (MIDORI_VIEW (browser->panel_pageholder),
                               browser->settings);
     gtk_widget_show (browser->panel_pageholder);
@@ -4357,8 +4357,7 @@ midori_browser_set_property (GObject*      object,
             g_signal_handlers_disconnect_by_func (browser->settings,
                                                   midori_browser_settings_notify,
                                                   browser);
-        katze_object_assign (browser->settings, g_value_get_object (value));
-        g_object_ref (browser->settings);
+        katze_object_assign (browser->settings, g_value_dup_object (value));
         _midori_browser_update_settings (browser);
         g_signal_connect (browser->settings, "notify",
                       G_CALLBACK (midori_browser_settings_notify), browser);
@@ -4367,8 +4366,7 @@ midori_browser_set_property (GObject*      object,
         break;
     case PROP_BOOKMARKS:
         ; /* FIXME: Disconnect handlers */
-        katze_object_assign (browser->bookmarks, g_value_get_object (value));
-        g_object_ref (browser->bookmarks);
+        katze_object_assign (browser->bookmarks, g_value_dup_object (value));
         g_object_set (_action_by_name (browser, "Bookmarks"), "array",
             browser->bookmarks, NULL);
         midori_browser_load_bookmarks (browser);
@@ -4376,8 +4374,7 @@ midori_browser_set_property (GObject*      object,
         break;
     case PROP_TRASH:
         ; /* FIXME: Disconnect handlers */
-        katze_object_assign (browser->trash, g_value_get_object (value));
-        g_object_ref (browser->trash);
+        katze_object_assign (browser->trash, g_value_dup_object (value));
         g_object_set (_action_by_name (browser, "Trash"), "array",
             browser->trash, NULL);
         /* FIXME: Connect to updates */
@@ -4385,8 +4382,7 @@ midori_browser_set_property (GObject*      object,
         break;
     case PROP_SEARCH_ENGINES:
         ; /* FIXME: Disconnect handlers */
-        katze_object_assign (browser->search_engines, g_value_get_object (value));
-        g_object_ref (browser->search_engines);
+        katze_object_assign (browser->search_engines, g_value_dup_object (value));
         midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION (
             _action_by_name (browser, "Search")), browser->search_engines);
         /* FIXME: Connect to updates */
@@ -4402,8 +4398,7 @@ midori_browser_set_property (GObject*      object,
         break;
     case PROP_HISTORY:
         ; /* FIXME: Disconnect handlers */
-        katze_object_assign (browser->history, g_value_get_object (value));
-        g_object_ref (browser->history);
+        katze_object_assign (browser->history, g_value_dup_object (value));
         midori_browser_load_history (browser);
         g_object_set (_action_by_name (browser, "RecentlyVisited"), "array",
             browser->history, NULL);
index f505f248432cd233cfce7361738938ec6b1b2936..2fa728224f92aa7927ec48692e6d0a7cd20d0e92 100644 (file)
@@ -99,7 +99,8 @@ enum
     PROP_PROGRESS,
     PROP_ZOOM_LEVEL,
     PROP_STATUSBAR_TEXT,
-    PROP_SETTINGS
+    PROP_SETTINGS,
+    PROP_NET
 };
 
 enum {
@@ -418,6 +419,15 @@ midori_view_class_init (MidoriViewClass* class)
                                      "The associated settings",
                                      MIDORI_TYPE_WEB_SETTINGS,
                                      G_PARAM_READWRITE));
+
+    g_object_class_install_property (gobject_class,
+                                     PROP_NET,
+                                     g_param_spec_object (
+                                     "net",
+                                     "Net",
+                                     "The associated net",
+                                     KATZE_TYPE_NET,
+                                     G_PARAM_READWRITE));
 }
 
 static void
@@ -979,21 +989,19 @@ midori_view_finalize (GObject* object)
     g_signal_handlers_disconnect_by_func (view->settings,
         midori_view_settings_notify_cb, view);
 
-    g_free (view->uri);
-    g_free (view->title);
-    if (view->icon)
-        g_object_unref (view->icon);
-    g_free (view->statusbar_text);
-    g_free (view->link_uri);
-    g_free (view->selected_text);
-    if (view->settings)
-        g_object_unref (view->settings);
-    if (view->item)
-        g_object_unref (view->item);
+    katze_assign (view->uri, NULL);
+    katze_assign (view->title, NULL);
+    katze_object_assign (view->icon, NULL);
+    katze_assign (view->statusbar_text, NULL);
+    katze_assign (view->link_uri, NULL);
+    katze_assign (view->selected_text, NULL);
 
-    g_free (view->download_manager);
+    katze_object_assign (view->settings, NULL);
+    katze_object_assign (view->item, NULL);
 
-    g_object_unref (view->net);
+    katze_assign (view->download_manager, NULL);
+
+    katze_object_assign (view->net, NULL);
 
     /* web_frame = webkit_web_view_get_main_frame
         (WEBKIT_WEB_VIEW (view->web_view));
@@ -1039,6 +1047,11 @@ midori_view_set_property (GObject*      object,
     case PROP_SETTINGS:
         midori_view_set_settings (view, g_value_get_object (value));
         break;
+    case PROP_NET:
+        katze_object_assign (view->net, g_value_dup_object (value));
+        if (!view->net)
+            view->net = katze_net_new ();
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -1076,6 +1089,9 @@ midori_view_get_property (GObject*    object,
     case PROP_SETTINGS:
         g_value_set_object (value, view->settings);
         break;
+    case PROP_NET:
+        g_value_set_object (value, view->net);
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -1084,16 +1100,16 @@ midori_view_get_property (GObject*    object,
 
 /**
  * midori_view_new:
- * @view: a #MidoriView
+ * @net: a #KatzeNet
  *
  * Creates a new view.
  *
  * Return value: a new #MidoriView
  **/
 GtkWidget*
-midori_view_new (void)
+midori_view_new (KatzeNet* net)
 {
-    return g_object_new (MIDORI_TYPE_VIEW, NULL);
+    return g_object_new (MIDORI_TYPE_VIEW, "net", net, NULL);
 }
 
 static void
index 02220dbd097f4aa2d0d38b43c8959428bc219a68..13a8c4baba2d10e7869fa50dfe19308059be3d5b 100644 (file)
@@ -51,7 +51,7 @@ GType
 midori_view_get_type                   (void);
 
 GtkWidget*
-midori_view_new                        (void);
+midori_view_new                        (KatzeNet*          net);
 
 void
 midori_view_set_settings               (MidoriView*        view,