diff options
123 files changed, 740 insertions, 466 deletions
@@ -1,3 +1,184 @@ +2000-09-25 Darin Adler <darin@eazel.com> + + Fixed bug bug 3264 (Tree view shows no branches for directories, + ...HACK... nodes visible), bug 3290 (changing directory or + refreshing causes Gdk to assert), bug 2420 (Need to free original + key when removing model node), and other assorted problems. + + * components/tree/nautilus-tree-view.c: (insert_hack_node), + (remove_hack_node), (nautilus_tree_view_insert_model_node): + Fix problem where the hash table key was neither g_strdup'd on the + way in, nor g_free'd on the way out. This caused all the problems + with bad nesting in the tree view. + + * nautilus-installer/src/installer.c: (create_pixmap): + * src/file-manager/fm-list-view.c: (install_row_images): + * src/nautilus-theme-selector.c: (add_theme): + Added more checks for NULL before calling gdk_bitmap_unref. + + * src/file-manager/fm-directory-view.c: (no_items_showing): + Fixed a NautilusDirectory ref. count leak. + + * libnautilus-extensions/nautilus-font-factory.c: + (unref_global_font_factory), (nautilus_get_current_font_factory): + Unref the font factory on exit. + (nautilus_font_factory_initialize_class), (font_hash_node_free), + (free_one_hash_node), (destroy): Added code to actually destroy + the font factory. + (unref_fixed_font), (nautilus_font_factory_get_fallback_font): + Unref the fixed font on exit. + * libnautilus-extensions/nautilus-volume-monitor.c: + (unref_global_volume_monitor), (nautilus_volume_monitor_get): + Unref the volume monitor on exit. + * src/nautilus-signaller.c: (unref_global_signaller), + (nautilus_signaller_get_current): Unref the signaller on exit. + + * src/nautilus-component-adapter-factory.c: + (nautilus_component_adapter_factory_initialize): Replaced some + strange FIXMEs with a simpler one. + (nautilus_component_adapter_factory_destroy): Fix a CORBA object + reference leak. + (nautilus_component_adapter_factory_get): Did a ref/sink. + + * components/adapter/nautilus-adapter-control-embed-strategy.c: + (nautilus_adapter_control_embed_strategy_new): + * components/adapter/nautilus-adapter-embeddable-embed-strategy.c: + (nautilus_adapter_embeddable_embed_strategy_new): + * components/adapter/nautilus-adapter-file-load-strategy.c: + (nautilus_adapter_file_load_strategy_new): + * components/adapter/nautilus-adapter-progressive-load-strategy.c: + (nautilus_adapter_progressive_load_strategy_new): + * components/adapter/nautilus-adapter-stream-load-strategy.c: + (nautilus_adapter_stream_load_strategy_new): + * components/adapter/nautilus-adapter.c: (nautilus_adapter_new): + * components/rpmview/nautilus-rpm-verify-window.c: + (nautilus_rpm_verify_window_new): + * components/services/install/lib/eazel-install-object.c: + (eazel_install_new), (eazel_install_new_with_config): + * components/services/time/service/trilobite-eazel-time-service.c: + (trilobite_eazel_time_service_new): + * components/services/trilobite/libtrilobite/trilobite-service-pass + wordquery.c: (trilobite_passwordquery_new): + * components/services/trilobite/libtrilobite/trilobite-service.c: + (trilobite_service_new): + * components/tree/nautilus-tree-expansion-state.c: + (nautilus_tree_expansion_state_new): + * components/tree/nautilus-tree-model.c: (nautilus_tree_model_new): + * components/tree/nautilus-tree-node.c: (nautilus_tree_node_new): + * cut-n-paste-code/widgets/e-paned/e-hpaned.c: (e_hpaned_new): + * cut-n-paste-code/widgets/e-paned/e-vpaned.c: (e_vpaned_new): + * libnautilus-extensions/bonobo-stream-vfs.c: + (bonobo_stream_create): + * libnautilus-extensions/nautilus-any-width-bin.c: + (nautilus_any_width_bin_new): + * libnautilus-extensions/nautilus-background.c: + (nautilus_background_new): + * libnautilus-extensions/nautilus-bookmark.c: + (nautilus_bookmark_new_with_icon): + * libnautilus-extensions/nautilus-caption-table.c: + (nautilus_caption_table_new): + * libnautilus-extensions/nautilus-caption.c: + (nautilus_caption_new): + * libnautilus-extensions/nautilus-directory.c: + (nautilus_directory_new): + * libnautilus-extensions/nautilus-druid-page-eazel.c: + (nautilus_druid_page_eazel_new), + (nautilus_druid_page_eazel_new_with_vals): + * libnautilus-extensions/nautilus-druid.c: (nautilus_druid_new): + * libnautilus-extensions/nautilus-entry.c: (nautilus_entry_new): + * libnautilus-extensions/nautilus-file-operations-progress.c: + (nautilus_file_operations_progress_new): + * libnautilus-extensions/nautilus-file.c: + (nautilus_file_new_from_name), (nautilus_file_new_from_info): + * libnautilus-extensions/nautilus-font-picker.c: + (nautilus_font_picker_new): + * libnautilus-extensions/nautilus-horizontal-splitter.c: + (nautilus_horizontal_splitter_new): + * libnautilus-extensions/nautilus-icon-container.c: + (nautilus_icon_container_new): + * libnautilus-extensions/nautilus-icon-factory.c: + (get_icon_factory): + * libnautilus-extensions/nautilus-image.c: (nautilus_image_new): + * libnautilus-extensions/nautilus-keep-last-vertical-box.c: + (nautilus_keep_last_vertical_box_new): + * libnautilus-extensions/nautilus-label.c: (nautilus_label_new): + * libnautilus-extensions/nautilus-list-column-title.c: + (nautilus_list_column_title_new): + * libnautilus-extensions/nautilus-list.c: + (nautilus_list_new_with_titles): + * libnautilus-extensions/nautilus-password-dialog.c: + (nautilus_password_dialog_new): + * libnautilus-extensions/nautilus-preference.c: + (nautilus_preference_new_from_type): + * libnautilus-extensions/nautilus-preferences-box.c: + (nautilus_preferences_box_new): + * libnautilus-extensions/nautilus-preferences-dialog.c: + (nautilus_preferences_dialog_new): + * libnautilus-extensions/nautilus-preferences-group.c: + (nautilus_preferences_group_new): + * libnautilus-extensions/nautilus-preferences-item.c: + (nautilus_preferences_item_new): + * libnautilus-extensions/nautilus-preferences-pane.c: + (nautilus_preferences_pane_new): + * libnautilus-extensions/nautilus-radio-button-group.c: + (nautilus_radio_button_group_new): + * libnautilus-extensions/nautilus-scalable-font.c: + (nautilus_scalable_font_new): + * libnautilus-extensions/nautilus-string-picker.c: + (nautilus_string_picker_new): + * libnautilus-extensions/nautilus-text-caption.c: + (nautilus_text_caption_new): + * libnautilus-extensions/nautilus-undo-context.c: + (nautilus_undo_context_new): + * libnautilus-extensions/nautilus-undo-manager.c: + (nautilus_undo_manager_new): + * libnautilus-extensions/nautilus-user-level-manager.c: + (user_level_manager_new): + * libnautilus/nautilus-undo-transaction.c: + (nautilus_undo_transaction_new): + * libnautilus/nautilus-view.c: + (nautilus_view_new_from_bonobo_control): + * src/file-manager/nautilus-trash-monitor.c: + (nautilus_trash_monitor_get): + * src/nautilus-desktop-window.c: (nautilus_desktop_window_new): + * src/nautilus-property-browser.c: (nautilus_property_browser_new): + * src/nautilus-shell.c: (nautilus_shell_new): + * src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_new): + * src/nautilus-sidebar-title.c: (nautilus_sidebar_title_new): + * src/nautilus-sidebar.c: (nautilus_sidebar_create_context_menu), + (nautilus_sidebar_new): + * src/nautilus-theme-selector.c: (nautilus_theme_selector_new): + * src/nautilus-throbber.c: (nautilus_throbber_new): + * src/nautilus-view-frame.c: (nautilus_view_frame_new): + * src/nautilus-zoom-control.c: (nautilus_zoom_control_new): + * src/nautilus-about.c: (nautilus_about_new): + * src/nautilus-application.c: (nautilus_application_new), + (nautilus_application_create_window): + * src/nautilus-bookmark-list.c: (nautilus_bookmark_list_new): + After Tim Janik explained that gtk_type_new is a low-level call to + be avoided, changed most uses of gtk_type_new to gtk_object_new or + gtk_widget_new. Also, after Owen and Havoc explained that you + can't just ignore the floating bit, added ref/sink calls to the + functions used to create objects where we don't use the floating + scheme. + + * src/nautilus-zoom-control.c: + (nautilus_zoom_control_button_press_event): Take advantage of the + fact that the new menu is floating and don't bother with ref'ing. + + * libnautilus-extensions/nautilus-ctree.c: + (nautilus_ctree_new_with_titles): + Added a cast. + + * components/adapter/main.c: (adapter_factory_make_object): + * components/hardware/main.c: (hardware_view_make_object): + * components/services/install/lib/eazel-install-corba-callback.c: + (eazel_install_callback_get_type), (eazel_install_callback_new): + * libnautilus-extensions/nautilus-theme.c: + (nautilus_theme_get_theme), (nautilus_theme_set_theme), + (nautilus_theme_get_theme_data): + Whitespace tweaks. + 2000-09-25 Andy Hertzfeld <andy@eazel.com> * libnautilus-extensions/nautilus-icon-canvas-item.c: diff --git a/components/adapter/bonobo-stream-vfs.c b/components/adapter/bonobo-stream-vfs.c index ef4b9896c..da7a9794c 100644 --- a/components/adapter/bonobo-stream-vfs.c +++ b/components/adapter/bonobo-stream-vfs.c @@ -346,7 +346,7 @@ bonobo_stream_create (GnomeVFSHandle *fd) Bonobo_Stream corba_stream; CORBA_Environment ev; - stream_vfs = gtk_type_new (bonobo_stream_vfs_get_type ()); + stream_vfs = BONOBO_STREAM_VFS (gtk_object_new (bonobo_stream_vfs_get_type (), NULL)); stream_vfs->fd = fd; diff --git a/components/adapter/main.c b/components/adapter/main.c index 801c76afc..a9ec391ed 100644 --- a/components/adapter/main.c +++ b/components/adapter/main.c @@ -39,8 +39,6 @@ #include <libgnomevfs/gnome-vfs-init.h> #define META_FACTORY_IID "OAFIID:nautilus_adapter_factory_generic_factory:8e62e106-807d-4d37-b14a-00dc82ecf88f" - - #define FACTORY_OBJECT_IID "OAFIID:nautilus_adapter_factory:fd24ecfc-0a6e-47ab-bc53-69d7487c6ad4" static int object_count = 0; @@ -81,7 +79,6 @@ adapter_factory_make_object (BonoboGenericFactory *factory, */ adapter = NAUTILUS_ADAPTER_FACTORY_SERVER (gtk_object_new (NAUTILUS_TYPE_ADAPTER_FACTORY_SERVER, NULL)); - /* Connect a handler that will get us out of the main loop * when there are no more objects outstanding. */ diff --git a/components/adapter/nautilus-adapter-control-embed-strategy.c b/components/adapter/nautilus-adapter-control-embed-strategy.c index cb573125f..7753e9cbf 100644 --- a/components/adapter/nautilus-adapter-control-embed-strategy.c +++ b/components/adapter/nautilus-adapter-control-embed-strategy.c @@ -119,7 +119,9 @@ nautilus_adapter_control_embed_strategy_new (Bonobo_Control control, { NautilusAdapterControlEmbedStrategy *strategy; - strategy = NAUTILUS_ADAPTER_CONTROL_EMBED_STRATEGY (gtk_type_new (NAUTILUS_TYPE_ADAPTER_CONTROL_EMBED_STRATEGY)); + strategy = NAUTILUS_ADAPTER_CONTROL_EMBED_STRATEGY (gtk_object_new (NAUTILUS_TYPE_ADAPTER_CONTROL_EMBED_STRATEGY, NULL)); + gtk_object_ref (GTK_OBJECT (strategy)); + gtk_object_sink (GTK_OBJECT (strategy)); strategy->details->control = control; strategy->details->control_frame = bonobo_control_frame_new(uih); diff --git a/components/adapter/nautilus-adapter-control-factory-embed-strategy.c b/components/adapter/nautilus-adapter-control-factory-embed-strategy.c index fef3d7297..4858427f2 100644 --- a/components/adapter/nautilus-adapter-control-factory-embed-strategy.c +++ b/components/adapter/nautilus-adapter-control-factory-embed-strategy.c @@ -124,7 +124,9 @@ nautilus_adapter_embeddable_embed_strategy_new (Bonobo_Embeddable embeddable, { NautilusAdapterEmbeddableEmbedStrategy *strategy; - strategy = NAUTILUS_ADAPTER_EMBEDDABLE_EMBED_STRATEGY (gtk_type_new (NAUTILUS_TYPE_ADAPTER_EMBEDDABLE_EMBED_STRATEGY)); + strategy = NAUTILUS_ADAPTER_EMBEDDABLE_EMBED_STRATEGY (gtk_object_new (NAUTILUS_TYPE_ADAPTER_EMBEDDABLE_EMBED_STRATEGY, NULL)); + gtk_object_ref (GTK_OBJECT (strategy)); + gtk_object_sink (GTK_OBJECT (strategy)); strategy->details->embeddable_wrapper = bonobo_object_client_from_corba (embeddable); diff --git a/components/adapter/nautilus-adapter-embeddable-embed-strategy.c b/components/adapter/nautilus-adapter-embeddable-embed-strategy.c index fef3d7297..4858427f2 100644 --- a/components/adapter/nautilus-adapter-embeddable-embed-strategy.c +++ b/components/adapter/nautilus-adapter-embeddable-embed-strategy.c @@ -124,7 +124,9 @@ nautilus_adapter_embeddable_embed_strategy_new (Bonobo_Embeddable embeddable, { NautilusAdapterEmbeddableEmbedStrategy *strategy; - strategy = NAUTILUS_ADAPTER_EMBEDDABLE_EMBED_STRATEGY (gtk_type_new (NAUTILUS_TYPE_ADAPTER_EMBEDDABLE_EMBED_STRATEGY)); + strategy = NAUTILUS_ADAPTER_EMBEDDABLE_EMBED_STRATEGY (gtk_object_new (NAUTILUS_TYPE_ADAPTER_EMBEDDABLE_EMBED_STRATEGY, NULL)); + gtk_object_ref (GTK_OBJECT (strategy)); + gtk_object_sink (GTK_OBJECT (strategy)); strategy->details->embeddable_wrapper = bonobo_object_client_from_corba (embeddable); diff --git a/components/adapter/nautilus-adapter-file-load-strategy.c b/components/adapter/nautilus-adapter-file-load-strategy.c index f4eb4d073..f93cc4cf7 100644 --- a/components/adapter/nautilus-adapter-file-load-strategy.c +++ b/components/adapter/nautilus-adapter-file-load-strategy.c @@ -107,7 +107,9 @@ nautilus_adapter_file_load_strategy_new (Bonobo_PersistFile persist_file, { NautilusAdapterFileLoadStrategy *strategy; - strategy = NAUTILUS_ADAPTER_FILE_LOAD_STRATEGY (gtk_type_new (NAUTILUS_TYPE_ADAPTER_FILE_LOAD_STRATEGY)); + strategy = NAUTILUS_ADAPTER_FILE_LOAD_STRATEGY (gtk_object_new (NAUTILUS_TYPE_ADAPTER_FILE_LOAD_STRATEGY, NULL)); + gtk_object_ref (GTK_OBJECT (strategy)); + gtk_object_sink (GTK_OBJECT (strategy)); strategy->details->persist_file = persist_file; strategy->details->nautilus_view = view; diff --git a/components/adapter/nautilus-adapter-progressive-load-strategy.c b/components/adapter/nautilus-adapter-progressive-load-strategy.c index a97567f03..12bad24c3 100644 --- a/components/adapter/nautilus-adapter-progressive-load-strategy.c +++ b/components/adapter/nautilus-adapter-progressive-load-strategy.c @@ -108,7 +108,9 @@ nautilus_adapter_progressive_load_strategy_new (Bonobo_ProgressiveDataSink prog { NautilusAdapterProgressiveLoadStrategy *strategy; - strategy = NAUTILUS_ADAPTER_PROGRESSIVE_LOAD_STRATEGY (gtk_type_new (NAUTILUS_TYPE_ADAPTER_PROGRESSIVE_LOAD_STRATEGY)); + strategy = NAUTILUS_ADAPTER_PROGRESSIVE_LOAD_STRATEGY (gtk_object_new (NAUTILUS_TYPE_ADAPTER_PROGRESSIVE_LOAD_STRATEGY, NULL)); + gtk_object_ref (GTK_OBJECT (strategy)); + gtk_object_sink (GTK_OBJECT (strategy)); strategy->details->progressive_data_sink = progressive_data_sink; strategy->details->nautilus_view = view; diff --git a/components/adapter/nautilus-adapter-stream-load-strategy.c b/components/adapter/nautilus-adapter-stream-load-strategy.c index 576b1a30a..c1f805784 100644 --- a/components/adapter/nautilus-adapter-stream-load-strategy.c +++ b/components/adapter/nautilus-adapter-stream-load-strategy.c @@ -104,7 +104,9 @@ nautilus_adapter_stream_load_strategy_new (Bonobo_PersistStream persist_stream, { NautilusAdapterStreamLoadStrategy *strategy; - strategy = NAUTILUS_ADAPTER_STREAM_LOAD_STRATEGY (gtk_type_new (NAUTILUS_TYPE_ADAPTER_STREAM_LOAD_STRATEGY)); + strategy = NAUTILUS_ADAPTER_STREAM_LOAD_STRATEGY (gtk_object_new (NAUTILUS_TYPE_ADAPTER_STREAM_LOAD_STRATEGY, NULL)); + gtk_object_ref (GTK_OBJECT (strategy)); + gtk_object_sink (GTK_OBJECT (strategy)); strategy->details->persist_stream = persist_stream; strategy->details->nautilus_view = view; diff --git a/components/adapter/nautilus-adapter.c b/components/adapter/nautilus-adapter.c index 5f98f2bba..7b1bdd96b 100644 --- a/components/adapter/nautilus-adapter.c +++ b/components/adapter/nautilus-adapter.c @@ -135,7 +135,7 @@ nautilus_adapter_new (Bonobo_Unknown component) CORBA_exception_init (&ev); - adapter = NAUTILUS_ADAPTER (gtk_type_new (NAUTILUS_TYPE_ADAPTER)); + adapter = NAUTILUS_ADAPTER (gtk_object_new (NAUTILUS_TYPE_ADAPTER, NULL)); /* Set up a few wrapper framework details */ diff --git a/components/hardware/main.c b/components/hardware/main.c index d6dd52710..b1d76de66 100644 --- a/components/hardware/main.c +++ b/components/hardware/main.c @@ -44,8 +44,8 @@ hardware_view_object_destroyed(GtkObject *obj) static BonoboObject * hardware_view_make_object (BonoboGenericFactory *factory, - const char *goad_id, - void *closure) + const char *goad_id, + void *closure) { NautilusHardwareView *hardware_view; diff --git a/components/rpmview/nautilus-rpm-verify-window.c b/components/rpmview/nautilus-rpm-verify-window.c index 6448a65d6..28daf31e7 100644 --- a/components/rpmview/nautilus-rpm-verify-window.c +++ b/components/rpmview/nautilus-rpm-verify-window.c @@ -170,13 +170,13 @@ nautilus_rpm_verify_window_initialize (NautilusRPMVerifyWindow *rpm_verify_windo } /* allocate a new rpm_verify_window dialog */ -GtkWidget* +GtkWidget * nautilus_rpm_verify_window_new (const char *package_name) { char *title_string; NautilusRPMVerifyWindow *rpm_verify_window; - rpm_verify_window = gtk_type_new (nautilus_rpm_verify_window_get_type ()); + rpm_verify_window = NAUTILUS_RPM_VERIFY_WINDOW (gtk_widget_new (nautilus_rpm_verify_window_get_type (), NULL)); /* set up the window title */ title_string = g_strdup_printf (_("Verifying %s..."), package_name); diff --git a/components/services/install/lib/eazel-install-corba-callback.c b/components/services/install/lib/eazel-install-corba-callback.c index 75ac073ca..7a0400fca 100644 --- a/components/services/install/lib/eazel-install-corba-callback.c +++ b/components/services/install/lib/eazel-install-corba-callback.c @@ -468,7 +468,8 @@ eazel_install_callback_initialize (EazelInstallCallback *service) { } GtkType -eazel_install_callback_get_type() { +eazel_install_callback_get_type (void) +{ static GtkType service_type = 0; /* g_message ("into eazel_install_callback_get_type"); */ @@ -494,8 +495,8 @@ eazel_install_callback_get_type() { return service_type; } -EazelInstallCallback* -eazel_install_callback_new() +EazelInstallCallback * +eazel_install_callback_new (void) { EazelInstallCallback *service; diff --git a/components/services/install/lib/eazel-install-object.c b/components/services/install/lib/eazel-install-object.c index ee3ff6df8..b666b724b 100644 --- a/components/services/install/lib/eazel-install-object.c +++ b/components/services/install/lib/eazel-install-object.c @@ -610,17 +610,19 @@ eazel_install_get_type() { return service_type; } -EazelInstall* -eazel_install_new() +EazelInstall * +eazel_install_new (void) { EazelInstall *service; service = EAZEL_INSTALL (gtk_object_new (TYPE_EAZEL_INSTALL, NULL)); + gtk_object_ref (GTK_OBJECT (service)); + gtk_object_sink (GTK_OBJECT (service)); return service; } -EazelInstall* +EazelInstall * eazel_install_new_with_config (void) { EazelInstall *service; @@ -653,6 +655,8 @@ eazel_install_new_with_config (void) "server_port", topts->port_number, "cgi_path", topts->cgi_path, NULL)); + gtk_object_ref (GTK_OBJECT (service)); + gtk_object_sink (GTK_OBJECT (service)); transferoptions_destroy (topts); installoptions_destroy (iopts); diff --git a/components/services/time/service/trilobite-eazel-time-service.c b/components/services/time/service/trilobite-eazel-time-service.c index b1ce7f771..95e70f0ae 100644 --- a/components/services/time/service/trilobite-eazel-time-service.c +++ b/components/services/time/service/trilobite-eazel-time-service.c @@ -375,14 +375,16 @@ trilobite_eazel_time_service_get_type() { The _new method simply builds the service using gtk_object_new */ -TrilobiteEazelTimeService* -trilobite_eazel_time_service_new() +TrilobiteEazelTimeService * +trilobite_eazel_time_service_new (void) { TrilobiteEazelTimeService *service; /* g_message ("in trilobite_eazel_time_service_new"); */ service = TRILOBITE_EAZEL_TIME_SERVICE (gtk_object_new (TRILOBITE_TYPE_EAZEL_TIME_SERVICE, NULL)); + gtk_object_ref (GTK_OBJECT (service)); + gtk_object_sink (GTK_OBJECT (service)); return service; } diff --git a/components/services/trilobite/libtrilobite/trilobite-service-passwordquery.c b/components/services/trilobite/libtrilobite/trilobite-service-passwordquery.c index a948530e9..08aef4284 100644 --- a/components/services/trilobite/libtrilobite/trilobite-service-passwordquery.c +++ b/components/services/trilobite/libtrilobite/trilobite-service-passwordquery.c @@ -282,14 +282,14 @@ trilobite_passwordquery_get_type (void) return trilobite_passwordquery_type; } -TrilobitePasswordQuery* -trilobite_passwordquery_new() +TrilobitePasswordQuery * +trilobite_passwordquery_new (void) { TrilobitePasswordQuery *trilobite; /* g_message ("in trilobite_passwordquery_new"); */ - trilobite = TRILOBITE_PASSWORDQUERY (gtk_type_new (TRILOBITE_TYPE_PASSWORDQUERY)); + trilobite = TRILOBITE_PASSWORDQUERY (gtk_object_new (TRILOBITE_TYPE_PASSWORDQUERY, NULL)); if (trilobite == NULL) { g_warning ("Could not create a TrilobitePasswordQuery*"); diff --git a/components/services/trilobite/libtrilobite/trilobite-service.c b/components/services/trilobite/libtrilobite/trilobite-service.c index 518fd5ea1..b1c0ebc08 100644 --- a/components/services/trilobite/libtrilobite/trilobite-service.c +++ b/components/services/trilobite/libtrilobite/trilobite-service.c @@ -475,7 +475,7 @@ trilobite_service_new() /* g_message ("in trilobite_service_new"); */ - trilobite = TRILOBITE_SERVICE (gtk_type_new (TRILOBITE_TYPE_SERVICE)); + trilobite = TRILOBITE_SERVICE (gtk_object_new (TRILOBITE_TYPE_SERVICE, NULL)); if (trilobite == NULL) { g_warning ("Could not create a TrilobiteService*"); diff --git a/components/tree/nautilus-tree-expansion-state.c b/components/tree/nautilus-tree-expansion-state.c index c22510451..8ff716e96 100644 --- a/components/tree/nautilus-tree-expansion-state.c +++ b/components/tree/nautilus-tree-expansion-state.c @@ -162,9 +162,14 @@ nautilus_tree_expansion_state_destroy (GtkObject *object) NautilusTreeExpansionState * -nautilus_tree_expansion_state_new () +nautilus_tree_expansion_state_new (void) { - return NAUTILUS_TREE_EXPANSION_STATE (gtk_type_new (NAUTILUS_TYPE_TREE_EXPANSION_STATE)); + NautilusTreeExpansionState *state; + + state = NAUTILUS_TREE_EXPANSION_STATE (gtk_object_new (NAUTILUS_TYPE_TREE_EXPANSION_STATE, NULL)); + gtk_object_ref (GTK_OBJECT (state)); + gtk_object_sink (GTK_OBJECT (state)); + return state; } diff --git a/components/tree/nautilus-tree-model.c b/components/tree/nautilus-tree-model.c index e610e7156..a70f6b2ea 100644 --- a/components/tree/nautilus-tree-model.c +++ b/components/tree/nautilus-tree-model.c @@ -177,7 +177,9 @@ nautilus_tree_model_new (const char *root_uri) { NautilusTreeModel *model; - model = NAUTILUS_TREE_MODEL (gtk_type_new (NAUTILUS_TYPE_TREE_MODEL)); + model = NAUTILUS_TREE_MODEL (gtk_object_new (NAUTILUS_TYPE_TREE_MODEL, NULL)); + gtk_object_ref (GTK_OBJECT (model)); + gtk_object_sink (GTK_OBJECT (model)); nautilus_tree_model_set_root_uri (model, root_uri); diff --git a/components/tree/nautilus-tree-node.c b/components/tree/nautilus-tree-node.c index ee3788c3f..273f59af2 100644 --- a/components/tree/nautilus-tree-node.c +++ b/components/tree/nautilus-tree-node.c @@ -90,7 +90,9 @@ nautilus_tree_node_new (NautilusFile *file) { NautilusTreeNode *node; - node = NAUTILUS_TREE_NODE (gtk_type_new (NAUTILUS_TYPE_TREE_NODE)); + node = NAUTILUS_TREE_NODE (gtk_object_new (NAUTILUS_TYPE_TREE_NODE, NULL)); + gtk_object_ref (GTK_OBJECT (node)); + gtk_object_sink (GTK_OBJECT (node)); node->details = g_new0 (NautilusTreeNodeDetails, 1); node->details->file = nautilus_file_ref (file); diff --git a/components/tree/nautilus-tree-view.c b/components/tree/nautilus-tree-view.c index 9c872eead..f30efef03 100644 --- a/components/tree/nautilus-tree-view.c +++ b/components/tree/nautilus-tree-view.c @@ -359,8 +359,9 @@ insert_hack_node (NautilusTreeView *view, const char *uri) FALSE, FALSE); + g_assert (g_hash_table_lookup (view->details->uri_to_hack_node_map, uri) == NULL); g_hash_table_insert (view->details->uri_to_hack_node_map, - (char *) uri, hack_node); + g_strdup (uri), hack_node); } } @@ -368,21 +369,24 @@ insert_hack_node (NautilusTreeView *view, const char *uri) static void remove_hack_node (NautilusTreeView *view, const char *uri) { + gpointer key, value; NautilusCTreeNode *hack_node; #ifdef DEBUG_TREE printf ("XXX: removing hack node for %s\n", uri); #endif - hack_node = g_hash_table_lookup (view->details->uri_to_hack_node_map, uri); - - if (hack_node != NULL) { - nautilus_ctree_remove_node (NAUTILUS_CTREE (view->details->tree), - hack_node); + if (g_hash_table_lookup_extended (view->details->uri_to_hack_node_map, + uri, &key, &value)) { + hack_node = value; + nautilus_ctree_remove_node (NAUTILUS_CTREE (view->details->tree), + hack_node); g_hash_table_remove (view->details->uri_to_hack_node_map, uri); + g_free (key); gtk_clist_thaw (GTK_CLIST (view->details->tree)); + #ifdef DEBUG_TREE printf ("XXX: actually thawing (%d)\n", GTK_CLIST (view->details->tree)->freeze_count); #endif @@ -472,7 +476,8 @@ nautilus_tree_view_insert_model_node (NautilusTreeView *view, NautilusTreeNode * view_node, node); - g_hash_table_insert (view->details->uri_to_node_map, uri, view_node); + g_assert (g_hash_table_lookup (view->details->uri_to_node_map, uri) == NULL); + g_hash_table_insert (view->details->uri_to_node_map, g_strdup (uri), view_node); if (nautilus_file_is_directory (file)) { /* Gratuitous hack so node can be expandable w/o @@ -501,21 +506,22 @@ nautilus_tree_view_insert_model_node (NautilusTreeView *view, NautilusTreeNode * static void nautilus_tree_view_remove_model_node (NautilusTreeView *view, NautilusTreeNode *node) { - NautilusCTreeNode *view_node; char *uri; + gpointer key, value; + NautilusCTreeNode *view_node; nautilus_tree_model_stop_monitoring_node (view->details->model, node, view); uri = nautilus_tree_node_get_uri (node); - view_node = model_node_to_view_node (view, node); - - if (view_node != NULL) { + if (g_hash_table_lookup_extended (view->details->uri_to_node_map, + uri, &key, &value)) { + view_node = value; + nautilus_ctree_remove_node (NAUTILUS_CTREE (view->details->tree), - view_node); - - /* FIXME bugzilla.eazel.com 2420: free the original key */ - g_hash_table_remove (view->details->uri_to_node_map, uri); + view_node); + g_hash_table_remove (view->details->uri_to_node_map, uri); + g_free (key); } nautilus_tree_expansion_state_remove_node (view->details->expansion_state, diff --git a/cut-n-paste-code/widgets/e-paned/e-hpaned.c b/cut-n-paste-code/widgets/e-paned/e-hpaned.c index 68fa89321..80745459b 100644 --- a/cut-n-paste-code/widgets/e-paned/e-hpaned.c +++ b/cut-n-paste-code/widgets/e-paned/e-hpaned.c @@ -111,11 +111,7 @@ e_hpaned_init (EHPaned *hpaned) GtkWidget * e_hpaned_new (void) { - EHPaned *hpaned; - - hpaned = gtk_type_new (E_TYPE_HPANED); - - return GTK_WIDGET (hpaned); + return gtk_widget_new (E_TYPE_HPANED, NULL); } static void diff --git a/cut-n-paste-code/widgets/e-paned/e-vpaned.c b/cut-n-paste-code/widgets/e-paned/e-vpaned.c index 0a093af2d..2b99334b5 100644 --- a/cut-n-paste-code/widgets/e-paned/e-vpaned.c +++ b/cut-n-paste-code/widgets/e-paned/e-vpaned.c @@ -111,11 +111,7 @@ e_vpaned_init (EVPaned *vpaned) GtkWidget * e_vpaned_new (void) { - EVPaned *vpaned; - - vpaned = gtk_type_new (E_TYPE_VPANED); - - return GTK_WIDGET (vpaned); + return gtk_widget_new (E_TYPE_VPANED, NULL); } static void diff --git a/libnautilus-extensions/bonobo-stream-vfs.c b/libnautilus-extensions/bonobo-stream-vfs.c index ef4b9896c..da7a9794c 100644 --- a/libnautilus-extensions/bonobo-stream-vfs.c +++ b/libnautilus-extensions/bonobo-stream-vfs.c @@ -346,7 +346,7 @@ bonobo_stream_create (GnomeVFSHandle *fd) Bonobo_Stream corba_stream; CORBA_Environment ev; - stream_vfs = gtk_type_new (bonobo_stream_vfs_get_type ()); + stream_vfs = BONOBO_STREAM_VFS (gtk_object_new (bonobo_stream_vfs_get_type (), NULL)); stream_vfs->fd = fd; diff --git a/libnautilus-extensions/nautilus-any-width-bin.c b/libnautilus-extensions/nautilus-any-width-bin.c index 6d19cd6be..5b73898e0 100644 --- a/libnautilus-extensions/nautilus-any-width-bin.c +++ b/libnautilus-extensions/nautilus-any-width-bin.c @@ -46,14 +46,10 @@ nautilus_any_width_bin_initialize (NautilusAnyWidthBin *bin) { } -GtkWidget* +GtkWidget * nautilus_any_width_bin_new (void) { - NautilusAnyWidthBin *bin; - - bin = gtk_type_new (nautilus_any_width_bin_get_type ()); - - return GTK_WIDGET (bin); + return gtk_widget_new (nautilus_any_width_bin_get_type (), NULL); } static void diff --git a/libnautilus-extensions/nautilus-background.c b/libnautilus-extensions/nautilus-background.c index b01c19b50..6dc73c83b 100644 --- a/libnautilus-extensions/nautilus-background.c +++ b/libnautilus-extensions/nautilus-background.c @@ -235,7 +235,7 @@ nautilus_background_set_image_placement (NautilusBackground *background, NautilusBackground * nautilus_background_new (void) { - return NAUTILUS_BACKGROUND (gtk_type_new (NAUTILUS_TYPE_BACKGROUND)); + return NAUTILUS_BACKGROUND (gtk_object_new (NAUTILUS_TYPE_BACKGROUND, NULL)); } static void @@ -1079,10 +1079,10 @@ nautilus_get_widget_background (GtkWidget *widget) /* Store the background in the widget's data. */ background = nautilus_background_new (); - gtk_object_set_data_full (GTK_OBJECT (widget), "nautilus_background", - background, (GtkDestroyNotify) gtk_object_unref); gtk_object_ref (GTK_OBJECT (background)); gtk_object_sink (GTK_OBJECT (background)); + gtk_object_set_data_full (GTK_OBJECT (widget), "nautilus_background", + background, (GtkDestroyNotify) gtk_object_unref); /* Arrange to get the signal whenever the background changes. */ gtk_signal_connect_object_while_alive (GTK_OBJECT (background), diff --git a/libnautilus-extensions/nautilus-bookmark.c b/libnautilus-extensions/nautilus-bookmark.c index a67531bca..e671cfba4 100644 --- a/libnautilus-extensions/nautilus-bookmark.c +++ b/libnautilus-extensions/nautilus-bookmark.c @@ -479,7 +479,9 @@ nautilus_bookmark_new_with_icon (const char *uri, const char *name, { NautilusBookmark *new_bookmark; - new_bookmark = gtk_type_new (NAUTILUS_TYPE_BOOKMARK); + new_bookmark = NAUTILUS_BOOKMARK (gtk_object_new (NAUTILUS_TYPE_BOOKMARK, NULL)); + gtk_object_ref (GTK_OBJECT (new_bookmark)); + gtk_object_sink (GTK_OBJECT (new_bookmark)); new_bookmark->details->name = g_strdup (name); new_bookmark->details->uri = g_strdup (uri); diff --git a/libnautilus-extensions/nautilus-caption-table.c b/libnautilus-extensions/nautilus-caption-table.c index bfe35a0f4..b6341e1cd 100644 --- a/libnautilus-extensions/nautilus-caption-table.c +++ b/libnautilus-extensions/nautilus-caption-table.c @@ -306,13 +306,15 @@ entry_activate (GtkWidget *widget, gpointer data) GtkWidget* nautilus_caption_table_new (guint num_rows) { - GtkWidget *widget = GTK_WIDGET (gtk_type_new (nautilus_caption_table_get_type())); + GtkWidget *widget; - if (num_rows == 0) + if (num_rows == 0) { num_rows = 1; + } - nautilus_caption_table_resize (NAUTILUS_CAPTION_TABLE(widget), num_rows); + widget = gtk_widget_new (nautilus_caption_table_get_type(), NULL); + nautilus_caption_table_resize (NAUTILUS_CAPTION_TABLE (widget), num_rows); gtk_table_set_col_spacing (GTK_TABLE (widget), 0, 10); return widget; diff --git a/libnautilus-extensions/nautilus-caption.c b/libnautilus-extensions/nautilus-caption.c index 03bb02c9b..9b2698343 100644 --- a/libnautilus-extensions/nautilus-caption.c +++ b/libnautilus-extensions/nautilus-caption.c @@ -140,14 +140,10 @@ update_title (NautilusCaption *caption) /* * NautilusCaption public methods */ -GtkWidget* +GtkWidget * nautilus_caption_new (void) { - NautilusCaption *caption; - - caption = gtk_type_new (nautilus_caption_get_type ()); - - return GTK_WIDGET (caption); + return gtk_widget_new (nautilus_caption_get_type (), NULL); } /** diff --git a/libnautilus-extensions/nautilus-ctree.c b/libnautilus-extensions/nautilus-ctree.c index f38774b4e..c7b489da9 100644 --- a/libnautilus-extensions/nautilus-ctree.c +++ b/libnautilus-extensions/nautilus-ctree.c @@ -3610,7 +3610,7 @@ nautilus_ctree_new_with_titles (gint columns, g_return_val_if_fail (columns > 0, NULL); g_return_val_if_fail (tree_column >= 0 && tree_column < columns, NULL); - widget = gtk_type_new (NAUTILUS_TYPE_CTREE); + widget = GTK_WIDGET (gtk_type_new (NAUTILUS_TYPE_CTREE)); nautilus_ctree_construct (NAUTILUS_CTREE (widget), columns, tree_column, titles); return widget; diff --git a/libnautilus-extensions/nautilus-directory.c b/libnautilus-extensions/nautilus-directory.c index 2d235bf88..bb002c777 100644 --- a/libnautilus-extensions/nautilus-directory.c +++ b/libnautilus-extensions/nautilus-directory.c @@ -353,10 +353,12 @@ nautilus_directory_new (const char *uri) g_assert (uri != NULL); if (nautilus_uri_is_trash (uri)) { - directory = NAUTILUS_DIRECTORY (gtk_type_new (NAUTILUS_TYPE_TRASH_DIRECTORY)); + directory = NAUTILUS_DIRECTORY (gtk_object_new (NAUTILUS_TYPE_TRASH_DIRECTORY, NULL)); } else { - directory = NAUTILUS_DIRECTORY (gtk_type_new (NAUTILUS_TYPE_VFS_DIRECTORY)); + directory = NAUTILUS_DIRECTORY (gtk_object_new (NAUTILUS_TYPE_VFS_DIRECTORY, NULL)); } + gtk_object_ref (GTK_OBJECT (directory)); + gtk_object_sink (GTK_OBJECT (directory)); directory->details->uri = g_strdup (uri); directory->details->private_metafile_vfs_uri = construct_private_metafile_vfs_uri (uri); diff --git a/libnautilus-extensions/nautilus-druid-page-eazel.c b/libnautilus-extensions/nautilus-druid-page-eazel.c index 7648bf89e..39fadc869 100644 --- a/libnautilus-extensions/nautilus-druid-page-eazel.c +++ b/libnautilus-extensions/nautilus-druid-page-eazel.c @@ -448,7 +448,9 @@ nautilus_druid_page_eazel_size_request(GtkWidget *widget, GtkWidget * nautilus_druid_page_eazel_new (NautilusDruidPageEazelPosition position) { - NautilusDruidPageEazel *page = gtk_type_new (nautilus_druid_page_eazel_get_type ()); + NautilusDruidPageEazel *page; + + page = NAUTILUS_DRUID_PAGE_EAZEL (gtk_widget_new (nautilus_druid_page_eazel_get_type (), NULL)); page->position = position; page->title = g_strdup (""); @@ -480,7 +482,9 @@ nautilus_druid_page_eazel_new_with_vals (NautilusDruidPageEazelPosition position GdkPixbuf *sidebar_image, GdkPixbuf *background_image) { - NautilusDruidPageEazel *page = gtk_type_new (nautilus_druid_page_eazel_get_type ()); + NautilusDruidPageEazel *page; + + page = NAUTILUS_DRUID_PAGE_EAZEL (gtk_widget_new (nautilus_druid_page_eazel_get_type (), NULL)); page->position = position; page->title = g_strdup (title ? title : ""); diff --git a/libnautilus-extensions/nautilus-druid.c b/libnautilus-extensions/nautilus-druid.c index f6eb52592..d3a592cc9 100644 --- a/libnautilus-extensions/nautilus-druid.c +++ b/libnautilus-extensions/nautilus-druid.c @@ -200,5 +200,5 @@ nautilus_druid_size_allocate (GtkWidget *widget, GtkWidget * nautilus_druid_new (void) { - return (GtkWidget *)gtk_type_new (NAUTILUS_TYPE_DRUID); + return gtk_widget_new (NAUTILUS_TYPE_DRUID, NULL); } diff --git a/libnautilus-extensions/nautilus-entry.c b/libnautilus-extensions/nautilus-entry.c index b9683f455..e833e197c 100644 --- a/libnautilus-extensions/nautilus-entry.c +++ b/libnautilus-extensions/nautilus-entry.c @@ -102,10 +102,10 @@ nautilus_entry_initialize (NautilusEntry *entry) nautilus_undo_set_up_nautilus_entry_for_undo (entry); } -GtkWidget* +GtkWidget * nautilus_entry_new (void) { - return GTK_WIDGET (gtk_type_new (NAUTILUS_TYPE_ENTRY)); + return gtk_widget_new (NAUTILUS_TYPE_ENTRY, NULL); } static void diff --git a/libnautilus-extensions/nautilus-file-operations-progress.c b/libnautilus-extensions/nautilus-file-operations-progress.c index 45601d564..7ba7ffb33 100644 --- a/libnautilus-extensions/nautilus-file-operations-progress.c +++ b/libnautilus-extensions/nautilus-file-operations-progress.c @@ -274,7 +274,7 @@ nautilus_file_operations_progress_new (const char *title, GtkWidget *widget; NautilusFileOperationsProgress *dialog; - widget = gtk_type_new (nautilus_file_operations_progress_get_type ()); + widget = gtk_widget_new (nautilus_file_operations_progress_get_type (), NULL); dialog = NAUTILUS_FILE_OPERATIONS_PROGRESS (widget); nautilus_file_operations_progress_set_operation_string (dialog, operation_string); diff --git a/libnautilus-extensions/nautilus-file.c b/libnautilus-extensions/nautilus-file.c index 267d62ff7..a5502c47c 100644 --- a/libnautilus-extensions/nautilus-file.c +++ b/libnautilus-extensions/nautilus-file.c @@ -123,7 +123,9 @@ nautilus_file_new_from_name (NautilusDirectory *directory, g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (name[0] != '\0', NULL); - file = gtk_type_new (NAUTILUS_TYPE_FILE); + file = NAUTILUS_FILE (gtk_object_new (NAUTILUS_TYPE_FILE, NULL)); + gtk_object_ref (GTK_OBJECT (file)); + gtk_object_sink (GTK_OBJECT (file)); nautilus_directory_ref (directory); @@ -228,7 +230,9 @@ nautilus_file_new_from_info (NautilusDirectory *directory, g_return_val_if_fail (NAUTILUS_IS_DIRECTORY (directory), NULL); g_return_val_if_fail (info != NULL, NULL); - file = gtk_type_new (NAUTILUS_TYPE_FILE); + file = NAUTILUS_FILE (gtk_object_new (NAUTILUS_TYPE_FILE, NULL)); + gtk_object_ref (GTK_OBJECT (file)); + gtk_object_sink (GTK_OBJECT (file)); nautilus_directory_ref (directory); file->details->directory = directory; diff --git a/libnautilus-extensions/nautilus-font-factory.c b/libnautilus-extensions/nautilus-font-factory.c index 347562d71..136a6171c 100644 --- a/libnautilus-extensions/nautilus-font-factory.c +++ b/libnautilus-extensions/nautilus-font-factory.c @@ -23,14 +23,24 @@ */ #include <config.h> - #include "nautilus-font-factory.h" + +#include "nautilus-global-preferences.h" #include "nautilus-gtk-macros.h" #include "nautilus-string.h" -#include "nautilus-global-preferences.h" - -#include <unistd.h> #include <pthread.h> +#include <unistd.h> + +#define NAUTILUS_TYPE_FONT_FACTORY \ + (nautilus_font_factory_get_type ()) +#define NAUTILUS_FONT_FACTORY(obj) \ + (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_FONT_FACTORY, NautilusFontFactory)) +#define NAUTILUS_FONT_FACTORY_CLASS(klass) \ + (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_FONT_FACTORY, NautilusFontFactoryClass)) +#define NAUTILUS_IS_FONT_FACTORY(obj) \ + (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_FONT_FACTORY)) +#define NAUTILUS_IS_FONT_FACTORY_CLASS(klass) \ + (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_FONT_FACTORY)) /* The font factory */ typedef struct { @@ -49,36 +59,33 @@ typedef struct { GdkFont *font; } FontHashNode; -static GtkType nautilus_font_factory_get_type (void); -static void nautilus_font_factory_initialize_class (NautilusFontFactoryClass *class); -static void nautilus_font_factory_initialize (NautilusFontFactory *factory); -static NautilusFontFactory *nautilus_get_current_font_factory (void); -static NautilusFontFactory *nautilus_font_factory_new (void); -static char * make_font_name_string (const char *foundry, - const char *familiy, - const char *weight, - const char *slant, - const char *set_width, - const char *add_style, - guint size_in_pixels); -static FontHashNode * font_hash_node_alloc (const char *name); -static FontHashNode * font_hash_node_lookup (const char *name); -static FontHashNode * font_hash_node_lookup_with_insertion (const char *name); - -#if 0 -static void font_hash_node_free (FontHashNode *node); -#endif - -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusFontFactory, nautilus_font_factory, GTK_TYPE_OBJECT) +static GdkFont *fixed_font; +static NautilusFontFactory *global_font_factory = NULL; + +static GtkType nautilus_font_factory_get_type (void); +static void nautilus_font_factory_initialize_class (NautilusFontFactoryClass *class); +static void nautilus_font_factory_initialize (NautilusFontFactory *factory); +static void destroy (GtkObject *object); + +NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusFontFactory, + nautilus_font_factory, + GTK_TYPE_OBJECT) + +static void +unref_global_font_factory (void) +{ + gtk_object_unref (GTK_OBJECT (global_font_factory)); +} /* Return a pointer to the single global font factory. */ static NautilusFontFactory * nautilus_get_current_font_factory (void) { - static NautilusFontFactory *global_font_factory = NULL; - if (global_font_factory == NULL) { - global_font_factory = nautilus_font_factory_new (); + global_font_factory = NAUTILUS_FONT_FACTORY (gtk_object_new (nautilus_font_factory_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (global_font_factory)); + gtk_object_sink (GTK_OBJECT (global_font_factory)); + g_atexit (unref_global_font_factory); } return global_font_factory; @@ -90,17 +97,6 @@ nautilus_font_factory_get (void) return GTK_OBJECT (nautilus_get_current_font_factory ()); } -/* Create the font factory. */ -static NautilusFontFactory * -nautilus_font_factory_new (void) -{ - NautilusFontFactory *factory; - - factory = (NautilusFontFactory *) gtk_object_new (nautilus_font_factory_get_type (), NULL); - - return factory; -} - static void nautilus_font_factory_initialize (NautilusFontFactory *factory) { @@ -113,79 +109,91 @@ nautilus_font_factory_initialize_class (NautilusFontFactoryClass *class) GtkObjectClass *object_class; object_class = GTK_OBJECT_CLASS (class); + object_class->destroy = destroy; } static FontHashNode * font_hash_node_alloc (const char *name) { - FontHashNode * node; + FontHashNode *node; g_assert (name != NULL); - node = g_new (FontHashNode, 1); - + node = g_new0 (FontHashNode, 1); node->name = g_strdup (name); - node->font = NULL; - return node; } -#if 0 static void font_hash_node_free (FontHashNode *node) { g_assert (node != NULL); g_free (node->name); + gdk_font_unref (node->font); g_free (node); } -#endif + +static void +free_one_hash_node (gpointer key, gpointer value, gpointer callback_data) +{ + FontHashNode *node; + + g_assert (key != NULL); + g_assert (value != NULL); + g_assert (callback_data == NULL); + + node = value; + + g_assert (node->name == key); + + font_hash_node_free (node); +} + +static void +destroy (GtkObject *object) +{ + NautilusFontFactory *factory; + + factory = NAUTILUS_FONT_FACTORY (object); + + g_hash_table_foreach (factory->fonts, free_one_hash_node, NULL); + g_hash_table_destroy (factory->fonts); + + NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object)); +} static FontHashNode * font_hash_node_lookup (const char *name) { - static NautilusFontFactory *factory; - - gpointer hash_value; + NautilusFontFactory *factory; g_assert (name != NULL); factory = nautilus_get_current_font_factory (); - g_assert (factory != NULL); - - hash_value = g_hash_table_lookup (factory->fonts, (gconstpointer) name); - - return (FontHashNode *) hash_value; + return (FontHashNode *) g_hash_table_lookup (factory->fonts, name); } static FontHashNode * font_hash_node_lookup_with_insertion (const char *name) { - static NautilusFontFactory *factory; - - FontHashNode *node = NULL; + NautilusFontFactory *factory; + FontHashNode *node; + GdkFont *font; g_assert (name != NULL); factory = nautilus_get_current_font_factory (); - g_assert (factory != NULL); - - node = font_hash_node_lookup (name); if (node == NULL) { - GdkFont *font; - font = gdk_font_load (name); if (font != NULL) { node = font_hash_node_alloc (name); node->font = font; - - gdk_font_ref (node->font); - g_hash_table_insert (factory->fonts, node->name, node); } } @@ -195,7 +203,7 @@ font_hash_node_lookup_with_insertion (const char *name) static char * make_font_name_string (const char *foundry, - const char *familiy, + const char *family, const char *weight, const char *slant, const char *set_width, @@ -229,7 +237,7 @@ make_font_name_string (const char *foundry, | | | | | | | | | | | | | +------------- char_set_encoding */ font_name = g_strdup_printf ("-%s-%s-%s-%s-%s-%s-%d-%s-%s-%s-%s-%s-%s-%s", foundry, - familiy, + family, weight, slant, set_width, @@ -251,8 +259,8 @@ GdkFont * nautilus_font_factory_get_font_by_family (const char *family, guint size_in_pixels) { - static NautilusFontFactory *factory; - GdkFont *font = NULL; + NautilusFontFactory *factory; + GdkFont *font; FontHashNode *node; char *font_name; @@ -260,8 +268,6 @@ nautilus_font_factory_get_font_by_family (const char *family, g_return_val_if_fail (size_in_pixels > 0, NULL); factory = nautilus_get_current_font_factory (); - g_assert (factory != NULL); - font_name = make_font_name_string ("*", family, "medium", @@ -270,18 +276,13 @@ nautilus_font_factory_get_font_by_family (const char *family, "*", size_in_pixels); - g_assert (font_name != NULL); - node = font_hash_node_lookup_with_insertion (font_name); if (node != NULL) { - g_assert (node->font); - + g_assert (node->font != NULL); font = node->font; - gdk_font_ref (font); - } - else { + } else { font = nautilus_font_factory_get_fallback_font (); } @@ -305,16 +306,21 @@ nautilus_font_factory_get_font_from_preferences (guint size_in_pixels) return font; } +static void +unref_fixed_font (void) +{ + gdk_font_unref (fixed_font); +} + GdkFont * nautilus_font_factory_get_fallback_font (void) { - static GdkFont *fixed_font; - if (fixed_font == NULL) { fixed_font = gdk_font_load ("fixed"); g_assert (fixed_font != NULL); - gdk_font_ref (fixed_font); + g_atexit (unref_fixed_font); } + gdk_font_ref (fixed_font); return fixed_font; } diff --git a/libnautilus-extensions/nautilus-font-picker.c b/libnautilus-extensions/nautilus-font-picker.c index 1fbc9f170..e18dc91e2 100644 --- a/libnautilus-extensions/nautilus-font-picker.c +++ b/libnautilus-extensions/nautilus-font-picker.c @@ -391,14 +391,10 @@ set_width_picker_changed_callback (GtkWidget *string_picker, gpointer user_data) /* * NautilusFontPicker public methods */ -GtkWidget* +GtkWidget * nautilus_font_picker_new (void) { - NautilusFontPicker *font_picker; - - font_picker = gtk_type_new (nautilus_font_picker_get_type ()); - - return GTK_WIDGET (font_picker); + return gtk_widget_new (nautilus_font_picker_get_type (), NULL); } void diff --git a/libnautilus-extensions/nautilus-horizontal-splitter.c b/libnautilus-extensions/nautilus-horizontal-splitter.c index 437b1cb8a..70f1b5198 100644 --- a/libnautilus-extensions/nautilus-horizontal-splitter.c +++ b/libnautilus-extensions/nautilus-horizontal-splitter.c @@ -286,7 +286,7 @@ toggle_splitter_position (NautilusHorizontalSplitter *splitter) GtkWidget * nautilus_horizontal_splitter_new (void) { - return GTK_WIDGET (gtk_type_new (nautilus_horizontal_splitter_get_type ())); + return gtk_widget_new (nautilus_horizontal_splitter_get_type (), NULL); } /* handle mouse downs by remembering the position and the time */ diff --git a/libnautilus-extensions/nautilus-icon-container.c b/libnautilus-extensions/nautilus-icon-container.c index 3f13c80b3..a67ad9d69 100644 --- a/libnautilus-extensions/nautilus-icon-container.c +++ b/libnautilus-extensions/nautilus-icon-container.c @@ -3113,7 +3113,7 @@ nautilus_icon_container_new (void) gtk_widget_push_visual (gdk_rgb_get_visual ()); gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - container = gtk_type_new (nautilus_icon_container_get_type ()); + container = gtk_widget_new (nautilus_icon_container_get_type (), NULL); gtk_widget_pop_visual (); gtk_widget_pop_colormap (); diff --git a/libnautilus-extensions/nautilus-icon-factory.c b/libnautilus-extensions/nautilus-icon-factory.c index 7840f2e84..1c2fffed0 100644 --- a/libnautilus-extensions/nautilus-icon-factory.c +++ b/libnautilus-extensions/nautilus-icon-factory.c @@ -276,6 +276,8 @@ get_icon_factory (void) if (global_icon_factory == NULL) { global_icon_factory = NAUTILUS_ICON_FACTORY (gtk_object_new (nautilus_icon_factory_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (global_icon_factory)); + gtk_object_sink (GTK_OBJECT (global_icon_factory)); /* Update to match the theme. */ icon_theme_changed_callback (NULL); diff --git a/libnautilus-extensions/nautilus-image.c b/libnautilus-extensions/nautilus-image.c index 60dd62506..8affda5e7 100644 --- a/libnautilus-extensions/nautilus-image.c +++ b/libnautilus-extensions/nautilus-image.c @@ -415,10 +415,10 @@ nautilus_image_paint (NautilusImage *image, } /* Public NautilusImage */ -GtkWidget* +GtkWidget * nautilus_image_new (void) { - return GTK_WIDGET (gtk_type_new (nautilus_image_get_type ())); + return gtk_widget_new (nautilus_image_get_type (), NULL); } void diff --git a/libnautilus-extensions/nautilus-keep-last-vertical-box.c b/libnautilus-extensions/nautilus-keep-last-vertical-box.c index 473c65f5e..7b0fe4aca 100644 --- a/libnautilus-extensions/nautilus-keep-last-vertical-box.c +++ b/libnautilus-extensions/nautilus-keep-last-vertical-box.c @@ -70,7 +70,7 @@ nautilus_keep_last_vertical_box_new (gint spacing) { NautilusKeepLastVerticalBox *box; - box = gtk_type_new (nautilus_keep_last_vertical_box_get_type ()); + box = NAUTILUS_KEEP_LAST_VERTICAL_BOX (gtk_widget_new (nautilus_keep_last_vertical_box_get_type (), NULL)); GTK_BOX (box)->spacing = spacing; diff --git a/libnautilus-extensions/nautilus-label.c b/libnautilus-extensions/nautilus-label.c index 5675262da..4dda451ae 100644 --- a/libnautilus-extensions/nautilus-label.c +++ b/libnautilus-extensions/nautilus-label.c @@ -452,12 +452,12 @@ label_recompute_line_geometries (NautilusLabel *label) } /* Public NautilusLabel */ -GtkWidget* +GtkWidget * nautilus_label_new (const char *text) { NautilusLabel *label; - label = NAUTILUS_LABEL (gtk_type_new (nautilus_label_get_type ())); + label = NAUTILUS_LABEL (gtk_widget_new (nautilus_label_get_type (), NULL)); nautilus_label_set_text (label, text); diff --git a/libnautilus-extensions/nautilus-list-column-title.c b/libnautilus-extensions/nautilus-list-column-title.c index 93262fb4b..d52bdc3eb 100644 --- a/libnautilus-extensions/nautilus-list-column-title.c +++ b/libnautilus-extensions/nautilus-list-column-title.c @@ -155,7 +155,8 @@ nautilus_list_column_title_initialize_class (gpointer klass) NautilusListColumnTitle * nautilus_list_column_title_new (void) { - return gtk_type_new (nautilus_list_column_title_get_type ()); + return NAUTILUS_LIST_COLUMN_TITLE + (gtk_widget_new (nautilus_list_column_title_get_type (), NULL)); } static void @@ -234,16 +235,16 @@ nautilus_list_column_title_finalize (GtkObject *object) if (column_title->details->up_indicator_pixmap != NULL) { gdk_pixmap_unref (column_title->details->up_indicator_pixmap); column_title->details->up_indicator_pixmap = NULL; - - g_assert (column_title->details->up_indicator_mask != NULL); + } + if (column_title->details->up_indicator_mask != NULL) { gdk_bitmap_unref (column_title->details->up_indicator_mask); column_title->details->up_indicator_mask = NULL; } if (column_title->details->down_indicator_pixmap != NULL) { gdk_pixmap_unref (column_title->details->down_indicator_pixmap); column_title->details->down_indicator_pixmap = NULL; - - g_assert (column_title->details->down_indicator_mask != NULL); + } + if (column_title->details->down_indicator_mask != NULL) { gdk_bitmap_unref (column_title->details->down_indicator_mask); column_title->details->down_indicator_mask = NULL; } diff --git a/libnautilus-extensions/nautilus-list.c b/libnautilus-extensions/nautilus-list.c index d3efda5ae..135e215a5 100644 --- a/libnautilus-extensions/nautilus-list.c +++ b/libnautilus-extensions/nautilus-list.c @@ -3150,7 +3150,7 @@ nautilus_list_new_with_titles (int columns, const char * const *titles) { NautilusList *list; - list = gtk_type_new (nautilus_list_get_type ()); + list = NAUTILUS_LIST (gtk_type_new (nautilus_list_get_type ())); gtk_clist_construct (GTK_CLIST (list), columns, NULL); if (titles) { GtkCList *clist; diff --git a/libnautilus-extensions/nautilus-password-dialog.c b/libnautilus-extensions/nautilus-password-dialog.c index c5da58062..cab03648c 100644 --- a/libnautilus-extensions/nautilus-password-dialog.c +++ b/libnautilus-extensions/nautilus-password-dialog.c @@ -210,7 +210,7 @@ caption_table_activate_callback (GtkWidget *widget, gint entry, gpointer callbac } /* Public NautilusPasswordDialog methods */ -GtkWidget* +GtkWidget * nautilus_password_dialog_new (const char *dialog_title, const char *message, const char *username, @@ -219,7 +219,7 @@ nautilus_password_dialog_new (const char *dialog_title, { NautilusPasswordDialog *password_dialog; - password_dialog = gtk_type_new (nautilus_password_dialog_get_type ()); + password_dialog = NAUTILUS_PASSWORD_DIALOG (gtk_widget_new (nautilus_password_dialog_get_type (), NULL)); gnome_dialog_constructv (GNOME_DIALOG (password_dialog), dialog_title, stock_buttons); diff --git a/libnautilus-extensions/nautilus-preference.c b/libnautilus-extensions/nautilus-preference.c index cbbd59481..44197b167 100644 --- a/libnautilus-extensions/nautilus-preference.c +++ b/libnautilus-extensions/nautilus-preference.c @@ -302,12 +302,11 @@ nautilus_preference_new_from_type (const char *name, g_return_val_if_fail (name != NULL, NULL); - preference = gtk_type_new (nautilus_preference_get_type ()); - - g_assert (preference != NULL ); + preference = NAUTILUS_PREFERENCE (gtk_object_new (nautilus_preference_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (preference)); + gtk_object_sink (GTK_OBJECT (preference)); preference->detail->name = g_strdup (name); - preference->detail->type = type; preference_allocate_type_info (preference); diff --git a/libnautilus-extensions/nautilus-preferences-box.c b/libnautilus-extensions/nautilus-preferences-box.c index a1053549d..557e7dafd 100644 --- a/libnautilus-extensions/nautilus-preferences-box.c +++ b/libnautilus-extensions/nautilus-preferences-box.c @@ -312,7 +312,8 @@ nautilus_preferences_box_new (const gchar *box_title) { NautilusPreferencesBox *prefs_box; - prefs_box = gtk_type_new (nautilus_preferences_box_get_type ()); + prefs_box = NAUTILUS_PREFERENCES_BOX + (gtk_widget_new (nautilus_preferences_box_get_type (), NULL)); prefs_box_construct (prefs_box); diff --git a/libnautilus-extensions/nautilus-preferences-dialog.c b/libnautilus-extensions/nautilus-preferences-dialog.c index 48d0dfd27..1a126b778 100644 --- a/libnautilus-extensions/nautilus-preferences-dialog.c +++ b/libnautilus-extensions/nautilus-preferences-dialog.c @@ -211,12 +211,13 @@ nautilus_preferences_dialog_construct (NautilusPreferencesDialog *prefs_dialog, gtk_widget_show (prefs_dialog->details->prefs_box); } -GtkWidget* +GtkWidget * nautilus_preferences_dialog_new (const gchar *dialog_title) { NautilusPreferencesDialog *prefs_dialog; - prefs_dialog = gtk_type_new (nautilus_preferences_dialog_get_type ()); + prefs_dialog = NAUTILUS_PREFERENCES_DIALOG + (gtk_widget_new (nautilus_preferences_dialog_get_type (), NULL)); nautilus_preferences_dialog_construct (prefs_dialog, dialog_title); diff --git a/libnautilus-extensions/nautilus-preferences-group.c b/libnautilus-extensions/nautilus-preferences-group.c index 666c71a15..b96163ec2 100644 --- a/libnautilus-extensions/nautilus-preferences-group.c +++ b/libnautilus-extensions/nautilus-preferences-group.c @@ -181,14 +181,15 @@ preferences_group_construct (NautilusPreferencesGroup *group, /* * NautilusPreferencesGroup public methods */ -GtkWidget* +GtkWidget * nautilus_preferences_group_new (const gchar *title) { NautilusPreferencesGroup *group; g_return_val_if_fail (title != NULL, NULL); - group = gtk_type_new (nautilus_preferences_group_get_type ()); + group = NAUTILUS_PREFERENCES_GROUP + (gtk_widget_new (nautilus_preferences_group_get_type (), NULL)); preferences_group_construct (group, title); diff --git a/libnautilus-extensions/nautilus-preferences-item.c b/libnautilus-extensions/nautilus-preferences-item.c index 9cc460497..d8e2311f8 100644 --- a/libnautilus-extensions/nautilus-preferences-item.c +++ b/libnautilus-extensions/nautilus-preferences-item.c @@ -627,7 +627,8 @@ nautilus_preferences_item_new (const gchar *preference_name, g_return_val_if_fail (preference_name != NULL, NULL); - item = gtk_type_new (nautilus_preferences_item_get_type ()); + item = NAUTILUS_PREFERENCES_ITEM + (gtk_widget_new (nautilus_preferences_item_get_type (), NULL)); /* Cast away the constness so that the preferences object can be * refed in this object. */ diff --git a/libnautilus-extensions/nautilus-preferences-pane.c b/libnautilus-extensions/nautilus-preferences-pane.c index 54051fc05..2b5167d92 100644 --- a/libnautilus-extensions/nautilus-preferences-pane.c +++ b/libnautilus-extensions/nautilus-preferences-pane.c @@ -214,7 +214,7 @@ prefs_pane_construct (NautilusPreferencesPane *prefs_pane, /* * NautilusPreferencesPane public methods */ -GtkWidget* +GtkWidget * nautilus_preferences_pane_new (const gchar *pane_title, const gchar *pane_description) { @@ -223,7 +223,8 @@ nautilus_preferences_pane_new (const gchar *pane_title, g_return_val_if_fail (pane_title != NULL, NULL); g_return_val_if_fail (pane_description != NULL, NULL); - prefs_pane = gtk_type_new (nautilus_preferences_pane_get_type ()); + prefs_pane = NAUTILUS_PREFERENCES_PANE + (gtk_widget_new (nautilus_preferences_pane_get_type (), NULL)); prefs_pane_construct (prefs_pane, pane_title, pane_description); diff --git a/libnautilus-extensions/nautilus-radio-button-group.c b/libnautilus-extensions/nautilus-radio-button-group.c index 25b46f1bc..71db70521 100644 --- a/libnautilus-extensions/nautilus-radio-button-group.c +++ b/libnautilus-extensions/nautilus-radio-button-group.c @@ -201,7 +201,8 @@ nautilus_radio_button_group_new (gboolean is_horizontal) { NautilusRadioButtonGroup *button_group; - button_group = gtk_type_new (nautilus_radio_button_group_get_type ()); + button_group = NAUTILUS_RADIO_BUTTON_GROUP + (gtk_widget_new (nautilus_radio_button_group_get_type (), NULL)); button_group->details->horizontal = is_horizontal; return GTK_WIDGET (button_group); diff --git a/libnautilus-extensions/nautilus-scalable-font.c b/libnautilus-extensions/nautilus-scalable-font.c index 10921f19c..5e7bf3d99 100644 --- a/libnautilus-extensions/nautilus-scalable-font.c +++ b/libnautilus-extensions/nautilus-scalable-font.c @@ -595,7 +595,9 @@ nautilus_scalable_font_new (const char *family, __FUNCTION__, family, weight, slant, set_width, font_entry->font_handle); #endif - font = NAUTILUS_SCALABLE_FONT (gtk_type_new (nautilus_scalable_font_get_type ())); + font = NAUTILUS_SCALABLE_FONT (gtk_object_new (nautilus_scalable_font_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (font)); + gtk_object_sink (GTK_OBJECT (font)); font->detail->font_handle = font_entry->font_handle; diff --git a/libnautilus-extensions/nautilus-string-picker.c b/libnautilus-extensions/nautilus-string-picker.c index 1d4ef14ea..ad804f939 100644 --- a/libnautilus-extensions/nautilus-string-picker.c +++ b/libnautilus-extensions/nautilus-string-picker.c @@ -155,14 +155,10 @@ option_menu_activate_callback (GtkWidget *menu_item, gpointer callback_data) /* * NautilusStringPicker public methods */ -GtkWidget* +GtkWidget * nautilus_string_picker_new (void) { - NautilusStringPicker *string_picker; - - string_picker = gtk_type_new (nautilus_string_picker_get_type ()); - - return GTK_WIDGET (string_picker); + return gtk_widget_new (nautilus_string_picker_get_type (), NULL); } /** diff --git a/libnautilus-extensions/nautilus-text-caption.c b/libnautilus-extensions/nautilus-text-caption.c index 683e6eb4c..8e4e853f0 100644 --- a/libnautilus-extensions/nautilus-text-caption.c +++ b/libnautilus-extensions/nautilus-text-caption.c @@ -152,14 +152,10 @@ entry_changed_callback (GtkWidget *entry, gpointer user_data) /* * NautilusTextCaption public methods */ -GtkWidget* +GtkWidget * nautilus_text_caption_new (void) { - NautilusTextCaption *text_caption; - - text_caption = gtk_type_new (nautilus_text_caption_get_type ()); - - return GTK_WIDGET (text_caption); + return gtk_widget_new (nautilus_text_caption_get_type (), NULL); } /** diff --git a/libnautilus-extensions/nautilus-theme.c b/libnautilus-extensions/nautilus-theme.c index 00941f5c8..068cfb001 100644 --- a/libnautilus-extensions/nautilus-theme.c +++ b/libnautilus-extensions/nautilus-theme.c @@ -53,18 +53,18 @@ static xmlDocPtr default_theme_document = NULL; /* return the current theme by asking the preferences machinery */ char * -nautilus_theme_get_theme(void) +nautilus_theme_get_theme (void) { return nautilus_preferences_get (NAUTILUS_PREFERENCES_THEME, "default"); } /* set the current theme */ void -nautilus_theme_set_theme(const char *new_theme) +nautilus_theme_set_theme (const char *new_theme) { char *old_theme; - old_theme = nautilus_theme_get_theme(); + old_theme = nautilus_theme_get_theme (); if (nautilus_strcmp (old_theme, new_theme)) { nautilus_preferences_set (NAUTILUS_PREFERENCES_THEME, new_theme); } @@ -157,7 +157,7 @@ nautilus_theme_get_theme_data (const char *resource_name, const char *property_n if (theme_document != NULL) { /* fetch the resource node */ - resource_node = nautilus_xml_get_child_by_name(xmlDocGetRootElement (theme_document), resource_name); + resource_node = nautilus_xml_get_child_by_name (xmlDocGetRootElement (theme_document), resource_name); if (resource_node) { temp_str = xmlGetProp(resource_node, property_name); if (temp_str) { diff --git a/libnautilus-extensions/nautilus-undo-context.c b/libnautilus-extensions/nautilus-undo-context.c index f64639e59..cc94a9f02 100644 --- a/libnautilus-extensions/nautilus-undo-context.c +++ b/libnautilus-extensions/nautilus-undo-context.c @@ -118,11 +118,14 @@ nautilus_undo_context_new (Nautilus_Undo_Manager undo_manager) CORBA_exception_init (&ev); - context = gtk_type_new (nautilus_undo_context_get_type ()); + context = NAUTILUS_UNDO_CONTEXT (gtk_object_new (nautilus_undo_context_get_type (), NULL)); context->undo_manager = CORBA_Object_duplicate (undo_manager, &ev); CORBA_exception_free (&ev); + gtk_object_ref (GTK_OBJECT (context)); + gtk_object_sink (GTK_OBJECT (context)); + return context; } diff --git a/libnautilus-extensions/nautilus-undo-manager.c b/libnautilus-extensions/nautilus-undo-manager.c index b684978df..41a41aacd 100644 --- a/libnautilus-extensions/nautilus-undo-manager.c +++ b/libnautilus-extensions/nautilus-undo-manager.c @@ -230,7 +230,13 @@ corba_undo (PortableServer_Servant servant, NautilusUndoManager * nautilus_undo_manager_new (void) { - return gtk_type_new (nautilus_undo_manager_get_type ()); + NautilusUndoManager *manager; + + manager = NAUTILUS_UNDO_MANAGER (gtk_object_new (nautilus_undo_manager_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (manager)); + gtk_object_sink (GTK_OBJECT (manager)); + + return manager; } static void diff --git a/libnautilus-extensions/nautilus-user-level-manager.c b/libnautilus-extensions/nautilus-user-level-manager.c index 618bd9709..c8eaed62b 100644 --- a/libnautilus-extensions/nautilus-user-level-manager.c +++ b/libnautilus-extensions/nautilus-user-level-manager.c @@ -136,6 +136,8 @@ user_level_manager_new (void) } manager = NAUTILUS_USER_LEVEL_MANAGER (gtk_object_new (nautilus_user_level_manager_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (manager)); + gtk_object_sink (GTK_OBJECT (manager)); manager->gconf_client = gconf_client_get_default (); diff --git a/libnautilus-extensions/nautilus-volume-monitor.c b/libnautilus-extensions/nautilus-volume-monitor.c index 55eba260c..9592c9bce 100644 --- a/libnautilus-extensions/nautilus-volume-monitor.c +++ b/libnautilus-extensions/nautilus-volume-monitor.c @@ -190,6 +190,12 @@ nautilus_volume_monitor_destroy (GtkObject *object) NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object)); } +static void +unref_global_volume_monitor (void) +{ + gtk_object_unref (GTK_OBJECT (global_volume_monitor)); +} + /* Return the global instance of the NautilusVolumeMonitor. Create one * if we have not done so already */ @@ -200,6 +206,9 @@ nautilus_volume_monitor_get (void) global_volume_monitor = NAUTILUS_VOLUME_MONITOR (gtk_object_new (nautilus_volume_monitor_get_type(), NULL)); + gtk_object_ref (GTK_OBJECT (global_volume_monitor)); + gtk_object_sink (GTK_OBJECT (global_volume_monitor)); + g_atexit (unref_global_volume_monitor); } return global_volume_monitor; diff --git a/libnautilus-private/bonobo-stream-vfs.c b/libnautilus-private/bonobo-stream-vfs.c index ef4b9896c..da7a9794c 100644 --- a/libnautilus-private/bonobo-stream-vfs.c +++ b/libnautilus-private/bonobo-stream-vfs.c @@ -346,7 +346,7 @@ bonobo_stream_create (GnomeVFSHandle *fd) Bonobo_Stream corba_stream; CORBA_Environment ev; - stream_vfs = gtk_type_new (bonobo_stream_vfs_get_type ()); + stream_vfs = BONOBO_STREAM_VFS (gtk_object_new (bonobo_stream_vfs_get_type (), NULL)); stream_vfs->fd = fd; diff --git a/libnautilus-private/nautilus-any-width-bin.c b/libnautilus-private/nautilus-any-width-bin.c index 6d19cd6be..5b73898e0 100644 --- a/libnautilus-private/nautilus-any-width-bin.c +++ b/libnautilus-private/nautilus-any-width-bin.c @@ -46,14 +46,10 @@ nautilus_any_width_bin_initialize (NautilusAnyWidthBin *bin) { } -GtkWidget* +GtkWidget * nautilus_any_width_bin_new (void) { - NautilusAnyWidthBin *bin; - - bin = gtk_type_new (nautilus_any_width_bin_get_type ()); - - return GTK_WIDGET (bin); + return gtk_widget_new (nautilus_any_width_bin_get_type (), NULL); } static void diff --git a/libnautilus-private/nautilus-background.c b/libnautilus-private/nautilus-background.c index b01c19b50..6dc73c83b 100644 --- a/libnautilus-private/nautilus-background.c +++ b/libnautilus-private/nautilus-background.c @@ -235,7 +235,7 @@ nautilus_background_set_image_placement (NautilusBackground *background, NautilusBackground * nautilus_background_new (void) { - return NAUTILUS_BACKGROUND (gtk_type_new (NAUTILUS_TYPE_BACKGROUND)); + return NAUTILUS_BACKGROUND (gtk_object_new (NAUTILUS_TYPE_BACKGROUND, NULL)); } static void @@ -1079,10 +1079,10 @@ nautilus_get_widget_background (GtkWidget *widget) /* Store the background in the widget's data. */ background = nautilus_background_new (); - gtk_object_set_data_full (GTK_OBJECT (widget), "nautilus_background", - background, (GtkDestroyNotify) gtk_object_unref); gtk_object_ref (GTK_OBJECT (background)); gtk_object_sink (GTK_OBJECT (background)); + gtk_object_set_data_full (GTK_OBJECT (widget), "nautilus_background", + background, (GtkDestroyNotify) gtk_object_unref); /* Arrange to get the signal whenever the background changes. */ gtk_signal_connect_object_while_alive (GTK_OBJECT (background), diff --git a/libnautilus-private/nautilus-bookmark.c b/libnautilus-private/nautilus-bookmark.c index a67531bca..e671cfba4 100644 --- a/libnautilus-private/nautilus-bookmark.c +++ b/libnautilus-private/nautilus-bookmark.c @@ -479,7 +479,9 @@ nautilus_bookmark_new_with_icon (const char *uri, const char *name, { NautilusBookmark *new_bookmark; - new_bookmark = gtk_type_new (NAUTILUS_TYPE_BOOKMARK); + new_bookmark = NAUTILUS_BOOKMARK (gtk_object_new (NAUTILUS_TYPE_BOOKMARK, NULL)); + gtk_object_ref (GTK_OBJECT (new_bookmark)); + gtk_object_sink (GTK_OBJECT (new_bookmark)); new_bookmark->details->name = g_strdup (name); new_bookmark->details->uri = g_strdup (uri); diff --git a/libnautilus-private/nautilus-caption-table.c b/libnautilus-private/nautilus-caption-table.c index bfe35a0f4..b6341e1cd 100644 --- a/libnautilus-private/nautilus-caption-table.c +++ b/libnautilus-private/nautilus-caption-table.c @@ -306,13 +306,15 @@ entry_activate (GtkWidget *widget, gpointer data) GtkWidget* nautilus_caption_table_new (guint num_rows) { - GtkWidget *widget = GTK_WIDGET (gtk_type_new (nautilus_caption_table_get_type())); + GtkWidget *widget; - if (num_rows == 0) + if (num_rows == 0) { num_rows = 1; + } - nautilus_caption_table_resize (NAUTILUS_CAPTION_TABLE(widget), num_rows); + widget = gtk_widget_new (nautilus_caption_table_get_type(), NULL); + nautilus_caption_table_resize (NAUTILUS_CAPTION_TABLE (widget), num_rows); gtk_table_set_col_spacing (GTK_TABLE (widget), 0, 10); return widget; diff --git a/libnautilus-private/nautilus-caption.c b/libnautilus-private/nautilus-caption.c index 03bb02c9b..9b2698343 100644 --- a/libnautilus-private/nautilus-caption.c +++ b/libnautilus-private/nautilus-caption.c @@ -140,14 +140,10 @@ update_title (NautilusCaption *caption) /* * NautilusCaption public methods */ -GtkWidget* +GtkWidget * nautilus_caption_new (void) { - NautilusCaption *caption; - - caption = gtk_type_new (nautilus_caption_get_type ()); - - return GTK_WIDGET (caption); + return gtk_widget_new (nautilus_caption_get_type (), NULL); } /** diff --git a/libnautilus-private/nautilus-ctree.c b/libnautilus-private/nautilus-ctree.c index f38774b4e..c7b489da9 100644 --- a/libnautilus-private/nautilus-ctree.c +++ b/libnautilus-private/nautilus-ctree.c @@ -3610,7 +3610,7 @@ nautilus_ctree_new_with_titles (gint columns, g_return_val_if_fail (columns > 0, NULL); g_return_val_if_fail (tree_column >= 0 && tree_column < columns, NULL); - widget = gtk_type_new (NAUTILUS_TYPE_CTREE); + widget = GTK_WIDGET (gtk_type_new (NAUTILUS_TYPE_CTREE)); nautilus_ctree_construct (NAUTILUS_CTREE (widget), columns, tree_column, titles); return widget; diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c index 2d235bf88..bb002c777 100644 --- a/libnautilus-private/nautilus-directory.c +++ b/libnautilus-private/nautilus-directory.c @@ -353,10 +353,12 @@ nautilus_directory_new (const char *uri) g_assert (uri != NULL); if (nautilus_uri_is_trash (uri)) { - directory = NAUTILUS_DIRECTORY (gtk_type_new (NAUTILUS_TYPE_TRASH_DIRECTORY)); + directory = NAUTILUS_DIRECTORY (gtk_object_new (NAUTILUS_TYPE_TRASH_DIRECTORY, NULL)); } else { - directory = NAUTILUS_DIRECTORY (gtk_type_new (NAUTILUS_TYPE_VFS_DIRECTORY)); + directory = NAUTILUS_DIRECTORY (gtk_object_new (NAUTILUS_TYPE_VFS_DIRECTORY, NULL)); } + gtk_object_ref (GTK_OBJECT (directory)); + gtk_object_sink (GTK_OBJECT (directory)); directory->details->uri = g_strdup (uri); directory->details->private_metafile_vfs_uri = construct_private_metafile_vfs_uri (uri); diff --git a/libnautilus-private/nautilus-druid-page-eazel.c b/libnautilus-private/nautilus-druid-page-eazel.c index 7648bf89e..39fadc869 100644 --- a/libnautilus-private/nautilus-druid-page-eazel.c +++ b/libnautilus-private/nautilus-druid-page-eazel.c @@ -448,7 +448,9 @@ nautilus_druid_page_eazel_size_request(GtkWidget *widget, GtkWidget * nautilus_druid_page_eazel_new (NautilusDruidPageEazelPosition position) { - NautilusDruidPageEazel *page = gtk_type_new (nautilus_druid_page_eazel_get_type ()); + NautilusDruidPageEazel *page; + + page = NAUTILUS_DRUID_PAGE_EAZEL (gtk_widget_new (nautilus_druid_page_eazel_get_type (), NULL)); page->position = position; page->title = g_strdup (""); @@ -480,7 +482,9 @@ nautilus_druid_page_eazel_new_with_vals (NautilusDruidPageEazelPosition position GdkPixbuf *sidebar_image, GdkPixbuf *background_image) { - NautilusDruidPageEazel *page = gtk_type_new (nautilus_druid_page_eazel_get_type ()); + NautilusDruidPageEazel *page; + + page = NAUTILUS_DRUID_PAGE_EAZEL (gtk_widget_new (nautilus_druid_page_eazel_get_type (), NULL)); page->position = position; page->title = g_strdup (title ? title : ""); diff --git a/libnautilus-private/nautilus-druid.c b/libnautilus-private/nautilus-druid.c index f6eb52592..d3a592cc9 100644 --- a/libnautilus-private/nautilus-druid.c +++ b/libnautilus-private/nautilus-druid.c @@ -200,5 +200,5 @@ nautilus_druid_size_allocate (GtkWidget *widget, GtkWidget * nautilus_druid_new (void) { - return (GtkWidget *)gtk_type_new (NAUTILUS_TYPE_DRUID); + return gtk_widget_new (NAUTILUS_TYPE_DRUID, NULL); } diff --git a/libnautilus-private/nautilus-entry.c b/libnautilus-private/nautilus-entry.c index b9683f455..e833e197c 100644 --- a/libnautilus-private/nautilus-entry.c +++ b/libnautilus-private/nautilus-entry.c @@ -102,10 +102,10 @@ nautilus_entry_initialize (NautilusEntry *entry) nautilus_undo_set_up_nautilus_entry_for_undo (entry); } -GtkWidget* +GtkWidget * nautilus_entry_new (void) { - return GTK_WIDGET (gtk_type_new (NAUTILUS_TYPE_ENTRY)); + return gtk_widget_new (NAUTILUS_TYPE_ENTRY, NULL); } static void diff --git a/libnautilus-private/nautilus-file-operations-progress.c b/libnautilus-private/nautilus-file-operations-progress.c index 45601d564..7ba7ffb33 100644 --- a/libnautilus-private/nautilus-file-operations-progress.c +++ b/libnautilus-private/nautilus-file-operations-progress.c @@ -274,7 +274,7 @@ nautilus_file_operations_progress_new (const char *title, GtkWidget *widget; NautilusFileOperationsProgress *dialog; - widget = gtk_type_new (nautilus_file_operations_progress_get_type ()); + widget = gtk_widget_new (nautilus_file_operations_progress_get_type (), NULL); dialog = NAUTILUS_FILE_OPERATIONS_PROGRESS (widget); nautilus_file_operations_progress_set_operation_string (dialog, operation_string); diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c index 267d62ff7..a5502c47c 100644 --- a/libnautilus-private/nautilus-file.c +++ b/libnautilus-private/nautilus-file.c @@ -123,7 +123,9 @@ nautilus_file_new_from_name (NautilusDirectory *directory, g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (name[0] != '\0', NULL); - file = gtk_type_new (NAUTILUS_TYPE_FILE); + file = NAUTILUS_FILE (gtk_object_new (NAUTILUS_TYPE_FILE, NULL)); + gtk_object_ref (GTK_OBJECT (file)); + gtk_object_sink (GTK_OBJECT (file)); nautilus_directory_ref (directory); @@ -228,7 +230,9 @@ nautilus_file_new_from_info (NautilusDirectory *directory, g_return_val_if_fail (NAUTILUS_IS_DIRECTORY (directory), NULL); g_return_val_if_fail (info != NULL, NULL); - file = gtk_type_new (NAUTILUS_TYPE_FILE); + file = NAUTILUS_FILE (gtk_object_new (NAUTILUS_TYPE_FILE, NULL)); + gtk_object_ref (GTK_OBJECT (file)); + gtk_object_sink (GTK_OBJECT (file)); nautilus_directory_ref (directory); file->details->directory = directory; diff --git a/libnautilus-private/nautilus-font-factory.c b/libnautilus-private/nautilus-font-factory.c index 347562d71..136a6171c 100644 --- a/libnautilus-private/nautilus-font-factory.c +++ b/libnautilus-private/nautilus-font-factory.c @@ -23,14 +23,24 @@ */ #include <config.h> - #include "nautilus-font-factory.h" + +#include "nautilus-global-preferences.h" #include "nautilus-gtk-macros.h" #include "nautilus-string.h" -#include "nautilus-global-preferences.h" - -#include <unistd.h> #include <pthread.h> +#include <unistd.h> + +#define NAUTILUS_TYPE_FONT_FACTORY \ + (nautilus_font_factory_get_type ()) +#define NAUTILUS_FONT_FACTORY(obj) \ + (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_FONT_FACTORY, NautilusFontFactory)) +#define NAUTILUS_FONT_FACTORY_CLASS(klass) \ + (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_FONT_FACTORY, NautilusFontFactoryClass)) +#define NAUTILUS_IS_FONT_FACTORY(obj) \ + (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_FONT_FACTORY)) +#define NAUTILUS_IS_FONT_FACTORY_CLASS(klass) \ + (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_FONT_FACTORY)) /* The font factory */ typedef struct { @@ -49,36 +59,33 @@ typedef struct { GdkFont *font; } FontHashNode; -static GtkType nautilus_font_factory_get_type (void); -static void nautilus_font_factory_initialize_class (NautilusFontFactoryClass *class); -static void nautilus_font_factory_initialize (NautilusFontFactory *factory); -static NautilusFontFactory *nautilus_get_current_font_factory (void); -static NautilusFontFactory *nautilus_font_factory_new (void); -static char * make_font_name_string (const char *foundry, - const char *familiy, - const char *weight, - const char *slant, - const char *set_width, - const char *add_style, - guint size_in_pixels); -static FontHashNode * font_hash_node_alloc (const char *name); -static FontHashNode * font_hash_node_lookup (const char *name); -static FontHashNode * font_hash_node_lookup_with_insertion (const char *name); - -#if 0 -static void font_hash_node_free (FontHashNode *node); -#endif - -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusFontFactory, nautilus_font_factory, GTK_TYPE_OBJECT) +static GdkFont *fixed_font; +static NautilusFontFactory *global_font_factory = NULL; + +static GtkType nautilus_font_factory_get_type (void); +static void nautilus_font_factory_initialize_class (NautilusFontFactoryClass *class); +static void nautilus_font_factory_initialize (NautilusFontFactory *factory); +static void destroy (GtkObject *object); + +NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusFontFactory, + nautilus_font_factory, + GTK_TYPE_OBJECT) + +static void +unref_global_font_factory (void) +{ + gtk_object_unref (GTK_OBJECT (global_font_factory)); +} /* Return a pointer to the single global font factory. */ static NautilusFontFactory * nautilus_get_current_font_factory (void) { - static NautilusFontFactory *global_font_factory = NULL; - if (global_font_factory == NULL) { - global_font_factory = nautilus_font_factory_new (); + global_font_factory = NAUTILUS_FONT_FACTORY (gtk_object_new (nautilus_font_factory_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (global_font_factory)); + gtk_object_sink (GTK_OBJECT (global_font_factory)); + g_atexit (unref_global_font_factory); } return global_font_factory; @@ -90,17 +97,6 @@ nautilus_font_factory_get (void) return GTK_OBJECT (nautilus_get_current_font_factory ()); } -/* Create the font factory. */ -static NautilusFontFactory * -nautilus_font_factory_new (void) -{ - NautilusFontFactory *factory; - - factory = (NautilusFontFactory *) gtk_object_new (nautilus_font_factory_get_type (), NULL); - - return factory; -} - static void nautilus_font_factory_initialize (NautilusFontFactory *factory) { @@ -113,79 +109,91 @@ nautilus_font_factory_initialize_class (NautilusFontFactoryClass *class) GtkObjectClass *object_class; object_class = GTK_OBJECT_CLASS (class); + object_class->destroy = destroy; } static FontHashNode * font_hash_node_alloc (const char *name) { - FontHashNode * node; + FontHashNode *node; g_assert (name != NULL); - node = g_new (FontHashNode, 1); - + node = g_new0 (FontHashNode, 1); node->name = g_strdup (name); - node->font = NULL; - return node; } -#if 0 static void font_hash_node_free (FontHashNode *node) { g_assert (node != NULL); g_free (node->name); + gdk_font_unref (node->font); g_free (node); } -#endif + +static void +free_one_hash_node (gpointer key, gpointer value, gpointer callback_data) +{ + FontHashNode *node; + + g_assert (key != NULL); + g_assert (value != NULL); + g_assert (callback_data == NULL); + + node = value; + + g_assert (node->name == key); + + font_hash_node_free (node); +} + +static void +destroy (GtkObject *object) +{ + NautilusFontFactory *factory; + + factory = NAUTILUS_FONT_FACTORY (object); + + g_hash_table_foreach (factory->fonts, free_one_hash_node, NULL); + g_hash_table_destroy (factory->fonts); + + NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object)); +} static FontHashNode * font_hash_node_lookup (const char *name) { - static NautilusFontFactory *factory; - - gpointer hash_value; + NautilusFontFactory *factory; g_assert (name != NULL); factory = nautilus_get_current_font_factory (); - g_assert (factory != NULL); - - hash_value = g_hash_table_lookup (factory->fonts, (gconstpointer) name); - - return (FontHashNode *) hash_value; + return (FontHashNode *) g_hash_table_lookup (factory->fonts, name); } static FontHashNode * font_hash_node_lookup_with_insertion (const char *name) { - static NautilusFontFactory *factory; - - FontHashNode *node = NULL; + NautilusFontFactory *factory; + FontHashNode *node; + GdkFont *font; g_assert (name != NULL); factory = nautilus_get_current_font_factory (); - g_assert (factory != NULL); - - node = font_hash_node_lookup (name); if (node == NULL) { - GdkFont *font; - font = gdk_font_load (name); if (font != NULL) { node = font_hash_node_alloc (name); node->font = font; - - gdk_font_ref (node->font); - g_hash_table_insert (factory->fonts, node->name, node); } } @@ -195,7 +203,7 @@ font_hash_node_lookup_with_insertion (const char *name) static char * make_font_name_string (const char *foundry, - const char *familiy, + const char *family, const char *weight, const char *slant, const char *set_width, @@ -229,7 +237,7 @@ make_font_name_string (const char *foundry, | | | | | | | | | | | | | +------------- char_set_encoding */ font_name = g_strdup_printf ("-%s-%s-%s-%s-%s-%s-%d-%s-%s-%s-%s-%s-%s-%s", foundry, - familiy, + family, weight, slant, set_width, @@ -251,8 +259,8 @@ GdkFont * nautilus_font_factory_get_font_by_family (const char *family, guint size_in_pixels) { - static NautilusFontFactory *factory; - GdkFont *font = NULL; + NautilusFontFactory *factory; + GdkFont *font; FontHashNode *node; char *font_name; @@ -260,8 +268,6 @@ nautilus_font_factory_get_font_by_family (const char *family, g_return_val_if_fail (size_in_pixels > 0, NULL); factory = nautilus_get_current_font_factory (); - g_assert (factory != NULL); - font_name = make_font_name_string ("*", family, "medium", @@ -270,18 +276,13 @@ nautilus_font_factory_get_font_by_family (const char *family, "*", size_in_pixels); - g_assert (font_name != NULL); - node = font_hash_node_lookup_with_insertion (font_name); if (node != NULL) { - g_assert (node->font); - + g_assert (node->font != NULL); font = node->font; - gdk_font_ref (font); - } - else { + } else { font = nautilus_font_factory_get_fallback_font (); } @@ -305,16 +306,21 @@ nautilus_font_factory_get_font_from_preferences (guint size_in_pixels) return font; } +static void +unref_fixed_font (void) +{ + gdk_font_unref (fixed_font); +} + GdkFont * nautilus_font_factory_get_fallback_font (void) { - static GdkFont *fixed_font; - if (fixed_font == NULL) { fixed_font = gdk_font_load ("fixed"); g_assert (fixed_font != NULL); - gdk_font_ref (fixed_font); + g_atexit (unref_fixed_font); } + gdk_font_ref (fixed_font); return fixed_font; } diff --git a/libnautilus-private/nautilus-font-picker.c b/libnautilus-private/nautilus-font-picker.c index 1fbc9f170..e18dc91e2 100644 --- a/libnautilus-private/nautilus-font-picker.c +++ b/libnautilus-private/nautilus-font-picker.c @@ -391,14 +391,10 @@ set_width_picker_changed_callback (GtkWidget *string_picker, gpointer user_data) /* * NautilusFontPicker public methods */ -GtkWidget* +GtkWidget * nautilus_font_picker_new (void) { - NautilusFontPicker *font_picker; - - font_picker = gtk_type_new (nautilus_font_picker_get_type ()); - - return GTK_WIDGET (font_picker); + return gtk_widget_new (nautilus_font_picker_get_type (), NULL); } void diff --git a/libnautilus-private/nautilus-horizontal-splitter.c b/libnautilus-private/nautilus-horizontal-splitter.c index 437b1cb8a..70f1b5198 100644 --- a/libnautilus-private/nautilus-horizontal-splitter.c +++ b/libnautilus-private/nautilus-horizontal-splitter.c @@ -286,7 +286,7 @@ toggle_splitter_position (NautilusHorizontalSplitter *splitter) GtkWidget * nautilus_horizontal_splitter_new (void) { - return GTK_WIDGET (gtk_type_new (nautilus_horizontal_splitter_get_type ())); + return gtk_widget_new (nautilus_horizontal_splitter_get_type (), NULL); } /* handle mouse downs by remembering the position and the time */ diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c index 3f13c80b3..a67ad9d69 100644 --- a/libnautilus-private/nautilus-icon-container.c +++ b/libnautilus-private/nautilus-icon-container.c @@ -3113,7 +3113,7 @@ nautilus_icon_container_new (void) gtk_widget_push_visual (gdk_rgb_get_visual ()); gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - container = gtk_type_new (nautilus_icon_container_get_type ()); + container = gtk_widget_new (nautilus_icon_container_get_type (), NULL); gtk_widget_pop_visual (); gtk_widget_pop_colormap (); diff --git a/libnautilus-private/nautilus-icon-factory.c b/libnautilus-private/nautilus-icon-factory.c index 7840f2e84..1c2fffed0 100644 --- a/libnautilus-private/nautilus-icon-factory.c +++ b/libnautilus-private/nautilus-icon-factory.c @@ -276,6 +276,8 @@ get_icon_factory (void) if (global_icon_factory == NULL) { global_icon_factory = NAUTILUS_ICON_FACTORY (gtk_object_new (nautilus_icon_factory_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (global_icon_factory)); + gtk_object_sink (GTK_OBJECT (global_icon_factory)); /* Update to match the theme. */ icon_theme_changed_callback (NULL); diff --git a/libnautilus-private/nautilus-image.c b/libnautilus-private/nautilus-image.c index 60dd62506..8affda5e7 100644 --- a/libnautilus-private/nautilus-image.c +++ b/libnautilus-private/nautilus-image.c @@ -415,10 +415,10 @@ nautilus_image_paint (NautilusImage *image, } /* Public NautilusImage */ -GtkWidget* +GtkWidget * nautilus_image_new (void) { - return GTK_WIDGET (gtk_type_new (nautilus_image_get_type ())); + return gtk_widget_new (nautilus_image_get_type (), NULL); } void diff --git a/libnautilus-private/nautilus-keep-last-vertical-box.c b/libnautilus-private/nautilus-keep-last-vertical-box.c index 473c65f5e..7b0fe4aca 100644 --- a/libnautilus-private/nautilus-keep-last-vertical-box.c +++ b/libnautilus-private/nautilus-keep-last-vertical-box.c @@ -70,7 +70,7 @@ nautilus_keep_last_vertical_box_new (gint spacing) { NautilusKeepLastVerticalBox *box; - box = gtk_type_new (nautilus_keep_last_vertical_box_get_type ()); + box = NAUTILUS_KEEP_LAST_VERTICAL_BOX (gtk_widget_new (nautilus_keep_last_vertical_box_get_type (), NULL)); GTK_BOX (box)->spacing = spacing; diff --git a/libnautilus-private/nautilus-label.c b/libnautilus-private/nautilus-label.c index 5675262da..4dda451ae 100644 --- a/libnautilus-private/nautilus-label.c +++ b/libnautilus-private/nautilus-label.c @@ -452,12 +452,12 @@ label_recompute_line_geometries (NautilusLabel *label) } /* Public NautilusLabel */ -GtkWidget* +GtkWidget * nautilus_label_new (const char *text) { NautilusLabel *label; - label = NAUTILUS_LABEL (gtk_type_new (nautilus_label_get_type ())); + label = NAUTILUS_LABEL (gtk_widget_new (nautilus_label_get_type (), NULL)); nautilus_label_set_text (label, text); diff --git a/libnautilus-private/nautilus-list-column-title.c b/libnautilus-private/nautilus-list-column-title.c index 93262fb4b..d52bdc3eb 100644 --- a/libnautilus-private/nautilus-list-column-title.c +++ b/libnautilus-private/nautilus-list-column-title.c @@ -155,7 +155,8 @@ nautilus_list_column_title_initialize_class (gpointer klass) NautilusListColumnTitle * nautilus_list_column_title_new (void) { - return gtk_type_new (nautilus_list_column_title_get_type ()); + return NAUTILUS_LIST_COLUMN_TITLE + (gtk_widget_new (nautilus_list_column_title_get_type (), NULL)); } static void @@ -234,16 +235,16 @@ nautilus_list_column_title_finalize (GtkObject *object) if (column_title->details->up_indicator_pixmap != NULL) { gdk_pixmap_unref (column_title->details->up_indicator_pixmap); column_title->details->up_indicator_pixmap = NULL; - - g_assert (column_title->details->up_indicator_mask != NULL); + } + if (column_title->details->up_indicator_mask != NULL) { gdk_bitmap_unref (column_title->details->up_indicator_mask); column_title->details->up_indicator_mask = NULL; } if (column_title->details->down_indicator_pixmap != NULL) { gdk_pixmap_unref (column_title->details->down_indicator_pixmap); column_title->details->down_indicator_pixmap = NULL; - - g_assert (column_title->details->down_indicator_mask != NULL); + } + if (column_title->details->down_indicator_mask != NULL) { gdk_bitmap_unref (column_title->details->down_indicator_mask); column_title->details->down_indicator_mask = NULL; } diff --git a/libnautilus-private/nautilus-list.c b/libnautilus-private/nautilus-list.c index d3efda5ae..135e215a5 100644 --- a/libnautilus-private/nautilus-list.c +++ b/libnautilus-private/nautilus-list.c @@ -3150,7 +3150,7 @@ nautilus_list_new_with_titles (int columns, const char * const *titles) { NautilusList *list; - list = gtk_type_new (nautilus_list_get_type ()); + list = NAUTILUS_LIST (gtk_type_new (nautilus_list_get_type ())); gtk_clist_construct (GTK_CLIST (list), columns, NULL); if (titles) { GtkCList *clist; diff --git a/libnautilus-private/nautilus-password-dialog.c b/libnautilus-private/nautilus-password-dialog.c index c5da58062..cab03648c 100644 --- a/libnautilus-private/nautilus-password-dialog.c +++ b/libnautilus-private/nautilus-password-dialog.c @@ -210,7 +210,7 @@ caption_table_activate_callback (GtkWidget *widget, gint entry, gpointer callbac } /* Public NautilusPasswordDialog methods */ -GtkWidget* +GtkWidget * nautilus_password_dialog_new (const char *dialog_title, const char *message, const char *username, @@ -219,7 +219,7 @@ nautilus_password_dialog_new (const char *dialog_title, { NautilusPasswordDialog *password_dialog; - password_dialog = gtk_type_new (nautilus_password_dialog_get_type ()); + password_dialog = NAUTILUS_PASSWORD_DIALOG (gtk_widget_new (nautilus_password_dialog_get_type (), NULL)); gnome_dialog_constructv (GNOME_DIALOG (password_dialog), dialog_title, stock_buttons); diff --git a/libnautilus-private/nautilus-preference.c b/libnautilus-private/nautilus-preference.c index cbbd59481..44197b167 100644 --- a/libnautilus-private/nautilus-preference.c +++ b/libnautilus-private/nautilus-preference.c @@ -302,12 +302,11 @@ nautilus_preference_new_from_type (const char *name, g_return_val_if_fail (name != NULL, NULL); - preference = gtk_type_new (nautilus_preference_get_type ()); - - g_assert (preference != NULL ); + preference = NAUTILUS_PREFERENCE (gtk_object_new (nautilus_preference_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (preference)); + gtk_object_sink (GTK_OBJECT (preference)); preference->detail->name = g_strdup (name); - preference->detail->type = type; preference_allocate_type_info (preference); diff --git a/libnautilus-private/nautilus-preferences-box.c b/libnautilus-private/nautilus-preferences-box.c index a1053549d..557e7dafd 100644 --- a/libnautilus-private/nautilus-preferences-box.c +++ b/libnautilus-private/nautilus-preferences-box.c @@ -312,7 +312,8 @@ nautilus_preferences_box_new (const gchar *box_title) { NautilusPreferencesBox *prefs_box; - prefs_box = gtk_type_new (nautilus_preferences_box_get_type ()); + prefs_box = NAUTILUS_PREFERENCES_BOX + (gtk_widget_new (nautilus_preferences_box_get_type (), NULL)); prefs_box_construct (prefs_box); diff --git a/libnautilus-private/nautilus-preferences-dialog.c b/libnautilus-private/nautilus-preferences-dialog.c index 48d0dfd27..1a126b778 100644 --- a/libnautilus-private/nautilus-preferences-dialog.c +++ b/libnautilus-private/nautilus-preferences-dialog.c @@ -211,12 +211,13 @@ nautilus_preferences_dialog_construct (NautilusPreferencesDialog *prefs_dialog, gtk_widget_show (prefs_dialog->details->prefs_box); } -GtkWidget* +GtkWidget * nautilus_preferences_dialog_new (const gchar *dialog_title) { NautilusPreferencesDialog *prefs_dialog; - prefs_dialog = gtk_type_new (nautilus_preferences_dialog_get_type ()); + prefs_dialog = NAUTILUS_PREFERENCES_DIALOG + (gtk_widget_new (nautilus_preferences_dialog_get_type (), NULL)); nautilus_preferences_dialog_construct (prefs_dialog, dialog_title); diff --git a/libnautilus-private/nautilus-preferences-group.c b/libnautilus-private/nautilus-preferences-group.c index 666c71a15..b96163ec2 100644 --- a/libnautilus-private/nautilus-preferences-group.c +++ b/libnautilus-private/nautilus-preferences-group.c @@ -181,14 +181,15 @@ preferences_group_construct (NautilusPreferencesGroup *group, /* * NautilusPreferencesGroup public methods */ -GtkWidget* +GtkWidget * nautilus_preferences_group_new (const gchar *title) { NautilusPreferencesGroup *group; g_return_val_if_fail (title != NULL, NULL); - group = gtk_type_new (nautilus_preferences_group_get_type ()); + group = NAUTILUS_PREFERENCES_GROUP + (gtk_widget_new (nautilus_preferences_group_get_type (), NULL)); preferences_group_construct (group, title); diff --git a/libnautilus-private/nautilus-preferences-item.c b/libnautilus-private/nautilus-preferences-item.c index 9cc460497..d8e2311f8 100644 --- a/libnautilus-private/nautilus-preferences-item.c +++ b/libnautilus-private/nautilus-preferences-item.c @@ -627,7 +627,8 @@ nautilus_preferences_item_new (const gchar *preference_name, g_return_val_if_fail (preference_name != NULL, NULL); - item = gtk_type_new (nautilus_preferences_item_get_type ()); + item = NAUTILUS_PREFERENCES_ITEM + (gtk_widget_new (nautilus_preferences_item_get_type (), NULL)); /* Cast away the constness so that the preferences object can be * refed in this object. */ diff --git a/libnautilus-private/nautilus-preferences-pane.c b/libnautilus-private/nautilus-preferences-pane.c index 54051fc05..2b5167d92 100644 --- a/libnautilus-private/nautilus-preferences-pane.c +++ b/libnautilus-private/nautilus-preferences-pane.c @@ -214,7 +214,7 @@ prefs_pane_construct (NautilusPreferencesPane *prefs_pane, /* * NautilusPreferencesPane public methods */ -GtkWidget* +GtkWidget * nautilus_preferences_pane_new (const gchar *pane_title, const gchar *pane_description) { @@ -223,7 +223,8 @@ nautilus_preferences_pane_new (const gchar *pane_title, g_return_val_if_fail (pane_title != NULL, NULL); g_return_val_if_fail (pane_description != NULL, NULL); - prefs_pane = gtk_type_new (nautilus_preferences_pane_get_type ()); + prefs_pane = NAUTILUS_PREFERENCES_PANE + (gtk_widget_new (nautilus_preferences_pane_get_type (), NULL)); prefs_pane_construct (prefs_pane, pane_title, pane_description); diff --git a/libnautilus-private/nautilus-radio-button-group.c b/libnautilus-private/nautilus-radio-button-group.c index 25b46f1bc..71db70521 100644 --- a/libnautilus-private/nautilus-radio-button-group.c +++ b/libnautilus-private/nautilus-radio-button-group.c @@ -201,7 +201,8 @@ nautilus_radio_button_group_new (gboolean is_horizontal) { NautilusRadioButtonGroup *button_group; - button_group = gtk_type_new (nautilus_radio_button_group_get_type ()); + button_group = NAUTILUS_RADIO_BUTTON_GROUP + (gtk_widget_new (nautilus_radio_button_group_get_type (), NULL)); button_group->details->horizontal = is_horizontal; return GTK_WIDGET (button_group); diff --git a/libnautilus-private/nautilus-scalable-font.c b/libnautilus-private/nautilus-scalable-font.c index 10921f19c..5e7bf3d99 100644 --- a/libnautilus-private/nautilus-scalable-font.c +++ b/libnautilus-private/nautilus-scalable-font.c @@ -595,7 +595,9 @@ nautilus_scalable_font_new (const char *family, __FUNCTION__, family, weight, slant, set_width, font_entry->font_handle); #endif - font = NAUTILUS_SCALABLE_FONT (gtk_type_new (nautilus_scalable_font_get_type ())); + font = NAUTILUS_SCALABLE_FONT (gtk_object_new (nautilus_scalable_font_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (font)); + gtk_object_sink (GTK_OBJECT (font)); font->detail->font_handle = font_entry->font_handle; diff --git a/libnautilus-private/nautilus-string-picker.c b/libnautilus-private/nautilus-string-picker.c index 1d4ef14ea..ad804f939 100644 --- a/libnautilus-private/nautilus-string-picker.c +++ b/libnautilus-private/nautilus-string-picker.c @@ -155,14 +155,10 @@ option_menu_activate_callback (GtkWidget *menu_item, gpointer callback_data) /* * NautilusStringPicker public methods */ -GtkWidget* +GtkWidget * nautilus_string_picker_new (void) { - NautilusStringPicker *string_picker; - - string_picker = gtk_type_new (nautilus_string_picker_get_type ()); - - return GTK_WIDGET (string_picker); + return gtk_widget_new (nautilus_string_picker_get_type (), NULL); } /** diff --git a/libnautilus-private/nautilus-text-caption.c b/libnautilus-private/nautilus-text-caption.c index 683e6eb4c..8e4e853f0 100644 --- a/libnautilus-private/nautilus-text-caption.c +++ b/libnautilus-private/nautilus-text-caption.c @@ -152,14 +152,10 @@ entry_changed_callback (GtkWidget *entry, gpointer user_data) /* * NautilusTextCaption public methods */ -GtkWidget* +GtkWidget * nautilus_text_caption_new (void) { - NautilusTextCaption *text_caption; - - text_caption = gtk_type_new (nautilus_text_caption_get_type ()); - - return GTK_WIDGET (text_caption); + return gtk_widget_new (nautilus_text_caption_get_type (), NULL); } /** diff --git a/libnautilus-private/nautilus-theme.c b/libnautilus-private/nautilus-theme.c index 00941f5c8..068cfb001 100644 --- a/libnautilus-private/nautilus-theme.c +++ b/libnautilus-private/nautilus-theme.c @@ -53,18 +53,18 @@ static xmlDocPtr default_theme_document = NULL; /* return the current theme by asking the preferences machinery */ char * -nautilus_theme_get_theme(void) +nautilus_theme_get_theme (void) { return nautilus_preferences_get (NAUTILUS_PREFERENCES_THEME, "default"); } /* set the current theme */ void -nautilus_theme_set_theme(const char *new_theme) +nautilus_theme_set_theme (const char *new_theme) { char *old_theme; - old_theme = nautilus_theme_get_theme(); + old_theme = nautilus_theme_get_theme (); if (nautilus_strcmp (old_theme, new_theme)) { nautilus_preferences_set (NAUTILUS_PREFERENCES_THEME, new_theme); } @@ -157,7 +157,7 @@ nautilus_theme_get_theme_data (const char *resource_name, const char *property_n if (theme_document != NULL) { /* fetch the resource node */ - resource_node = nautilus_xml_get_child_by_name(xmlDocGetRootElement (theme_document), resource_name); + resource_node = nautilus_xml_get_child_by_name (xmlDocGetRootElement (theme_document), resource_name); if (resource_node) { temp_str = xmlGetProp(resource_node, property_name); if (temp_str) { diff --git a/libnautilus-private/nautilus-undo-context.c b/libnautilus-private/nautilus-undo-context.c index f64639e59..cc94a9f02 100644 --- a/libnautilus-private/nautilus-undo-context.c +++ b/libnautilus-private/nautilus-undo-context.c @@ -118,11 +118,14 @@ nautilus_undo_context_new (Nautilus_Undo_Manager undo_manager) CORBA_exception_init (&ev); - context = gtk_type_new (nautilus_undo_context_get_type ()); + context = NAUTILUS_UNDO_CONTEXT (gtk_object_new (nautilus_undo_context_get_type (), NULL)); context->undo_manager = CORBA_Object_duplicate (undo_manager, &ev); CORBA_exception_free (&ev); + gtk_object_ref (GTK_OBJECT (context)); + gtk_object_sink (GTK_OBJECT (context)); + return context; } diff --git a/libnautilus-private/nautilus-undo-manager.c b/libnautilus-private/nautilus-undo-manager.c index b684978df..41a41aacd 100644 --- a/libnautilus-private/nautilus-undo-manager.c +++ b/libnautilus-private/nautilus-undo-manager.c @@ -230,7 +230,13 @@ corba_undo (PortableServer_Servant servant, NautilusUndoManager * nautilus_undo_manager_new (void) { - return gtk_type_new (nautilus_undo_manager_get_type ()); + NautilusUndoManager *manager; + + manager = NAUTILUS_UNDO_MANAGER (gtk_object_new (nautilus_undo_manager_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (manager)); + gtk_object_sink (GTK_OBJECT (manager)); + + return manager; } static void diff --git a/libnautilus-private/nautilus-user-level-manager.c b/libnautilus-private/nautilus-user-level-manager.c index 618bd9709..c8eaed62b 100644 --- a/libnautilus-private/nautilus-user-level-manager.c +++ b/libnautilus-private/nautilus-user-level-manager.c @@ -136,6 +136,8 @@ user_level_manager_new (void) } manager = NAUTILUS_USER_LEVEL_MANAGER (gtk_object_new (nautilus_user_level_manager_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (manager)); + gtk_object_sink (GTK_OBJECT (manager)); manager->gconf_client = gconf_client_get_default (); diff --git a/libnautilus-private/nautilus-volume-monitor.c b/libnautilus-private/nautilus-volume-monitor.c index 55eba260c..9592c9bce 100644 --- a/libnautilus-private/nautilus-volume-monitor.c +++ b/libnautilus-private/nautilus-volume-monitor.c @@ -190,6 +190,12 @@ nautilus_volume_monitor_destroy (GtkObject *object) NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (object)); } +static void +unref_global_volume_monitor (void) +{ + gtk_object_unref (GTK_OBJECT (global_volume_monitor)); +} + /* Return the global instance of the NautilusVolumeMonitor. Create one * if we have not done so already */ @@ -200,6 +206,9 @@ nautilus_volume_monitor_get (void) global_volume_monitor = NAUTILUS_VOLUME_MONITOR (gtk_object_new (nautilus_volume_monitor_get_type(), NULL)); + gtk_object_ref (GTK_OBJECT (global_volume_monitor)); + gtk_object_sink (GTK_OBJECT (global_volume_monitor)); + g_atexit (unref_global_volume_monitor); } return global_volume_monitor; diff --git a/libnautilus/nautilus-undo-transaction.c b/libnautilus/nautilus-undo-transaction.c index c240f145d..25d6e4e87 100644 --- a/libnautilus/nautilus-undo-transaction.c +++ b/libnautilus/nautilus-undo-transaction.c @@ -177,7 +177,9 @@ nautilus_undo_transaction_new (const char *operation_name, { NautilusUndoTransaction *transaction; - transaction = gtk_type_new (nautilus_undo_transaction_get_type ()); + transaction = NAUTILUS_UNDO_TRANSACTION (gtk_object_new (nautilus_undo_transaction_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (transaction)); + gtk_object_sink (GTK_OBJECT (transaction)); transaction->operation_name = g_strdup (operation_name); transaction->undo_menu_item_label = g_strdup (undo_menu_item_label); diff --git a/libnautilus/nautilus-view.c b/libnautilus/nautilus-view.c index 61467d7c6..4e01ea0ec 100644 --- a/libnautilus/nautilus-view.c +++ b/libnautilus/nautilus-view.c @@ -282,7 +282,7 @@ nautilus_view_new_from_bonobo_control (BonoboControl *control) { NautilusView *view; - view = NAUTILUS_VIEW (gtk_type_new (NAUTILUS_TYPE_VIEW)); + view = NAUTILUS_VIEW (gtk_object_new (NAUTILUS_TYPE_VIEW, NULL)); view->details->control = control; bonobo_object_add_interface (BONOBO_OBJECT (view), BONOBO_OBJECT (control)); nautilus_undo_set_up_bonobo_control (control); diff --git a/nautilus-installer/src/installer.c b/nautilus-installer/src/installer.c index 8700d66b3..e7bbdfcd9 100644 --- a/nautilus-installer/src/installer.c +++ b/nautilus-installer/src/installer.c @@ -115,7 +115,7 @@ create_pixmap (GtkWidget *widget, NULL, (gchar**)xpmdata); - g_assert (gdkpixmap); + g_assert (gdkpixmap != NULL); pixbuf = gdk_pixbuf_get_from_drawable (NULL, gdkpixmap, @@ -124,7 +124,9 @@ create_pixmap (GtkWidget *widget, x, y); gdk_pixmap_unref (gdkpixmap); - gdk_bitmap_unref (mask); + if (mask != NULL) { + gdk_bitmap_unref (mask); + } return pixbuf; } @@ -1259,8 +1261,8 @@ eazel_installer_get_type() { The _new method simply builds the service using gtk_object_new */ -EazelInstaller* -eazel_installer_new() +EazelInstaller * +eazel_installer_new (void) { EazelInstaller *installer; diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index 5917300d8..082f5eb69 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -2488,6 +2488,7 @@ no_items_showing (FMDirectoryView *directory_view) /* This can happen when it's too early to tell. */ if (!nautilus_file_is_directory (directory_as_file)) { + nautilus_file_unref (directory_as_file); return FALSE; } diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c index 937d37c82..bf8db4d7b 100644 --- a/src/file-manager/fm-list-view.c +++ b/src/file-manager/fm-list-view.c @@ -1539,7 +1539,9 @@ install_row_images (FMListView *list_view, guint row) &pixmap, &bitmap); gtk_clist_set_pixmap (clist, row, LIST_VIEW_COLUMN_ICON, pixmap, bitmap); gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (bitmap); + if (bitmap != NULL) { + gdk_bitmap_unref (bitmap); + } /* Install any emblems for this file. */ nautilus_list_set_pixbuf_list (list, row, LIST_VIEW_COLUMN_EMBLEMS, diff --git a/src/file-manager/nautilus-trash-monitor.c b/src/file-manager/nautilus-trash-monitor.c index 940f51680..190240fef 100644 --- a/src/file-manager/nautilus-trash-monitor.c +++ b/src/file-manager/nautilus-trash-monitor.c @@ -158,7 +158,10 @@ nautilus_trash_monitor_get (void) { if (nautilus_trash_monitor == NULL) { /* not running yet, start it up */ - nautilus_trash_monitor = gtk_type_new (NAUTILUS_TYPE_TRASH_MONITOR); + nautilus_trash_monitor = NAUTILUS_TRASH_MONITOR + (gtk_object_new (NAUTILUS_TYPE_TRASH_MONITOR, NULL)); + gtk_object_ref (GTK_OBJECT (nautilus_trash_monitor)); + gtk_object_sink (GTK_OBJECT (nautilus_trash_monitor)); g_atexit (unref_trash_monitor); } diff --git a/src/nautilus-about.c b/src/nautilus-about.c index 0bab5344b..81f632678 100644 --- a/src/nautilus-about.c +++ b/src/nautilus-about.c @@ -183,7 +183,7 @@ nautilus_about_initialize (NautilusAbout *about) } /* allocate a new about dialog */ -GtkWidget* +GtkWidget * nautilus_about_new (const char *title, const char *version, const char *copyright, @@ -193,7 +193,7 @@ nautilus_about_new (const char *title, { NautilusAbout *about; - about = gtk_type_new (nautilus_about_get_type ()); + about = NAUTILUS_ABOUT (gtk_widget_new (nautilus_about_get_type (), NULL)); /* draw the info onto the pixbuf, once and for all */ nautilus_about_draw_info (about, title, version, copyright, authors, comments, timestamp); diff --git a/src/nautilus-application.c b/src/nautilus-application.c index c1a9667d4..45f4e16b1 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -182,7 +182,12 @@ nautilus_application_initialize (NautilusApplication *application) NautilusApplication * nautilus_application_new (void) { - return NAUTILUS_APPLICATION (gtk_object_new (nautilus_application_get_type (), NULL)); + NautilusApplication *application; + + application = NAUTILUS_APPLICATION (gtk_object_new (nautilus_application_get_type (), NULL)); + gtk_object_ref (GTK_OBJECT (application)); + gtk_object_sink (GTK_OBJECT (application)); + return application; } static void @@ -488,10 +493,10 @@ nautilus_application_create_window (NautilusApplication *application) g_return_val_if_fail (NAUTILUS_IS_APPLICATION (application), NULL); - window = NAUTILUS_WINDOW (gtk_object_new (nautilus_window_get_type (), + window = NAUTILUS_WINDOW (gtk_widget_new (nautilus_window_get_type (), "app", GTK_OBJECT (application), "app_id", "nautilus", NULL)); - + gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (nautilus_window_delete_event_callback), NULL); diff --git a/src/nautilus-bookmark-list.c b/src/nautilus-bookmark-list.c index 958614231..0d9b6f12c 100644 --- a/src/nautilus-bookmark-list.c +++ b/src/nautilus-bookmark-list.c @@ -464,7 +464,13 @@ nautilus_bookmark_list_load_file (NautilusBookmarkList *bookmarks) NautilusBookmarkList * nautilus_bookmark_list_new (void) { - return gtk_type_new (NAUTILUS_TYPE_BOOKMARK_LIST); + NautilusBookmarkList *list; + + list = NAUTILUS_BOOKMARK_LIST (gtk_object_new (NAUTILUS_TYPE_BOOKMARK_LIST, NULL)); + gtk_object_ref (GTK_OBJECT (list)); + gtk_object_sink (GTK_OBJECT (list)); + + return list; } /** diff --git a/src/nautilus-component-adapter-factory.c b/src/nautilus-component-adapter-factory.c index 1e0d0a79f..000cef471 100644 --- a/src/nautilus-component-adapter-factory.c +++ b/src/nautilus-component-adapter-factory.c @@ -37,8 +37,7 @@ #define NAUTILUS_COMPONENT_ADAPTER_FACTORY_IID "OAFIID:nautilus_adapter_factory:fd24ecfc-0a6e-47ab-bc53-69d7487c6ad4" -struct NautilusComponentAdapterFactoryDetails -{ +struct NautilusComponentAdapterFactoryDetails { Nautilus_ComponentAdapterFactory corba_factory; }; @@ -58,7 +57,6 @@ nautilus_component_adapter_factory_initialize_class (NautilusComponentAdapterFa object_class = (GtkObjectClass*) klass; object_class->destroy = nautilus_component_adapter_factory_destroy; - } static void @@ -68,40 +66,27 @@ nautilus_component_adapter_factory_initialize (NautilusComponentAdapterFactory * factory->details = g_new0 (NautilusComponentAdapterFactoryDetails, 1); - /* FIXME: what if activation fails? Is it valid for an - initialize function to fail, and if so, how should it do - so?? */ - object_client = bonobo_object_activate (NAUTILUS_COMPONENT_ADAPTER_FACTORY_IID, 0); - - - /* FIXME: what if this query fails? Is it valid for an - initialize function to fail, and if so, how should it do - so?? */ - if (object_client != NULL) { factory->details->corba_factory = bonobo_object_query_interface (BONOBO_OBJECT (object_client), "IDL:Nautilus/ComponentAdapterFactory:1.0"); - - /* FIXME: Do we want a gtk_object_unref or a bonobo_object_unref? */ bonobo_object_unref (BONOBO_OBJECT (object_client)); } + + /* FIXME: Since corba_factory could now be NULL, what do we do in that case? */ } static void nautilus_component_adapter_factory_destroy (GtkObject *object) { - CORBA_Environment ev; NautilusComponentAdapterFactory *factory; factory = NAUTILUS_COMPONENT_ADAPTER_FACTORY (object); - CORBA_exception_init (&ev); - if (factory->details->corba_factory != NULL) { - Bonobo_Unknown_unref (factory->details->corba_factory, &ev); + if (factory->details->corba_factory != CORBA_OBJECT_NIL) { + bonobo_object_release_unref (factory->details->corba_factory, NULL); } - CORBA_exception_free (&ev); g_free (factory->details); } @@ -113,25 +98,23 @@ static NautilusComponentAdapterFactory *global_component_adapter_factory = NULL; static void component_adapter_factory_at_exit_destructor (void) { - if (global_component_adapter_factory != NULL) { - gtk_object_unref (GTK_OBJECT (global_component_adapter_factory)); - } + gtk_object_unref (GTK_OBJECT (global_component_adapter_factory)); } NautilusComponentAdapterFactory * nautilus_component_adapter_factory_get (void) { - if (global_component_adapter_factory == NULL) { - global_component_adapter_factory = gtk_type_new (NAUTILUS_TYPE_COMPONENT_ADAPTER_FACTORY); + global_component_adapter_factory = NAUTILUS_COMPONENT_ADAPTER_FACTORY + (gtk_object_new (NAUTILUS_TYPE_COMPONENT_ADAPTER_FACTORY, NULL)); + gtk_object_ref (GTK_OBJECT (global_component_adapter_factory)); + gtk_object_sink (GTK_OBJECT (global_component_adapter_factory)); - /* FIXME: is it OK to destroy CORBA objects in an atexit handler? */ g_atexit (component_adapter_factory_at_exit_destructor); } return global_component_adapter_factory; - } Nautilus_View diff --git a/src/nautilus-desktop-window.c b/src/nautilus-desktop-window.c index 0571d66ee..e22dcc43d 100644 --- a/src/nautilus-desktop-window.c +++ b/src/nautilus-desktop-window.c @@ -96,7 +96,7 @@ nautilus_desktop_window_new (NautilusApplication *application) char *desktop_directory_uri; window = NAUTILUS_DESKTOP_WINDOW - (gtk_object_new (nautilus_desktop_window_get_type(), + (gtk_widget_new (nautilus_desktop_window_get_type(), "app", application, "app_id", "nautilus", NULL)); diff --git a/src/nautilus-information-panel.c b/src/nautilus-information-panel.c index e7883efc4..fd41ee672 100644 --- a/src/nautilus-information-panel.c +++ b/src/nautilus-information-panel.c @@ -437,7 +437,7 @@ nautilus_sidebar_create_context_menu (NautilusSidebar *sidebar) /* add a separator */ menu_item = gtk_menu_item_new (); gtk_widget_show (menu_item); - gtk_menu_append (GTK_MENU(menu), menu_item); + gtk_menu_append (GTK_MENU (menu), menu_item); /* add the sidebar panels */ nautilus_sidebar_add_panel_items(sidebar, menu); @@ -448,7 +448,7 @@ nautilus_sidebar_create_context_menu (NautilusSidebar *sidebar) NautilusSidebar * nautilus_sidebar_new (void) { - return NAUTILUS_SIDEBAR (gtk_type_new (nautilus_sidebar_get_type ())); + return NAUTILUS_SIDEBAR (gtk_widget_new (nautilus_sidebar_get_type (), NULL)); } /* utility routine to handle mapping local file names to a uri */ diff --git a/src/nautilus-property-browser.c b/src/nautilus-property-browser.c index f61d3194b..b62ffd3dc 100644 --- a/src/nautilus-property-browser.c +++ b/src/nautilus-property-browser.c @@ -396,8 +396,10 @@ nautilus_property_browser_destroy (GtkObject *object) NautilusPropertyBrowser * nautilus_property_browser_new (void) { - NautilusPropertyBrowser *browser = NAUTILUS_PROPERTY_BROWSER - (gtk_type_new (nautilus_property_browser_get_type ())); + NautilusPropertyBrowser *browser; + + browser = NAUTILUS_PROPERTY_BROWSER + (gtk_widget_new (nautilus_property_browser_get_type (), NULL)); gtk_container_set_border_width (GTK_CONTAINER (browser), 0); gtk_window_set_policy (GTK_WINDOW(browser), TRUE, TRUE, FALSE); diff --git a/src/nautilus-shell.c b/src/nautilus-shell.c index af9ddf685..1c3d63e73 100644 --- a/src/nautilus-shell.c +++ b/src/nautilus-shell.c @@ -146,7 +146,7 @@ nautilus_shell_new (NautilusApplication *application) { NautilusShell *shell; - shell = gtk_type_new (NAUTILUS_TYPE_SHELL); + shell = NAUTILUS_SHELL (gtk_object_new (NAUTILUS_TYPE_SHELL, NULL)); shell->details->application = application; return shell; } diff --git a/src/nautilus-sidebar-tabs.c b/src/nautilus-sidebar-tabs.c index 9cfa9bf8b..78a242720 100644 --- a/src/nautilus-sidebar-tabs.c +++ b/src/nautilus-sidebar-tabs.c @@ -262,10 +262,10 @@ nautilus_sidebar_tabs_initialize (NautilusSidebarTabs *sidebar_tabs) sidebar_tabs->details->title_prelit = FALSE; } -GtkWidget* +GtkWidget * nautilus_sidebar_tabs_new (void) { - return GTK_WIDGET (gtk_type_new (nautilus_sidebar_tabs_get_type ())); + return gtk_widget_new (nautilus_sidebar_tabs_get_type (), NULL); } /* utility to destroy all the storage used by a tab item */ diff --git a/src/nautilus-sidebar-title.c b/src/nautilus-sidebar-title.c index 3f1502f18..455f39dc8 100644 --- a/src/nautilus-sidebar-title.c +++ b/src/nautilus-sidebar-title.c @@ -196,7 +196,7 @@ nautilus_sidebar_title_destroy (GtkObject *object) GtkWidget * nautilus_sidebar_title_new (void) { - return GTK_WIDGET (gtk_type_new (nautilus_sidebar_title_get_type ())); + return gtk_widget_new (nautilus_sidebar_title_get_type (), NULL); } /* utility to set up the style of a widget to have a particular color */ diff --git a/src/nautilus-sidebar.c b/src/nautilus-sidebar.c index e7883efc4..fd41ee672 100644 --- a/src/nautilus-sidebar.c +++ b/src/nautilus-sidebar.c @@ -437,7 +437,7 @@ nautilus_sidebar_create_context_menu (NautilusSidebar *sidebar) /* add a separator */ menu_item = gtk_menu_item_new (); gtk_widget_show (menu_item); - gtk_menu_append (GTK_MENU(menu), menu_item); + gtk_menu_append (GTK_MENU (menu), menu_item); /* add the sidebar panels */ nautilus_sidebar_add_panel_items(sidebar, menu); @@ -448,7 +448,7 @@ nautilus_sidebar_create_context_menu (NautilusSidebar *sidebar) NautilusSidebar * nautilus_sidebar_new (void) { - return NAUTILUS_SIDEBAR (gtk_type_new (nautilus_sidebar_get_type ())); + return NAUTILUS_SIDEBAR (gtk_widget_new (nautilus_sidebar_get_type (), NULL)); } /* utility routine to handle mapping local file names to a uri */ diff --git a/src/nautilus-signaller.c b/src/nautilus-signaller.c index d64223681..6853a775f 100644 --- a/src/nautilus-signaller.c +++ b/src/nautilus-signaller.c @@ -32,8 +32,9 @@ #include <gtk/gtksignal.h> #include <libnautilus-extensions/nautilus-gtk-macros.h> -enum -{ +static NautilusSignaller *global_signaller = NULL; + +enum { HISTORY_LIST_CHANGED, EMBLEMS_CHANGED, LAST_SIGNAL @@ -42,9 +43,12 @@ enum static guint nautilus_signaller_signals[LAST_SIGNAL]; static void nautilus_signaller_initialize_class (gpointer klass); -static void nautilus_signaller_initialize (gpointer object, gpointer klass); +static void nautilus_signaller_initialize (gpointer object, + gpointer klass); -NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusSignaller, nautilus_signaller, GTK_TYPE_OBJECT) +NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusSignaller, + nautilus_signaller, + GTK_TYPE_OBJECT) static void nautilus_signaller_initialize_class (gpointer klass) @@ -76,14 +80,20 @@ nautilus_signaller_initialize (gpointer object, gpointer klass) /* placeholder to allow use of boilerplate macro */ } +static void +unref_global_signaller (void) +{ + gtk_object_unref (GTK_OBJECT (global_signaller)); +} + NautilusSignaller * nautilus_signaller_get_current (void) { - static NautilusSignaller *global_signaller = NULL; - - if (global_signaller == NULL) - { - global_signaller = gtk_type_new (NAUTILUS_TYPE_SIGNALLER); + if (global_signaller == NULL) { + global_signaller = NAUTILUS_SIGNALLER (gtk_object_new (NAUTILUS_TYPE_SIGNALLER, NULL)); + gtk_object_ref (GTK_OBJECT (global_signaller)); + gtk_object_sink (GTK_OBJECT (global_signaller)); + g_atexit (unref_global_signaller); } return global_signaller; diff --git a/src/nautilus-theme-selector.c b/src/nautilus-theme-selector.c index aca19d527..88d9f624f 100644 --- a/src/nautilus-theme-selector.c +++ b/src/nautilus-theme-selector.c @@ -301,7 +301,7 @@ NautilusThemeSelector * nautilus_theme_selector_new (void) { NautilusThemeSelector *browser = NAUTILUS_THEME_SELECTOR - (gtk_type_new (nautilus_theme_selector_get_type ())); + (gtk_widget_new (nautilus_theme_selector_get_type (), NULL)); gtk_container_set_border_width (GTK_CONTAINER (browser), 0); gtk_window_set_policy (GTK_WINDOW(browser), TRUE, TRUE, FALSE); @@ -659,7 +659,7 @@ add_theme (NautilusThemeSelector *theme_selector, const char *theme_path_uri, co /* set up the theme logo image */ gtk_clist_set_pixmap (GTK_CLIST(theme_selector->details->theme_list), theme_index, 0, pixmap , mask); gtk_clist_set_row_data (GTK_CLIST(theme_selector->details->theme_list), - theme_index, g_strdup(theme_name )); + theme_index, g_strdup (theme_name)); /* set up the fonts for the theme name and description */ @@ -667,7 +667,9 @@ add_theme (NautilusThemeSelector *theme_selector, const char *theme_path_uri, co set_preferred_font_for_cell (theme_selector, theme_index, 2, 10); gdk_pixmap_unref (pixmap); - gdk_bitmap_unref (mask); + if (mask != NULL) { + gdk_bitmap_unref (mask); + } } /* utility routine to populate by iterating through the passed-in directory */ diff --git a/src/nautilus-throbber.c b/src/nautilus-throbber.c index 0967a97ed..199480b6d 100644 --- a/src/nautilus-throbber.c +++ b/src/nautilus-throbber.c @@ -171,11 +171,10 @@ nautilus_throbber_initialize (NautilusThrobber *throbber) } /* allocate a new throbber */ -GtkWidget* -nautilus_throbber_new () +GtkWidget * +nautilus_throbber_new (void) { - NautilusThrobber *throbber = gtk_type_new (nautilus_throbber_get_type ()); - return GTK_WIDGET (throbber); + return gtk_widget_new (nautilus_throbber_get_type (), NULL); } /* handler for handling theme changes */ diff --git a/src/nautilus-view-frame.c b/src/nautilus-view-frame.c index 80b9b0562..ba4a66bac 100644 --- a/src/nautilus-view-frame.c +++ b/src/nautilus-view-frame.c @@ -297,7 +297,7 @@ nautilus_view_frame_new (BonoboUIHandler *ui_handler, { NautilusViewFrame *view_frame; - view_frame = NAUTILUS_VIEW_FRAME (gtk_object_new (nautilus_view_frame_get_type (), NULL)); + view_frame = NAUTILUS_VIEW_FRAME (gtk_widget_new (nautilus_view_frame_get_type (), NULL)); view_frame->ui_handler = ui_handler; view_frame->undo_manager = undo_manager; diff --git a/src/nautilus-zoom-control.c b/src/nautilus-zoom-control.c index a0658ab54..5a0544d3c 100644 --- a/src/nautilus-zoom-control.c +++ b/src/nautilus-zoom-control.c @@ -235,11 +235,10 @@ nautilus_zoom_control_initialize (NautilusZoomControl *zoom_control) } /* allocate a new zoom control */ -GtkWidget* -nautilus_zoom_control_new () +GtkWidget * +nautilus_zoom_control_new (void) { - NautilusZoomControl *zoom_control = gtk_type_new (nautilus_zoom_control_get_type ()); - return GTK_WIDGET (zoom_control); + return gtk_widget_new (nautilus_zoom_control_get_type (), NULL); } /* handler for handling theme changes */ @@ -620,16 +619,10 @@ nautilus_zoom_control_button_press_event (GtkWidget *widget, GdkEventButton *eve /* check for the context menu button and handle by creating and showing the menu */ if (event->button == CONTEXTUAL_MENU_BUTTON) { - GtkMenu *zoom_menu = create_zoom_menu (widget); - - gtk_object_ref (GTK_OBJECT (zoom_menu)); - gtk_object_sink (GTK_OBJECT (zoom_menu)); - - nautilus_pop_up_context_menu (zoom_menu, + nautilus_pop_up_context_menu (create_zoom_menu (widget), NAUTILUS_DEFAULT_POPUP_MENU_DISPLACEMENT, NAUTILUS_DEFAULT_POPUP_MENU_DISPLACEMENT, CONTEXTUAL_MENU_BUTTON); - gtk_object_unref (GTK_OBJECT (zoom_menu)); return TRUE; } |