X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-window.c;h=fe4119dd374fd8d40626693eb7184c791ff5ec16;hb=a09789d93e0160b14f1b06ad91080a249c252253;hp=7d478a642bfa38d87d807c5a2e3aac490f07f9e6;hpb=fd5bffd255a87432a2d64a5dd03f98e142f2130f;p=pspp diff --git a/src/ui/gui/psppire-window.c b/src/ui/gui/psppire-window.c index 7d478a642b..fe4119dd37 100644 --- a/src/ui/gui/psppire-window.c +++ b/src/ui/gui/psppire-window.c @@ -44,41 +44,12 @@ #include "psppire-syntax-window.h" #include "psppire-window-register.h" -static void psppire_window_base_init (PsppireWindowClass *class); static void psppire_window_class_init (PsppireWindowClass *class); static void psppire_window_init (PsppireWindow *window); - static GObjectClass *parent_class; -GType -psppire_window_get_type (void) -{ - static GType psppire_window_type = 0; - - if (!psppire_window_type) - { - static const GTypeInfo psppire_window_info = - { - sizeof (PsppireWindowClass), - (GBaseInitFunc) psppire_window_base_init, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) psppire_window_class_init, - (GClassFinalizeFunc) NULL, - NULL, - sizeof (PsppireWindow), - 0, - (GInstanceInitFunc) psppire_window_init, - }; - - psppire_window_type = - g_type_register_static (PSPPIRE_TYPE_WINDOW_BASE, "PsppireWindow", - &psppire_window_info, G_TYPE_FLAG_ABSTRACT); - } - - return psppire_window_type; -} - +G_DEFINE_ABSTRACT_TYPE (PsppireWindow, psppire_window, PSPPIRE_TYPE_WINDOW_BASE) /* Properties */ enum @@ -268,6 +239,8 @@ psppire_window_class_init (PsppireWindowClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); + object_class->finalize = psppire_window_finalize; + GParamSpec *description_spec = null_if_empty_param ("description", "Description", @@ -309,16 +282,6 @@ psppire_window_class_init (PsppireWindowClass *class) } -static void -psppire_window_base_init (PsppireWindowClass *class) -{ - GObjectClass *object_class = G_OBJECT_CLASS (class); - - object_class->finalize = psppire_window_finalize; -} - - - static void insert_menuitem_into_menu (PsppireWindow *window, gpointer key) { @@ -326,6 +289,7 @@ insert_menuitem_into_menu (PsppireWindow *window, gpointer key) GtkWidget *item; filename = g_filename_display_name (key); item = gtk_check_menu_item_new_with_label (filename); + g_object_ref_sink (item); g_free (filename); g_hash_table_insert (window->menuitem_table, key, item); @@ -411,17 +375,19 @@ psppire_window_init (PsppireWindow *window) window->list_name = NULL; window->edited = NULL; - window->menuitem_table = g_hash_table_new (g_str_hash, g_str_equal); + window->menuitem_table = g_hash_table_new_full (g_str_hash, g_str_equal, + NULL, g_object_unref); g_signal_connect (window, "realize", G_CALLBACK (insert_existing_items), NULL); - window->insert_handler = g_signal_connect (psppire_window_register_new (), + PsppireWindowRegister *reg = psppire_window_register_new (); + window->insert_handler = g_signal_connect (reg, "inserted", G_CALLBACK (insert_menuitem), window); - window->remove_handler = g_signal_connect (psppire_window_register_new (), + window->remove_handler = g_signal_connect (reg, "removed", G_CALLBACK (remove_menuitem), window); @@ -469,7 +435,7 @@ psppire_window_query_save (PsppireWindow *se) gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("If you don't save, changes from the last %ld seconds will be permanently lost."), - timespan / G_TIME_SPAN_SECOND); + (long int) (timespan / G_TIME_SPAN_SECOND)); gtk_dialog_add_button (GTK_DIALOG (dialog), _("Close _without saving"), @@ -562,7 +528,8 @@ psppire_window_model_get_type (void) NULL, /* class_data */ 0, 0, /* n_preallocs */ - NULL + NULL, + NULL /* value_table */ }; window_model_type = @@ -799,7 +766,8 @@ dump_heading_transition (const struct spv_item *old, group_close_item_submit (group_close_item_create ()); for (size_t i = common; i < new_path.n; i++) group_open_item_submit (group_open_item_create ( - new_path.nodes[i]->command_id)); + new_path.nodes[i]->command_id, + new_path.nodes[i]->label)); free_path (&old_path); free_path (&new_path); @@ -829,7 +797,7 @@ read_spv_file (const char *filename) if (items[i]->type == SPV_ITEM_TEXT) spv_text_submit (items[i]); else if (items[i]->type == SPV_ITEM_TABLE) - pivot_table_submit (spv_item_get_table (items[i])); + pivot_table_submit (pivot_table_ref (spv_item_get_table (items[i]))); prev_heading = heading; } dump_heading_transition (prev_heading, spv_get_root (spv)); @@ -941,4 +909,3 @@ delete_recent (const char *file_name) g_free (uri); } -