plug-ins/imagemap/imap_main.c applied patch from Kevin Hurewitz that adds

2007-05-25  Sven Neumann  <sven@gimp.org>

	* plug-ins/imagemap/imap_main.c
	* plug-ins/imagemap/imap_object.[ch]: applied patch from Kevin
	Hurewitz that adds keyboard control for resizing an area (bug 
#439226).


svn path=/trunk/; revision=22609
This commit is contained in:
Sven Neumann
2007-05-25 07:28:15 +00:00
committed by Sven Neumann
parent 1c1ee4dd21
commit ec1161c139
4 changed files with 75 additions and 4 deletions

View File

@ -1018,6 +1018,23 @@ static guint _timeout;
static guint _keyval;
static gint _dx, _dy;
static void
move_sash_selected_objects(gint dx, gint dy, gboolean fast)
{
if (fast) {
dx *= 5;
dy *= 5;
}
gdk_gc_set_function(_preferences.normal_gc, GDK_XOR);
gdk_gc_set_function(_preferences.selected_gc, GDK_XOR);
object_list_draw_selected(_shapes, _preview->preview->window);
object_list_move_sash_selected(_shapes, dx, dy);
object_list_draw_selected(_shapes, _preview->preview->window);
gdk_gc_set_function(_preferences.normal_gc, GDK_COPY);
gdk_gc_set_function(_preferences.selected_gc, GDK_COPY);
}
static void
move_selected_objects(gint dx, gint dy, gboolean fast)
{
@ -1058,6 +1075,7 @@ key_press_cb(GtkWidget *widget, GdkEventKey *event)
{
gboolean handled = FALSE;
gboolean shift = event->state & GDK_SHIFT_MASK;
gboolean ctrl = event->state & GDK_CONTROL_MASK;
Command_t *command;
preview_freeze();
@ -1066,19 +1084,31 @@ key_press_cb(GtkWidget *widget, GdkEventKey *event)
switch (event->keyval) {
case GDK_Left:
move_selected_objects(-1, 0, shift);
if (ctrl)
move_sash_selected_objects(-1, 0, shift);
else
move_selected_objects(-1, 0, shift);
handled = TRUE;
break;
case GDK_Right:
move_selected_objects(1, 0, shift);
if (ctrl)
move_sash_selected_objects(1, 0, shift);
else
move_selected_objects(1, 0, shift);
handled = TRUE;
break;
case GDK_Up:
move_selected_objects(0, -1, shift);
if (ctrl)
move_sash_selected_objects(0, -1, shift);
else
move_selected_objects(0, -1, shift);
handled = TRUE;
break;
case GDK_Down:
move_selected_objects(0, 1, shift);
if (ctrl)
move_sash_selected_objects(0, 1, shift);
else
move_selected_objects(0, 1, shift);
handled = TRUE;
break;
case GDK_Tab: