implement GtkDialog::close() and synthesize a "delete_event"

2003-03-20  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimpdialog.c: implement GtkDialog::close() and
	synthesize a "delete_event" unconditionally.

	* app/widgets/gimpviewabledialog.c: emit "close" instead of
	synthesizing "delete_event".

	* app/widgets/gimppreview.[ch]: removed "extended_clicked" signal
	and added "GdkModifierType state" to "clicked"'s signature.

	* app/gui/file-open-dialog.c
	* app/gui/test-commands.c
	* app/widgets/gimpcontainergridview.c
	* app/widgets/gimptoolbox-indicator-area.c: changed accordingly.
This commit is contained in:
Michael Natterer
2003-03-20 15:49:48 +00:00
committed by Michael Natterer
parent af06615498
commit 4d6b4f512c
12 changed files with 87 additions and 118 deletions

View File

@ -1,3 +1,19 @@
2003-03-20 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpdialog.c: implement GtkDialog::close() and
synthesize a "delete_event" unconditionally.
* app/widgets/gimpviewabledialog.c: emit "close" instead of
synthesizing "delete_event".
* app/widgets/gimppreview.[ch]: removed "extended_clicked" signal
and added "GdkModifierType state" to "clicked"'s signature.
* app/gui/file-open-dialog.c
* app/gui/test-commands.c
* app/widgets/gimpcontainergridview.c
* app/widgets/gimptoolbox-indicator-area.c: changed accordingly.
2003-03-20 Sven Neumann <sven@gimp.org> 2003-03-20 Sven Neumann <sven@gimp.org>
* app/core/gimpimage-new.c (gimp_image_new_values_new): default * app/core/gimpimage-new.c (gimp_image_new_values_new): default

View File

@ -76,9 +76,7 @@ static gboolean file_open_thumbnail_button_press (GtkWidget *widget,
GdkEventButton *bevent, GdkEventButton *bevent,
GtkWidget *open_dialog); GtkWidget *open_dialog);
static void file_open_thumbnail_clicked (GtkWidget *widget, static void file_open_thumbnail_clicked (GtkWidget *widget,
GtkWidget *open_dialog); GdkModifierType state,
static void file_open_thumbnail_ext_clicked (GtkWidget *widget,
guint state,
GtkWidget *open_dialog); GtkWidget *open_dialog);
static void file_open_ok_callback (GtkWidget *widget, static void file_open_ok_callback (GtkWidget *widget,
GtkWidget *open_dialog); GtkWidget *open_dialog);
@ -293,9 +291,6 @@ file_open_dialog_create (Gimp *gimp,
g_signal_connect (open_options_preview, "clicked", g_signal_connect (open_options_preview, "clicked",
G_CALLBACK (file_open_thumbnail_clicked), G_CALLBACK (file_open_thumbnail_clicked),
open_dialog); open_dialog);
g_signal_connect (open_options_preview, "extended_clicked",
G_CALLBACK (file_open_thumbnail_ext_clicked),
open_dialog);
open_options_title = gtk_label_new (_("No Selection")); open_options_title = gtk_label_new (_("No Selection"));
gtk_box_pack_start (GTK_BOX (vbox2), gtk_box_pack_start (GTK_BOX (vbox2),
@ -579,14 +574,7 @@ file_open_thumbnail_button_press (GtkWidget *widget,
static void static void
file_open_thumbnail_clicked (GtkWidget *widget, file_open_thumbnail_clicked (GtkWidget *widget,
GtkWidget *open_dialog) GdkModifierType state,
{
file_open_create_thumbnails (open_dialog, FALSE);
}
static void
file_open_thumbnail_ext_clicked (GtkWidget *widget,
guint state,
GtkWidget *open_dialog) GtkWidget *open_dialog)
{ {
gboolean always_create; gboolean always_create;

View File

@ -76,9 +76,7 @@ static gboolean file_open_thumbnail_button_press (GtkWidget *widget,
GdkEventButton *bevent, GdkEventButton *bevent,
GtkWidget *open_dialog); GtkWidget *open_dialog);
static void file_open_thumbnail_clicked (GtkWidget *widget, static void file_open_thumbnail_clicked (GtkWidget *widget,
GtkWidget *open_dialog); GdkModifierType state,
static void file_open_thumbnail_ext_clicked (GtkWidget *widget,
guint state,
GtkWidget *open_dialog); GtkWidget *open_dialog);
static void file_open_ok_callback (GtkWidget *widget, static void file_open_ok_callback (GtkWidget *widget,
GtkWidget *open_dialog); GtkWidget *open_dialog);
@ -293,9 +291,6 @@ file_open_dialog_create (Gimp *gimp,
g_signal_connect (open_options_preview, "clicked", g_signal_connect (open_options_preview, "clicked",
G_CALLBACK (file_open_thumbnail_clicked), G_CALLBACK (file_open_thumbnail_clicked),
open_dialog); open_dialog);
g_signal_connect (open_options_preview, "extended_clicked",
G_CALLBACK (file_open_thumbnail_ext_clicked),
open_dialog);
open_options_title = gtk_label_new (_("No Selection")); open_options_title = gtk_label_new (_("No Selection"));
gtk_box_pack_start (GTK_BOX (vbox2), gtk_box_pack_start (GTK_BOX (vbox2),
@ -579,14 +574,7 @@ file_open_thumbnail_button_press (GtkWidget *widget,
static void static void
file_open_thumbnail_clicked (GtkWidget *widget, file_open_thumbnail_clicked (GtkWidget *widget,
GtkWidget *open_dialog) GdkModifierType state,
{
file_open_create_thumbnails (open_dialog, FALSE);
}
static void
file_open_thumbnail_ext_clicked (GtkWidget *widget,
guint state,
GtkWidget *open_dialog) GtkWidget *open_dialog)
{ {
gboolean always_create; gboolean always_create;

View File

@ -65,6 +65,7 @@ container_view_scale_callback (GtkAdjustment *adj,
static void static void
brushes_callback (GtkWidget *widget, brushes_callback (GtkWidget *widget,
GdkModifierType state,
GimpContainerView *view) GimpContainerView *view)
{ {
gimp_container_view_set_container (view, view->context->gimp->brush_factory->container); gimp_container_view_set_container (view, view->context->gimp->brush_factory->container);
@ -72,6 +73,7 @@ brushes_callback (GtkWidget *widget,
static void static void
patterns_callback (GtkWidget *widget, patterns_callback (GtkWidget *widget,
GdkModifierType state,
GimpContainerView *view) GimpContainerView *view)
{ {
gimp_container_view_set_container (view, view->context->gimp->pattern_factory->container); gimp_container_view_set_container (view, view->context->gimp->pattern_factory->container);
@ -79,6 +81,7 @@ patterns_callback (GtkWidget *widget,
static void static void
gradients_callback (GtkWidget *widget, gradients_callback (GtkWidget *widget,
GdkModifierType state,
GimpContainerView *view) GimpContainerView *view)
{ {
gimp_container_view_set_container (view, view->context->gimp->gradient_factory->container); gimp_container_view_set_container (view, view->context->gimp->gradient_factory->container);
@ -86,6 +89,7 @@ gradients_callback (GtkWidget *widget,
static void static void
palettes_callback (GtkWidget *widget, palettes_callback (GtkWidget *widget,
GdkModifierType state,
GimpContainerView *view) GimpContainerView *view)
{ {
gimp_container_view_set_container (view, view->context->gimp->palette_factory->container); gimp_container_view_set_container (view, view->context->gimp->palette_factory->container);
@ -93,6 +97,7 @@ palettes_callback (GtkWidget *widget,
static void static void
images_callback (GtkWidget *widget, images_callback (GtkWidget *widget,
GdkModifierType state,
GimpContainerView *view) GimpContainerView *view)
{ {
gimp_container_view_set_container (view, view->context->gimp->images); gimp_container_view_set_container (view, view->context->gimp->images);

View File

@ -59,6 +59,7 @@ static void gimp_container_grid_view_select_item (GimpContainerView *v
static void gimp_container_grid_view_clear_items (GimpContainerView *view); static void gimp_container_grid_view_clear_items (GimpContainerView *view);
static void gimp_container_grid_view_set_preview_size (GimpContainerView *view); static void gimp_container_grid_view_set_preview_size (GimpContainerView *view);
static void gimp_container_grid_view_item_selected (GtkWidget *widget, static void gimp_container_grid_view_item_selected (GtkWidget *widget,
GdkModifierType state,
gpointer data); gpointer data);
static void gimp_container_grid_view_item_activated (GtkWidget *widget, static void gimp_container_grid_view_item_activated (GtkWidget *widget,
gpointer data); gpointer data);
@ -343,6 +344,7 @@ gimp_container_grid_view_set_preview_size (GimpContainerView *view)
static void static void
gimp_container_grid_view_item_selected (GtkWidget *widget, gimp_container_grid_view_item_selected (GtkWidget *widget,
GdkModifierType state,
gpointer data) gpointer data)
{ {
gimp_container_view_item_selected (GIMP_CONTAINER_VIEW (data), gimp_container_view_item_selected (GIMP_CONTAINER_VIEW (data),

View File

@ -51,7 +51,6 @@ enum
{ {
CLICKED, CLICKED,
DOUBLE_CLICKED, DOUBLE_CLICKED,
EXTENDED_CLICKED,
CONTEXT, CONTEXT,
LAST_SIGNAL LAST_SIGNAL
}; };
@ -133,8 +132,9 @@ gimp_preview_class_init (GimpPreviewClass *klass)
G_SIGNAL_RUN_FIRST, G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpPreviewClass, clicked), G_STRUCT_OFFSET (GimpPreviewClass, clicked),
NULL, NULL, NULL, NULL,
gimp_marshal_VOID__VOID, gimp_marshal_VOID__FLAGS,
G_TYPE_NONE, 0); G_TYPE_NONE, 1,
GDK_TYPE_MODIFIER_TYPE);
preview_signals[DOUBLE_CLICKED] = preview_signals[DOUBLE_CLICKED] =
g_signal_new ("double_clicked", g_signal_new ("double_clicked",
@ -145,16 +145,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
gimp_marshal_VOID__VOID, gimp_marshal_VOID__VOID,
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
preview_signals[EXTENDED_CLICKED] =
g_signal_new ("extended_clicked",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpPreviewClass, extended_clicked),
NULL, NULL,
gimp_marshal_VOID__FLAGS,
G_TYPE_NONE, 1,
GDK_TYPE_MODIFIER_TYPE);
preview_signals[CONTEXT] = preview_signals[CONTEXT] =
g_signal_new ("context", g_signal_new ("context",
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),
@ -177,7 +167,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
klass->clicked = NULL; klass->clicked = NULL;
klass->double_clicked = NULL; klass->double_clicked = NULL;
klass->extended_clicked = NULL;
klass->context = NULL; klass->context = NULL;
} }
@ -443,18 +432,9 @@ gimp_preview_button_release_event (GtkWidget *widget,
if (preview->clickable && preview->in_button) if (preview->clickable && preview->in_button)
{ {
if (preview->press_state & g_signal_emit (widget, preview_signals[CLICKED], 0,
(GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK))
{
g_signal_emit (widget,
preview_signals[EXTENDED_CLICKED], 0,
preview->press_state); preview->press_state);
} }
else
{
g_signal_emit (widget, preview_signals[CLICKED], 0);
}
}
} }
else else
{ {

View File

@ -62,10 +62,9 @@ struct _GimpPreviewClass
GtkDrawingAreaClass parent_class; GtkDrawingAreaClass parent_class;
/* signals */ /* signals */
void (* clicked) (GimpPreview *preview); void (* clicked) (GimpPreview *preview,
GdkModifierType modifier_state);
void (* double_clicked) (GimpPreview *preview); void (* double_clicked) (GimpPreview *preview);
void (* extended_clicked) (GimpPreview *preview,
guint modifier_state);
void (* context) (GimpPreview *preview); void (* context) (GimpPreview *preview);
}; };

View File

@ -49,6 +49,7 @@
static void static void
brush_preview_clicked (GtkWidget *widget, brush_preview_clicked (GtkWidget *widget,
GdkModifierType state,
GimpToolbox *toolbox) GimpToolbox *toolbox)
{ {
gimp_dialog_factory_dialog_raise (GIMP_DOCK (toolbox)->dialog_factory, gimp_dialog_factory_dialog_raise (GIMP_DOCK (toolbox)->dialog_factory,
@ -69,6 +70,7 @@ brush_preview_drop_brush (GtkWidget *widget,
static void static void
pattern_preview_clicked (GtkWidget *widget, pattern_preview_clicked (GtkWidget *widget,
GdkModifierType state,
GimpToolbox *toolbox) GimpToolbox *toolbox)
{ {
gimp_dialog_factory_dialog_raise (GIMP_DOCK (toolbox)->dialog_factory, gimp_dialog_factory_dialog_raise (GIMP_DOCK (toolbox)->dialog_factory,
@ -89,6 +91,7 @@ pattern_preview_drop_pattern (GtkWidget *widget,
static void static void
gradient_preview_clicked (GtkWidget *widget, gradient_preview_clicked (GtkWidget *widget,
GdkModifierType state,
GimpToolbox *toolbox) GimpToolbox *toolbox)
{ {
gimp_dialog_factory_dialog_raise (GIMP_DOCK (toolbox)->dialog_factory, gimp_dialog_factory_dialog_raise (GIMP_DOCK (toolbox)->dialog_factory,

View File

@ -51,7 +51,6 @@ enum
{ {
CLICKED, CLICKED,
DOUBLE_CLICKED, DOUBLE_CLICKED,
EXTENDED_CLICKED,
CONTEXT, CONTEXT,
LAST_SIGNAL LAST_SIGNAL
}; };
@ -133,8 +132,9 @@ gimp_preview_class_init (GimpPreviewClass *klass)
G_SIGNAL_RUN_FIRST, G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpPreviewClass, clicked), G_STRUCT_OFFSET (GimpPreviewClass, clicked),
NULL, NULL, NULL, NULL,
gimp_marshal_VOID__VOID, gimp_marshal_VOID__FLAGS,
G_TYPE_NONE, 0); G_TYPE_NONE, 1,
GDK_TYPE_MODIFIER_TYPE);
preview_signals[DOUBLE_CLICKED] = preview_signals[DOUBLE_CLICKED] =
g_signal_new ("double_clicked", g_signal_new ("double_clicked",
@ -145,16 +145,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
gimp_marshal_VOID__VOID, gimp_marshal_VOID__VOID,
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
preview_signals[EXTENDED_CLICKED] =
g_signal_new ("extended_clicked",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpPreviewClass, extended_clicked),
NULL, NULL,
gimp_marshal_VOID__FLAGS,
G_TYPE_NONE, 1,
GDK_TYPE_MODIFIER_TYPE);
preview_signals[CONTEXT] = preview_signals[CONTEXT] =
g_signal_new ("context", g_signal_new ("context",
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),
@ -177,7 +167,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
klass->clicked = NULL; klass->clicked = NULL;
klass->double_clicked = NULL; klass->double_clicked = NULL;
klass->extended_clicked = NULL;
klass->context = NULL; klass->context = NULL;
} }
@ -443,18 +432,9 @@ gimp_preview_button_release_event (GtkWidget *widget,
if (preview->clickable && preview->in_button) if (preview->clickable && preview->in_button)
{ {
if (preview->press_state & g_signal_emit (widget, preview_signals[CLICKED], 0,
(GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK))
{
g_signal_emit (widget,
preview_signals[EXTENDED_CLICKED], 0,
preview->press_state); preview->press_state);
} }
else
{
g_signal_emit (widget, preview_signals[CLICKED], 0);
}
}
} }
else else
{ {

View File

@ -62,10 +62,9 @@ struct _GimpPreviewClass
GtkDrawingAreaClass parent_class; GtkDrawingAreaClass parent_class;
/* signals */ /* signals */
void (* clicked) (GimpPreview *preview); void (* clicked) (GimpPreview *preview,
GdkModifierType modifier_state);
void (* double_clicked) (GimpPreview *preview); void (* double_clicked) (GimpPreview *preview);
void (* extended_clicked) (GimpPreview *preview,
guint modifier_state);
void (* context) (GimpPreview *preview); void (* context) (GimpPreview *preview);
}; };

View File

@ -335,22 +335,5 @@ gimp_viewable_dialog_name_changed (GimpObject *object,
static void static void
gimp_viewable_dialog_close (GimpViewableDialog *dialog) gimp_viewable_dialog_close (GimpViewableDialog *dialog)
{ {
GtkWidget *widget = GTK_WIDGET (dialog); g_signal_emit_by_name (dialog, "close");
/* Synthesize delete_event to close dialog. */
if (widget->window)
{
GdkEventAny event;
event.type = GDK_DELETE;
event.window = widget->window;
event.send_event = TRUE;
g_object_ref (event.window);
gtk_main_do_event ((GdkEvent *) &event);
g_object_unref (event.window);
}
} }

View File

@ -37,6 +37,7 @@ static void gimp_dialog_init (GimpDialog *dialog);
static gboolean gimp_dialog_delete_event (GtkWidget *widget, static gboolean gimp_dialog_delete_event (GtkWidget *widget,
GdkEventAny *event); GdkEventAny *event);
static void gimp_dialog_close (GtkDialog *dialog);
static GtkDialogClass *parent_class = NULL; static GtkDialogClass *parent_class = NULL;
@ -74,12 +75,16 @@ static void
gimp_dialog_class_init (GimpDialogClass *klass) gimp_dialog_class_init (GimpDialogClass *klass)
{ {
GtkWidgetClass *widget_class; GtkWidgetClass *widget_class;
GtkDialogClass *dialog_class;
widget_class = GTK_WIDGET_CLASS (klass); widget_class = GTK_WIDGET_CLASS (klass);
dialog_class = GTK_DIALOG_CLASS (klass);
parent_class = g_type_class_peek_parent (klass); parent_class = g_type_class_peek_parent (klass);
widget_class->delete_event = gimp_dialog_delete_event; widget_class->delete_event = gimp_dialog_delete_event;
dialog_class->close = gimp_dialog_close;
} }
static void static void
@ -102,6 +107,27 @@ gimp_dialog_delete_event (GtkWidget *widget,
return TRUE; return TRUE;
} }
static void
gimp_dialog_close (GtkDialog *dialog)
{
/* Synthesize delete_event to close dialog. */
GtkWidget *widget = GTK_WIDGET (dialog);
if (widget->window)
{
GdkEvent *event;
event = gdk_event_new (GDK_DELETE);
event->any.window = g_object_ref (widget->window);
event->any.send_event = TRUE;
gtk_main_do_event (event);
gdk_event_free (event);
}
}
/** /**
* gimp_dialog_new: * gimp_dialog_new:
* @title: The dialog's title which will be set with * @title: The dialog's title which will be set with