summaryrefslogtreecommitdiff
path: root/gtk/gtkdialog.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2000-11-06 16:44:01 +0000
committerHavoc Pennington <hp@src.gnome.org>2000-11-06 16:44:01 +0000
commit69f42512fa819749e1a2ca9f27a1b940ca8fc0d6 (patch)
tree72d241f6e17b304a567ea61309b8518227f55266 /gtk/gtkdialog.c
parent8aef169f86a3267070214c94372c513a9495ec89 (diff)
downloadgdk-pixbuf-69f42512fa819749e1a2ca9f27a1b940ca8fc0d6.tar.gz
Derive from GtkDialog, and use stock buttons. Should be 100% source
2000-11-02 Havoc Pennington <hp@redhat.com> * gtk/gtkfilesel.h, gtk/gtkfilesel.c: Derive from GtkDialog, and use stock buttons. Should be 100% source compatible, appropriate filesel fields now point to dialog->vbox and dialog->action_area. On the bizarre side, dialog->action_area and filesel->action_area are not the same widget. (gtk_file_selection_init): Put some padding around the selection entry, so it isn't touching the GtkDialog separator. * gtk/gtkfontsel.h, gtk/gtkfontsel.c: Derive from GtkDialog, use stock buttons, etc. Should also be source compatible. Set the dialog default title in _init not _new(). * gtk/gtkcolorseldialog.c (gtk_color_selection_dialog_init): Use stock buttons; don't put a button box inside the existing dialog button box. Don't bother with push/pop colormap anymore. * gtk/gtkdialog.h (GtkResponseType): Add a bunch of more specific GTK_RESPONSE_* values. This is clearer than ACCEPT/REJECT for message dialog, and necessary for the font selection and color selection with help and apply buttons. * gtk/gtkdialog.c (gtk_dialog_add_button): Return a pointer to the created button widget. Set GTK_CAN_DEFAULT on the button. (gtk_dialog_init): Default to GTK_BUTTONBOX_END, put less spacing between buttons, put less padding around the action area. (gtk_dialog_run): Exit on unmap rather than on destroy. This will also exit the loop if the widget is hidden. (gtk_dialog_delete_event_handler): Use GTK_RESPONSE_DELETE_EVENT instead of GTK_RESPONSE_NONE; since we're already adding a bunch of GTK_RESPONSE_* stuff, this seems cleaner, and lets you special-case delete event. * gtk/gtktexttagtable.c, gtk/gtktextview.c: Fix doc comment formatting
Diffstat (limited to 'gtk/gtkdialog.c')
-rw-r--r--gtk/gtkdialog.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/gtk/gtkdialog.c b/gtk/gtkdialog.c
index d21be69c2..2b7ef7307 100644
--- a/gtk/gtkdialog.c
+++ b/gtk/gtkdialog.c
@@ -129,9 +129,11 @@ gtk_dialog_init (GtkDialog *dialog)
dialog->action_area = gtk_hbutton_box_new ();
gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog->action_area),
- GTK_BUTTONBOX_SPREAD);
+ GTK_BUTTONBOX_END);
+
+ gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog->action_area), 5);
- gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 10);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 5);
gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->action_area,
FALSE, TRUE, 0);
gtk_widget_show (dialog->action_area);
@@ -147,7 +149,7 @@ gtk_dialog_delete_event_handler (GtkWidget *widget,
gpointer user_data)
{
/* emit response signal */
- gtk_dialog_response (GTK_DIALOG (widget), GTK_RESPONSE_NONE);
+ gtk_dialog_response (GTK_DIALOG (widget), GTK_RESPONSE_DELETE_EVENT);
/* Do the destroy by default */
return FALSE;
@@ -244,7 +246,7 @@ gtk_dialog_new_empty (const gchar *title,
* GTK_STOCK_BUTTON_OK,
* GTK_RESPONSE_ACCEPT,
* GTK_STOCK_BUTTON_CANCEL,
- * GTK_RESPONSE_NONE,
+ * GTK_RESPONSE_REJECT,
* NULL);
* </programlisting>
*
@@ -373,10 +375,12 @@ gtk_dialog_add_action_widget (GtkDialog *dialog,
* Adds a button with the given text (or a stock button, if @button_text is a
* stock ID) and sets things up so that clicking the button will emit the
* "response" signal with the given @response_id. The button is appended to the
- * end of the dialog's action area.
- *
+ * end of the dialog's action area. The button widget is returned, but usually
+ * you don't need it.
+ *
+ * Return value: the button widget that was added
**/
-void
+GtkWidget*
gtk_dialog_add_button (GtkDialog *dialog,
const gchar *button_text,
gint response_id)
@@ -389,11 +393,15 @@ gtk_dialog_add_button (GtkDialog *dialog,
button = gtk_button_new_stock (button_text,
gtk_window_get_default_accel_group (GTK_WINDOW (dialog)));
+ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+
gtk_widget_show (button);
gtk_dialog_add_action_widget (dialog,
button,
response_id);
+
+ return button;
}
static void
@@ -491,7 +499,7 @@ shutdown_loop (RunInfo *ri)
}
static void
-run_destroy_handler (GtkDialog *dialog, gpointer data)
+run_unmap_handler (GtkDialog *dialog, gpointer data)
{
RunInfo *ri = data;
@@ -542,7 +550,7 @@ run_delete_handler (GtkDialog *dialog,
* During gtk_dialog_run(), the default behavior of "delete_event" is
* disabled; if the dialog receives "delete_event", it will not be
* destroyed as windows usually are, and gtk_dialog_run() will return
- * GTK_RESPONSE_NONE. Also, during gtk_dialog_run() the dialog will be
+ * GTK_RESPONSE_DELETE_EVENT. Also, during gtk_dialog_run() the dialog will be
* modal. You can force gtk_dialog_run() to return at any time by
* calling gtk_dialog_response() to emit the "response"
* signal. Destroying the dialog during gtk_dialog_run() is a very bad
@@ -597,8 +605,8 @@ gtk_dialog_run (GtkDialog *dialog)
destroy_handler =
gtk_signal_connect (GTK_OBJECT (dialog),
- "destroy",
- GTK_SIGNAL_FUNC (run_destroy_handler),
+ "unmap",
+ GTK_SIGNAL_FUNC (run_unmap_handler),
&ri);
delete_handler =