diff options
Diffstat (limited to 'gtk/gtkdialog.c')
-rw-r--r-- | gtk/gtkdialog.c | 159 |
1 files changed, 81 insertions, 78 deletions
diff --git a/gtk/gtkdialog.c b/gtk/gtkdialog.c index 228a6decc0..f5c5614a09 100644 --- a/gtk/gtkdialog.c +++ b/gtk/gtkdialog.c @@ -30,7 +30,6 @@ #include "gtkhseparator.h" #include "gtkmarshalers.h" #include "gtkvbox.h" -#include "gtksignal.h" #include "gdkkeysyms.h" #include "gtkmain.h" #include "gtkintl.h" @@ -75,26 +74,28 @@ enum { static gpointer parent_class; static guint dialog_signals[LAST_SIGNAL]; -GtkType +GType gtk_dialog_get_type (void) { - static GtkType dialog_type = 0; + static GType dialog_type = 0; if (!dialog_type) { - static const GtkTypeInfo dialog_info = + static const GTypeInfo dialog_info = { - "GtkDialog", - sizeof (GtkDialog), sizeof (GtkDialogClass), - (GtkClassInitFunc) gtk_dialog_class_init, - (GtkObjectInitFunc) gtk_dialog_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gtk_dialog_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GtkDialog), + 0, /* n_preallocs */ + (GInstanceInitFunc) gtk_dialog_init, }; - dialog_type = gtk_type_unique (GTK_TYPE_WINDOW, &dialog_info); + dialog_type = g_type_register_static (GTK_TYPE_WINDOW, "GtkDialog", + &dialog_info, 0); } return dialog_type; @@ -104,12 +105,10 @@ static void gtk_dialog_class_init (GtkDialogClass *class) { GObjectClass *gobject_class; - GtkObjectClass *object_class; GtkWidgetClass *widget_class; GtkBindingSet *binding_set; gobject_class = G_OBJECT_CLASS (class); - object_class = GTK_OBJECT_CLASS (class); widget_class = GTK_WIDGET_CLASS (class); parent_class = g_type_class_peek_parent (class); @@ -131,21 +130,23 @@ gtk_dialog_class_init (GtkDialogClass *class) G_PARAM_READWRITE)); dialog_signals[RESPONSE] = - gtk_signal_new ("response", - GTK_RUN_LAST, - GTK_CLASS_TYPE (object_class), - GTK_SIGNAL_OFFSET (GtkDialogClass, response), - _gtk_marshal_NONE__INT, - GTK_TYPE_NONE, 1, - GTK_TYPE_INT); + g_signal_new ("response", + G_OBJECT_CLASS_TYPE (class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkDialogClass, response), + NULL, NULL, + _gtk_marshal_NONE__INT, + G_TYPE_NONE, 1, + G_TYPE_INT); dialog_signals[CLOSE] = - gtk_signal_new ("close", - GTK_RUN_LAST | GTK_RUN_ACTION, - GTK_CLASS_TYPE (object_class), - GTK_SIGNAL_OFFSET (GtkDialogClass, close), - _gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); + g_signal_new ("close", + G_OBJECT_CLASS_TYPE (class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkDialogClass, close), + NULL, NULL, + _gtk_marshal_NONE__NONE, + G_TYPE_NONE, 0); gtk_widget_class_install_style_property (widget_class, g_param_spec_int ("content_area_border", @@ -213,10 +214,10 @@ gtk_dialog_init (GtkDialog *dialog) * by connecting a handler, we have to have the FIRST signal * connection on the dialog. */ - gtk_signal_connect (GTK_OBJECT (dialog), - "delete_event", - GTK_SIGNAL_FUNC (gtk_dialog_delete_event_handler), - NULL); + g_signal_connect (dialog, + "delete_event", + G_CALLBACK (gtk_dialog_delete_event_handler), + NULL); dialog->vbox = gtk_vbox_new (FALSE, 0); @@ -364,7 +365,7 @@ gtk_dialog_close (GtkDialog *dialog) GtkWidget* gtk_dialog_new (void) { - return GTK_WIDGET (gtk_type_new (GTK_TYPE_DIALOG)); + return g_object_new (GTK_TYPE_DIALOG, NULL); } static GtkWidget* @@ -374,7 +375,7 @@ gtk_dialog_new_empty (const gchar *title, { GtkDialog *dialog; - dialog = GTK_DIALOG (g_object_new (GTK_TYPE_DIALOG, NULL)); + dialog = g_object_new (GTK_TYPE_DIALOG, NULL); if (title) gtk_window_set_title (GTK_WINDOW (dialog), title); @@ -468,17 +469,17 @@ struct _ResponseData static ResponseData* get_response_data (GtkWidget *widget) { - ResponseData *ad = gtk_object_get_data (GTK_OBJECT (widget), - "gtk-dialog-response-data"); + ResponseData *ad = g_object_get_data (G_OBJECT (widget), + "gtk-dialog-response-data"); if (ad == NULL) { ad = g_new (ResponseData, 1); - gtk_object_set_data_full (GTK_OBJECT (widget), - "gtk-dialog-response-data", - ad, - g_free); + g_object_set_data_full (G_OBJECT (widget), + "gtk-dialog-response-data", + ad, + g_free); } return ad; @@ -502,6 +503,7 @@ action_widget_activated (GtkWidget *widget, GtkDialog *dialog) gtk_dialog_response (dialog, response_id); } + /** * gtk_dialog_add_action_widget: * @dialog: a #GtkDialog @@ -516,9 +518,9 @@ action_widget_activated (GtkWidget *widget, GtkDialog *dialog) * <literal>action_area</literal> field of the #GtkDialog struct. **/ void -gtk_dialog_add_action_widget (GtkDialog *dialog, - GtkWidget *child, - gint response_id) +gtk_dialog_add_action_widget (GtkDialog *dialog, + GtkWidget *child, + gint response_id) { ResponseData *ad; gint signal_id = 0; @@ -531,21 +533,21 @@ gtk_dialog_add_action_widget (GtkDialog *dialog, ad->response_id = response_id; if (GTK_IS_BUTTON (child)) - { - signal_id = g_signal_lookup ("clicked", GTK_TYPE_BUTTON); - } + signal_id = g_signal_lookup ("clicked", GTK_TYPE_BUTTON); else signal_id = GTK_WIDGET_GET_CLASS (child)->activate_signal != 0; if (signal_id) { - const gchar* name = gtk_signal_name (signal_id); - - gtk_signal_connect_while_alive (GTK_OBJECT (child), - name, - GTK_SIGNAL_FUNC (action_widget_activated), - dialog, - GTK_OBJECT (dialog)); + GClosure *closure; + + closure = g_cclosure_new_object (G_CALLBACK (action_widget_activated), + G_OBJECT (dialog)); + g_signal_connect_closure_by_id (child, + signal_id, + 0, + closure, + FALSE); } else g_warning ("Only 'activatable' widgets can be packed into the action area of a GtkDialog"); @@ -797,9 +799,10 @@ gtk_dialog_response (GtkDialog *dialog, { g_return_if_fail (GTK_IS_DIALOG (dialog)); - gtk_signal_emit (GTK_OBJECT (dialog), - dialog_signals[RESPONSE], - response_id); + g_signal_emit (dialog, + dialog_signals[RESPONSE], + 0, + response_id); } typedef struct @@ -915,7 +918,7 @@ gtk_dialog_run (GtkDialog *dialog) g_return_val_if_fail (GTK_IS_DIALOG (dialog), -1); - gtk_object_ref (GTK_OBJECT (dialog)); + g_object_ref (dialog); if (!GTK_WIDGET_VISIBLE (dialog)) gtk_widget_show (GTK_WIDGET (dialog)); @@ -925,30 +928,30 @@ gtk_dialog_run (GtkDialog *dialog) gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); response_handler = - gtk_signal_connect (GTK_OBJECT (dialog), - "response", - GTK_SIGNAL_FUNC (run_response_handler), - &ri); + g_signal_connect (dialog, + "response", + G_CALLBACK (run_response_handler), + &ri); unmap_handler = - gtk_signal_connect (GTK_OBJECT (dialog), - "unmap", - GTK_SIGNAL_FUNC (run_unmap_handler), - &ri); + g_signal_connect (dialog, + "unmap", + G_CALLBACK (run_unmap_handler), + &ri); delete_handler = - gtk_signal_connect (GTK_OBJECT (dialog), - "delete_event", - GTK_SIGNAL_FUNC (run_delete_handler), - &ri); + g_signal_connect (dialog, + "delete_event", + G_CALLBACK (run_delete_handler), + &ri); destroy_handler = - gtk_signal_connect (GTK_OBJECT (dialog), - "destroy", - GTK_SIGNAL_FUNC (run_destroy_handler), - &ri); + g_signal_connect (dialog, + "destroy", + G_CALLBACK (run_destroy_handler), + &ri); - ri.loop = g_main_new (FALSE); + ri.loop = g_main_loop_new (NULL, FALSE); GDK_THREADS_LEAVE (); g_main_loop_run (ri.loop); @@ -964,13 +967,13 @@ gtk_dialog_run (GtkDialog *dialog) if (!was_modal) gtk_window_set_modal (GTK_WINDOW(dialog), FALSE); - gtk_signal_disconnect (GTK_OBJECT (dialog), response_handler); - gtk_signal_disconnect (GTK_OBJECT (dialog), unmap_handler); - gtk_signal_disconnect (GTK_OBJECT (dialog), delete_handler); - gtk_signal_disconnect (GTK_OBJECT (dialog), destroy_handler); + g_signal_handler_disconnect (dialog, response_handler); + g_signal_handler_disconnect (dialog, unmap_handler); + g_signal_handler_disconnect (dialog, delete_handler); + g_signal_handler_disconnect (dialog, destroy_handler); } - gtk_object_unref (GTK_OBJECT (dialog)); + g_object_unref (dialog); return ri.response_id; } |