app/disp_callbacks.[ch] app/gimpset.c patch from

1999-06-03  Michael Natterer  <mitschel@cs.tu-berlin.de>

	* app/disp_callbacks.[ch]
	* app/gimpset.c
	* app/interface.c: patch from <Simon.Budig@unix-ag.org>. Cleans up
	the active image implementation. Now the button and key events of
	the whole gdisplay shell are connected to a separate active image
	callback.

	Don't let the arrow button of the gdisplay grab the focus and
	block it's events after any button_press_event, so the canvas
	always owns the keyboard focus and the button never grabs the
	pointer.

	* app/gdisplay.c: correct sensitive setting for the Layers/Stack
	submenu.

	* app/interface.c: make the query boxes insensitive after pressing
	"OK" (may be useful if they're once used for operations which take
	longer than just shrink/grow/...).

	* app/layers_dialog.c: switch to the active image when the "Auto"
	button is activated.

	* app/menus.c: bound the <Image>/Layers/Stack menu to some
	<modifier>+PageUp/Down combinations.

	* app/preferences_dialog.c: pop up with the "Interface" branch
	expanded.
This commit is contained in:
Michael Natterer
1999-06-03 18:28:39 +00:00
committed by Michael Natterer
parent e5bce5789e
commit e5408cac3e
23 changed files with 267 additions and 98 deletions

View File

@ -1,3 +1,33 @@
1999-06-03 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/disp_callbacks.[ch]
* app/gimpset.c
* app/interface.c: patch from <Simon.Budig@unix-ag.org>. Cleans up
the active image implementation. Now the button and key events of
the whole gdisplay shell are connected to a separate active image
callback.
Don't let the arrow button of the gdisplay grab the focus and
block it's events after any button_press_event, so the canvas
always owns the keyboard focus and the button never grabs the
pointer.
* app/gdisplay.c: correct sensitive setting for the Layers/Stack
submenu.
* app/interface.c: make the query boxes insensitive after pressing
"OK" (may be useful if they're once used for operations which take
longer than just shrink/grow/...).
* app/layers_dialog.c: switch to the active image when the "Auto"
button is activated.
* app/menus.c: bound the <Image>/Layers/Stack menu to some
<modifier>+PageUp/Down combinations.
* app/preferences_dialog.c: pop up with the "Interface" branch
expanded.
Thu Jun 3 16:51:18 MEST 1999 Sven Neumann <sven@gimp.org>
* app/paint_core.c: Improved the line draw preview a bit. It's still

View File

@ -1546,6 +1546,8 @@ gdisplay_set_menu_sensitivity (GDisplay *gdisp)
GimpDrawable *drawable;
gint base_type;
gint type;
gint lind;
gint lnum;
fs = (gimage_floating_sel (gdisp->gimage) != NULL);
aux = (gimage_get_active_channel (gdisp->gimage) != NULL);
@ -1558,18 +1560,22 @@ gdisplay_set_menu_sensitivity (GDisplay *gdisp)
alpha = layer && layer_has_alpha (layer);
type = -1;
lind = -1;
lnum = -1;
if (lp)
{
drawable = gimage_active_drawable (gdisp->gimage);
type = drawable_type (drawable);
lind = gimage_get_layer_index (gdisp->gimage, gdisp->gimage->active_layer);
lnum = g_slist_length (gdisp->gimage->layers);
}
menus_set_sensitive (_("<Image>/Layers/Stack/Previous Layer"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Stack/Next Layer"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Stack/Raise Layer"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower Layer"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Raise to Top"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower to Bottom"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Previous Layer"), !fs && !aux && lp && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Next Layer"), !fs && !aux && lp && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Stack/Raise Layer"), !fs && !aux && lp && alpha && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower Layer"), !fs && !aux && lp && alpha && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Stack/Layer to Top"), !fs && !aux && lp && alpha && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Layer to Bottom"), !fs && !aux && lp && alpha && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Anchor Layer"), fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Merge Visible Layers"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Flatten Image"), !fs && !aux && lp);

View File

@ -1935,6 +1935,9 @@ file_pref_cmd_callback (GtkWidget *widget,
gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
gtk_widget_show (label);
/* Expand the "Interface" branch */
gtk_ctree_expand (GTK_CTREE (ctree), top_insert);
/* Environment */
vbox = file_prefs_notebook_append_page (GTK_NOTEBOOK (notebook),
_("Environment Settings"),

View File

@ -90,7 +90,7 @@ gdisplay_check_device_cursor (GDisplay *gdisp)
}
static int
key_to_state(int key)
key_to_state (int key)
{
switch (key)
{
@ -105,6 +105,25 @@ key_to_state(int key)
}
}
gint
gdisplay_shell_events (GtkWidget *w,
GdkEvent *event,
GDisplay *gdisp)
{
/* Set the active Image to the image where the user clicked/typed */
switch (event->type)
{
case GDK_BUTTON_PRESS:
case GDK_KEY_PRESS:
gimp_set_set_active(image_context, gdisp->gimage);
break;
default:
break;
}
return FALSE;
}
gint
gdisplay_canvas_events (GtkWidget *canvas,
GdkEvent *event)
@ -197,9 +216,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
bevent = (GdkEventButton *) event;
state = bevent->state;
/* Set the active Image to the image where the user clicked */
gimp_set_set_active(image_context, gdisp->gimage);
switch (bevent->button)
{
case 1:
@ -388,9 +404,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
kevent = (GdkEventKey *) event;
state = kevent->state;
/* Set the active Image to the image where the user typed */
gimp_set_set_active(image_context, gdisp->gimage);
switch (kevent->keyval)
{
case GDK_Left: case GDK_Right:
@ -531,12 +544,13 @@ gdisplay_origin_button_press (GtkWidget *widget,
gdisp = data;
popup_shell = gdisp->shell;
gdisplay_set_menu_sensitivity (gdisp);
gtk_menu_popup (GTK_MENU (gdisp->popup), NULL, NULL, NULL, NULL, 1, event->time);
/* Stop the signal emission so the button doesn't grab the
* pointer away from us */
gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
gtk_menu_popup (GTK_MENU (gdisp->popup),
NULL, NULL, NULL, NULL, 1, event->time);
}
/* Stop the signal emission so the button doesn't grab the
* pointer away from us */
gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
return FALSE;
}

View File

@ -25,6 +25,7 @@
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | \
GDK_PROXIMITY_OUT_MASK
gint gdisplay_shell_events (GtkWidget *, GdkEvent *, GDisplay *);
gint gdisplay_canvas_events (GtkWidget *, GdkEvent *);
gint gdisplay_hruler_button_press (GtkWidget *, GdkEventButton *, gpointer);
gint gdisplay_vruler_button_press (GtkWidget *, GdkEventButton *, gpointer);

View File

@ -90,7 +90,7 @@ gdisplay_check_device_cursor (GDisplay *gdisp)
}
static int
key_to_state(int key)
key_to_state (int key)
{
switch (key)
{
@ -105,6 +105,25 @@ key_to_state(int key)
}
}
gint
gdisplay_shell_events (GtkWidget *w,
GdkEvent *event,
GDisplay *gdisp)
{
/* Set the active Image to the image where the user clicked/typed */
switch (event->type)
{
case GDK_BUTTON_PRESS:
case GDK_KEY_PRESS:
gimp_set_set_active(image_context, gdisp->gimage);
break;
default:
break;
}
return FALSE;
}
gint
gdisplay_canvas_events (GtkWidget *canvas,
GdkEvent *event)
@ -197,9 +216,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
bevent = (GdkEventButton *) event;
state = bevent->state;
/* Set the active Image to the image where the user clicked */
gimp_set_set_active(image_context, gdisp->gimage);
switch (bevent->button)
{
case 1:
@ -388,9 +404,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
kevent = (GdkEventKey *) event;
state = kevent->state;
/* Set the active Image to the image where the user typed */
gimp_set_set_active(image_context, gdisp->gimage);
switch (kevent->keyval)
{
case GDK_Left: case GDK_Right:
@ -531,12 +544,13 @@ gdisplay_origin_button_press (GtkWidget *widget,
gdisp = data;
popup_shell = gdisp->shell;
gdisplay_set_menu_sensitivity (gdisp);
gtk_menu_popup (GTK_MENU (gdisp->popup), NULL, NULL, NULL, NULL, 1, event->time);
/* Stop the signal emission so the button doesn't grab the
* pointer away from us */
gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
gtk_menu_popup (GTK_MENU (gdisp->popup),
NULL, NULL, NULL, NULL, 1, event->time);
}
/* Stop the signal emission so the button doesn't grab the
* pointer away from us */
gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
return FALSE;
}

View File

@ -25,6 +25,7 @@
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | \
GDK_PROXIMITY_OUT_MASK
gint gdisplay_shell_events (GtkWidget *, GdkEvent *, GDisplay *);
gint gdisplay_canvas_events (GtkWidget *, GdkEvent *);
gint gdisplay_hruler_button_press (GtkWidget *, GdkEventButton *, gpointer);
gint gdisplay_vruler_button_press (GtkWidget *, GdkEventButton *, gpointer);

View File

@ -1546,6 +1546,8 @@ gdisplay_set_menu_sensitivity (GDisplay *gdisp)
GimpDrawable *drawable;
gint base_type;
gint type;
gint lind;
gint lnum;
fs = (gimage_floating_sel (gdisp->gimage) != NULL);
aux = (gimage_get_active_channel (gdisp->gimage) != NULL);
@ -1558,18 +1560,22 @@ gdisplay_set_menu_sensitivity (GDisplay *gdisp)
alpha = layer && layer_has_alpha (layer);
type = -1;
lind = -1;
lnum = -1;
if (lp)
{
drawable = gimage_active_drawable (gdisp->gimage);
type = drawable_type (drawable);
lind = gimage_get_layer_index (gdisp->gimage, gdisp->gimage->active_layer);
lnum = g_slist_length (gdisp->gimage->layers);
}
menus_set_sensitive (_("<Image>/Layers/Stack/Previous Layer"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Stack/Next Layer"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Stack/Raise Layer"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower Layer"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Raise to Top"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower to Bottom"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Previous Layer"), !fs && !aux && lp && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Next Layer"), !fs && !aux && lp && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Stack/Raise Layer"), !fs && !aux && lp && alpha && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower Layer"), !fs && !aux && lp && alpha && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Stack/Layer to Top"), !fs && !aux && lp && alpha && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Layer to Bottom"), !fs && !aux && lp && alpha && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Anchor Layer"), fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Merge Visible Layers"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Flatten Image"), !fs && !aux && lp);

View File

@ -90,7 +90,7 @@ gdisplay_check_device_cursor (GDisplay *gdisp)
}
static int
key_to_state(int key)
key_to_state (int key)
{
switch (key)
{
@ -105,6 +105,25 @@ key_to_state(int key)
}
}
gint
gdisplay_shell_events (GtkWidget *w,
GdkEvent *event,
GDisplay *gdisp)
{
/* Set the active Image to the image where the user clicked/typed */
switch (event->type)
{
case GDK_BUTTON_PRESS:
case GDK_KEY_PRESS:
gimp_set_set_active(image_context, gdisp->gimage);
break;
default:
break;
}
return FALSE;
}
gint
gdisplay_canvas_events (GtkWidget *canvas,
GdkEvent *event)
@ -197,9 +216,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
bevent = (GdkEventButton *) event;
state = bevent->state;
/* Set the active Image to the image where the user clicked */
gimp_set_set_active(image_context, gdisp->gimage);
switch (bevent->button)
{
case 1:
@ -388,9 +404,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
kevent = (GdkEventKey *) event;
state = kevent->state;
/* Set the active Image to the image where the user typed */
gimp_set_set_active(image_context, gdisp->gimage);
switch (kevent->keyval)
{
case GDK_Left: case GDK_Right:
@ -531,12 +544,13 @@ gdisplay_origin_button_press (GtkWidget *widget,
gdisp = data;
popup_shell = gdisp->shell;
gdisplay_set_menu_sensitivity (gdisp);
gtk_menu_popup (GTK_MENU (gdisp->popup), NULL, NULL, NULL, NULL, 1, event->time);
/* Stop the signal emission so the button doesn't grab the
* pointer away from us */
gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
gtk_menu_popup (GTK_MENU (gdisp->popup),
NULL, NULL, NULL, NULL, 1, event->time);
}
/* Stop the signal emission so the button doesn't grab the
* pointer away from us */
gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
return FALSE;
}

View File

@ -25,6 +25,7 @@
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | \
GDK_PROXIMITY_OUT_MASK
gint gdisplay_shell_events (GtkWidget *, GdkEvent *, GDisplay *);
gint gdisplay_canvas_events (GtkWidget *, GdkEvent *);
gint gdisplay_hruler_button_press (GtkWidget *, GdkEventButton *, gpointer);
gint gdisplay_vruler_button_press (GtkWidget *, GdkEventButton *, gpointer);

View File

@ -639,7 +639,7 @@ create_display_shell (GDisplay* gdisp,
gtk_window_set_wmclass (GTK_WINDOW (gdisp->shell), "image_window", "Gimp");
gtk_window_set_policy (GTK_WINDOW (gdisp->shell), TRUE, TRUE, TRUE);
gtk_object_set_user_data (GTK_OBJECT (gdisp->shell), (gpointer) gdisp);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_KEY_RELEASE_MASK);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "delete_event",
GTK_SIGNAL_FUNC (gdisplay_delete),
gdisp);
@ -648,6 +648,14 @@ create_display_shell (GDisplay* gdisp,
(GtkSignalFunc) gdisplay_destroy,
gdisp);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "button_press_event",
(GtkSignalFunc) gdisplay_shell_events,
gdisp);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "key_press_event",
(GtkSignalFunc) gdisplay_shell_events,
gdisp);
/* the vbox, table containing all widgets */
vbox = gtk_vbox_new (FALSE, 2);
gtk_container_add (GTK_CONTAINER (gdisp->shell), vbox);
@ -672,6 +680,7 @@ create_display_shell (GDisplay* gdisp,
/* scrollbars, rulers, canvas, menu popup button */
gdisp->origin = gtk_button_new ();
GTK_WIDGET_UNSET_FLAGS (gdisp->origin, GTK_CAN_FOCUS);
gtk_widget_set_events (GTK_WIDGET (gdisp->origin),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->origin), "button_press_event",
@ -1095,6 +1104,8 @@ string_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1120,6 +1131,8 @@ int_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1147,6 +1160,8 @@ double_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1174,6 +1189,8 @@ size_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);

View File

@ -639,7 +639,7 @@ create_display_shell (GDisplay* gdisp,
gtk_window_set_wmclass (GTK_WINDOW (gdisp->shell), "image_window", "Gimp");
gtk_window_set_policy (GTK_WINDOW (gdisp->shell), TRUE, TRUE, TRUE);
gtk_object_set_user_data (GTK_OBJECT (gdisp->shell), (gpointer) gdisp);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_KEY_RELEASE_MASK);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "delete_event",
GTK_SIGNAL_FUNC (gdisplay_delete),
gdisp);
@ -648,6 +648,14 @@ create_display_shell (GDisplay* gdisp,
(GtkSignalFunc) gdisplay_destroy,
gdisp);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "button_press_event",
(GtkSignalFunc) gdisplay_shell_events,
gdisp);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "key_press_event",
(GtkSignalFunc) gdisplay_shell_events,
gdisp);
/* the vbox, table containing all widgets */
vbox = gtk_vbox_new (FALSE, 2);
gtk_container_add (GTK_CONTAINER (gdisp->shell), vbox);
@ -672,6 +680,7 @@ create_display_shell (GDisplay* gdisp,
/* scrollbars, rulers, canvas, menu popup button */
gdisp->origin = gtk_button_new ();
GTK_WIDGET_UNSET_FLAGS (gdisp->origin, GTK_CAN_FOCUS);
gtk_widget_set_events (GTK_WIDGET (gdisp->origin),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->origin), "button_press_event",
@ -1095,6 +1104,8 @@ string_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1120,6 +1131,8 @@ int_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1147,6 +1160,8 @@ double_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1174,6 +1189,8 @@ size_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);

View File

@ -1546,6 +1546,8 @@ gdisplay_set_menu_sensitivity (GDisplay *gdisp)
GimpDrawable *drawable;
gint base_type;
gint type;
gint lind;
gint lnum;
fs = (gimage_floating_sel (gdisp->gimage) != NULL);
aux = (gimage_get_active_channel (gdisp->gimage) != NULL);
@ -1558,18 +1560,22 @@ gdisplay_set_menu_sensitivity (GDisplay *gdisp)
alpha = layer && layer_has_alpha (layer);
type = -1;
lind = -1;
lnum = -1;
if (lp)
{
drawable = gimage_active_drawable (gdisp->gimage);
type = drawable_type (drawable);
lind = gimage_get_layer_index (gdisp->gimage, gdisp->gimage->active_layer);
lnum = g_slist_length (gdisp->gimage->layers);
}
menus_set_sensitive (_("<Image>/Layers/Stack/Previous Layer"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Stack/Next Layer"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Stack/Raise Layer"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower Layer"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Raise to Top"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower to Bottom"), !fs && !aux && lp && alpha);
menus_set_sensitive (_("<Image>/Layers/Stack/Previous Layer"), !fs && !aux && lp && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Next Layer"), !fs && !aux && lp && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Stack/Raise Layer"), !fs && !aux && lp && alpha && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Lower Layer"), !fs && !aux && lp && alpha && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Stack/Layer to Top"), !fs && !aux && lp && alpha && lind > 0);
menus_set_sensitive (_("<Image>/Layers/Stack/Layer to Bottom"), !fs && !aux && lp && alpha && lind < (lnum - 1));
menus_set_sensitive (_("<Image>/Layers/Anchor Layer"), fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Merge Visible Layers"), !fs && !aux && lp);
menus_set_sensitive (_("<Image>/Layers/Flatten Image"), !fs && !aux && lp);

View File

@ -230,7 +230,7 @@ void
gimp_set_set_active (GimpSet* set, gpointer ob)
{
if (ob != set->active_element && gimp_set_have(set, ob)) {
/* g_warning("Gimp_Set got new active element"); */
g_warning("Gimp_Set got new active element");
set->active_element = ob;
gtk_signal_emit (GTK_OBJECT(set), gimp_set_signals[ACTIVE_CHANGED], ob);
}

View File

@ -173,9 +173,10 @@ static void layers_dialog_flatten_image_callback (GtkWidget *, gpointer);
static void layers_dialog_alpha_select_callback (GtkWidget *, gpointer);
static void layers_dialog_mask_select_callback (GtkWidget *, gpointer);
static void layers_dialog_add_alpha_channel_callback (GtkWidget *, gpointer);
static gint lc_dialog_auto_callback (GtkWidget *, gpointer);
static gint lc_dialog_close_callback (GtkWidget *, gpointer);
/* the dialog's toplevel callbacks */
static void lc_dialog_auto_callback (GtkWidget *, gpointer);
static gint lc_dialog_close_callback (GtkWidget *, gpointer);
static void lc_dialog_update_cb (GimpSet *, GimpImage *, gpointer);
static void lc_dialog_change_image (GimpSet *, GimpImage *, gpointer);
@ -264,7 +265,7 @@ static MenuItem layers_ops[] =
layers_dialog_raise_layer_to_top_callback, NULL, NULL, NULL },
{ N_("Layer to Bottom"), 'U', GDK_CONTROL_MASK,
layers_dialog_lower_layer_to_bottom_callback, NULL, NULL, NULL },
{ NULL, 0, 0, NULL, NULL, NULL, NULL },
{ NULL, 0, 0, NULL, NULL, NULL, NULL },
};
/* the option menu items -- the paint modes */
@ -2008,13 +2009,20 @@ layers_dialog_add_alpha_channel_callback (GtkWidget *w,
}
static gint
lc_dialog_auto_callback (GtkWidget *toggle_button, gpointer client_data)
static void
lc_dialog_auto_callback (GtkWidget *toggle_button,
gpointer client_data)
{
if (layersD)
layersD->auto_follow_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle_button));
if (layersD)
{
layersD->auto_follow_active =
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle_button));
return TRUE;
if (layersD->auto_follow_active)
lc_dialog_change_image (image_context,
(GimpImage *) gimp_set_get_active (image_context),
NULL);
}
}

View File

@ -155,12 +155,12 @@ static const GtkItemFactoryEntry image_entries[] =
{ N_("/Image/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Layers & Channels..."), "<control>L", dialogs_lc_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), NULL, layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), NULL, layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<control>F", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<control>B", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise to Top"), "<control>T", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower to Bottom"), "<control>U", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), "Prior", layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), "Next", layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<shift>Prior", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<shift>Next", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Top"), "<control>Prior", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Bottom"), "<control>Next", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Anchor Layer"), "<control>H", layers_anchor_cmd_callback, 0 },
{ N_("/Layers/Merge Visible Layers"), "<control>M", layers_merge_cmd_callback, 0 },

View File

@ -1935,6 +1935,9 @@ file_pref_cmd_callback (GtkWidget *widget,
gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
gtk_widget_show (label);
/* Expand the "Interface" branch */
gtk_ctree_expand (GTK_CTREE (ctree), top_insert);
/* Environment */
vbox = file_prefs_notebook_append_page (GTK_NOTEBOOK (notebook),
_("Environment Settings"),

View File

@ -639,7 +639,7 @@ create_display_shell (GDisplay* gdisp,
gtk_window_set_wmclass (GTK_WINDOW (gdisp->shell), "image_window", "Gimp");
gtk_window_set_policy (GTK_WINDOW (gdisp->shell), TRUE, TRUE, TRUE);
gtk_object_set_user_data (GTK_OBJECT (gdisp->shell), (gpointer) gdisp);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_KEY_RELEASE_MASK);
gtk_widget_set_events (gdisp->shell, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "delete_event",
GTK_SIGNAL_FUNC (gdisplay_delete),
gdisp);
@ -648,6 +648,14 @@ create_display_shell (GDisplay* gdisp,
(GtkSignalFunc) gdisplay_destroy,
gdisp);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "button_press_event",
(GtkSignalFunc) gdisplay_shell_events,
gdisp);
gtk_signal_connect (GTK_OBJECT (gdisp->shell), "key_press_event",
(GtkSignalFunc) gdisplay_shell_events,
gdisp);
/* the vbox, table containing all widgets */
vbox = gtk_vbox_new (FALSE, 2);
gtk_container_add (GTK_CONTAINER (gdisp->shell), vbox);
@ -672,6 +680,7 @@ create_display_shell (GDisplay* gdisp,
/* scrollbars, rulers, canvas, menu popup button */
gdisp->origin = gtk_button_new ();
GTK_WIDGET_UNSET_FLAGS (gdisp->origin, GTK_CAN_FOCUS);
gtk_widget_set_events (GTK_WIDGET (gdisp->origin),
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
gtk_signal_connect (GTK_OBJECT (gdisp->origin), "button_press_event",
@ -1095,6 +1104,8 @@ string_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1120,6 +1131,8 @@ int_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1147,6 +1160,8 @@ double_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);
@ -1174,6 +1189,8 @@ size_query_box_ok_callback (GtkWidget *w,
query_box = (QueryBox *) client_data;
gtk_widget_set_sensitive (query_box->qbox, FALSE);
/* disconnect, if we are connected to some signal */
if (query_box->object)
gtk_signal_disconnect_by_data (query_box->object, query_box);

View File

@ -173,9 +173,10 @@ static void layers_dialog_flatten_image_callback (GtkWidget *, gpointer);
static void layers_dialog_alpha_select_callback (GtkWidget *, gpointer);
static void layers_dialog_mask_select_callback (GtkWidget *, gpointer);
static void layers_dialog_add_alpha_channel_callback (GtkWidget *, gpointer);
static gint lc_dialog_auto_callback (GtkWidget *, gpointer);
static gint lc_dialog_close_callback (GtkWidget *, gpointer);
/* the dialog's toplevel callbacks */
static void lc_dialog_auto_callback (GtkWidget *, gpointer);
static gint lc_dialog_close_callback (GtkWidget *, gpointer);
static void lc_dialog_update_cb (GimpSet *, GimpImage *, gpointer);
static void lc_dialog_change_image (GimpSet *, GimpImage *, gpointer);
@ -264,7 +265,7 @@ static MenuItem layers_ops[] =
layers_dialog_raise_layer_to_top_callback, NULL, NULL, NULL },
{ N_("Layer to Bottom"), 'U', GDK_CONTROL_MASK,
layers_dialog_lower_layer_to_bottom_callback, NULL, NULL, NULL },
{ NULL, 0, 0, NULL, NULL, NULL, NULL },
{ NULL, 0, 0, NULL, NULL, NULL, NULL },
};
/* the option menu items -- the paint modes */
@ -2008,13 +2009,20 @@ layers_dialog_add_alpha_channel_callback (GtkWidget *w,
}
static gint
lc_dialog_auto_callback (GtkWidget *toggle_button, gpointer client_data)
static void
lc_dialog_auto_callback (GtkWidget *toggle_button,
gpointer client_data)
{
if (layersD)
layersD->auto_follow_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle_button));
if (layersD)
{
layersD->auto_follow_active =
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle_button));
return TRUE;
if (layersD->auto_follow_active)
lc_dialog_change_image (image_context,
(GimpImage *) gimp_set_get_active (image_context),
NULL);
}
}

View File

@ -155,12 +155,12 @@ static const GtkItemFactoryEntry image_entries[] =
{ N_("/Image/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Layers & Channels..."), "<control>L", dialogs_lc_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), NULL, layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), NULL, layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<control>F", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<control>B", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise to Top"), "<control>T", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower to Bottom"), "<control>U", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), "Prior", layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), "Next", layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<shift>Prior", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<shift>Next", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Top"), "<control>Prior", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Bottom"), "<control>Next", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Anchor Layer"), "<control>H", layers_anchor_cmd_callback, 0 },
{ N_("/Layers/Merge Visible Layers"), "<control>M", layers_merge_cmd_callback, 0 },

View File

@ -155,12 +155,12 @@ static const GtkItemFactoryEntry image_entries[] =
{ N_("/Image/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Layers & Channels..."), "<control>L", dialogs_lc_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), NULL, layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), NULL, layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<control>F", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<control>B", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise to Top"), "<control>T", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower to Bottom"), "<control>U", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), "Prior", layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), "Next", layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<shift>Prior", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<shift>Next", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Top"), "<control>Prior", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Bottom"), "<control>Next", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Anchor Layer"), "<control>H", layers_anchor_cmd_callback, 0 },
{ N_("/Layers/Merge Visible Layers"), "<control>M", layers_merge_cmd_callback, 0 },

View File

@ -1935,6 +1935,9 @@ file_pref_cmd_callback (GtkWidget *widget,
gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
gtk_widget_show (label);
/* Expand the "Interface" branch */
gtk_ctree_expand (GTK_CTREE (ctree), top_insert);
/* Environment */
vbox = file_prefs_notebook_append_page (GTK_NOTEBOOK (notebook),
_("Environment Settings"),

View File

@ -155,12 +155,12 @@ static const GtkItemFactoryEntry image_entries[] =
{ N_("/Image/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Layers & Channels..."), "<control>L", dialogs_lc_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), NULL, layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), NULL, layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<control>F", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<control>B", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise to Top"), "<control>T", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower to Bottom"), "<control>U", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/Stack/Previous Layer"), "Prior", layers_previous_cmd_callback, 0 },
{ N_("/Layers/Stack/Next Layer"), "Next", layers_next_cmd_callback, 0 },
{ N_("/Layers/Stack/Raise Layer"), "<shift>Prior", layers_raise_cmd_callback, 0 },
{ N_("/Layers/Stack/Lower Layer"), "<shift>Next", layers_lower_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Top"), "<control>Prior", layers_raise_to_top_cmd_callback, 0 },
{ N_("/Layers/Stack/Layer to Bottom"), "<control>Next", layers_lower_to_bottom_cmd_callback, 0 },
{ N_("/Layers/---"), NULL, NULL, 0, "<Separator>" },
{ N_("/Layers/Anchor Layer"), "<control>H", layers_anchor_cmd_callback, 0 },
{ N_("/Layers/Merge Visible Layers"), "<control>M", layers_merge_cmd_callback, 0 },