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

@ -1,3 +1,9 @@
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).
2007-05-24 Manish Singh <yosh@gimp.org> 2007-05-24 Manish Singh <yosh@gimp.org>
* plug-ins/pygimp/pygimp-display.c (pygimp_display_new): return None * plug-ins/pygimp/pygimp-display.c (pygimp_display_new): return None

View File

@ -1018,6 +1018,23 @@ static guint _timeout;
static guint _keyval; static guint _keyval;
static gint _dx, _dy; 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 static void
move_selected_objects(gint dx, gint dy, gboolean fast) move_selected_objects(gint dx, gint dy, gboolean fast)
{ {
@ -1058,6 +1075,7 @@ key_press_cb(GtkWidget *widget, GdkEventKey *event)
{ {
gboolean handled = FALSE; gboolean handled = FALSE;
gboolean shift = event->state & GDK_SHIFT_MASK; gboolean shift = event->state & GDK_SHIFT_MASK;
gboolean ctrl = event->state & GDK_CONTROL_MASK;
Command_t *command; Command_t *command;
preview_freeze(); preview_freeze();
@ -1066,19 +1084,31 @@ key_press_cb(GtkWidget *widget, GdkEventKey *event)
switch (event->keyval) { switch (event->keyval) {
case GDK_Left: 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; handled = TRUE;
break; break;
case GDK_Right: 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; handled = TRUE;
break; break;
case GDK_Up: 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; handled = TRUE;
break; break;
case GDK_Down: 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; handled = TRUE;
break; break;
case GDK_Tab: case GDK_Tab:

View File

@ -294,6 +294,28 @@ object_move(Object_t *obj, gint dx, gint dy)
object_emit_geometry_signal(obj); object_emit_geometry_signal(obj);
} }
void
object_move_sash(Object_t *obj, gint dx, gint dy)
{
gint x, y, width, height;
obj->class->get_dimensions(obj, &x, &y, &width, &height);
if (dx == 0)
x += (width / 2);
else
x += width;
if (dy == 0)
y += (height / 2);
else
y += height;
MoveSashFunc_t sash_func = obj->class->near_sash(obj, x, y);
if (sash_func) {
sash_func(obj, dx, dy);
object_emit_geometry_signal(obj);
}
}
void void
object_remove(Object_t *obj) object_remove(Object_t *obj)
{ {
@ -927,6 +949,17 @@ object_list_send_to_back(ObjectList_t *list)
} }
} }
void
object_list_move_sash_selected(ObjectList_t *list, gint dx, gint dy)
{
GList *p;
for (p = list->list; p; p = p->next) {
Object_t *obj = (Object_t*) p->data;
if (obj->selected)
object_move_sash(obj, dx, dy);
}
}
static void static void
write_xml_attrib(const gchar *attrib, const gchar *value, write_xml_attrib(const gchar *attrib, const gchar *value,
const gchar *default_text, gpointer param, const gchar *default_text, gpointer param,

View File

@ -93,6 +93,7 @@ void object_edit(Object_t *obj, gboolean add);
void object_select(Object_t *obj); void object_select(Object_t *obj);
void object_unselect(Object_t *obj); void object_unselect(Object_t *obj);
void object_move(Object_t *obj, gint dx, gint dy); void object_move(Object_t *obj, gint dx, gint dy);
void object_move_sash(Object_t *obj, gint dx, gint dy);
void object_remove(Object_t *obj); void object_remove(Object_t *obj);
void object_lock(Object_t *obj); void object_lock(Object_t *obj);
void object_unlock(Object_t *obj); void object_unlock(Object_t *obj);
@ -200,6 +201,7 @@ void object_list_move_selected_up(ObjectList_t *list);
void object_list_move_selected_down(ObjectList_t *list); void object_list_move_selected_down(ObjectList_t *list);
void object_list_move_to_front(ObjectList_t *list); void object_list_move_to_front(ObjectList_t *list);
void object_list_send_to_back(ObjectList_t *list); void object_list_send_to_back(ObjectList_t *list);
void object_list_move_sash_selected(ObjectList_t *list, gint dx, gint dy);
void object_list_write_csim(ObjectList_t *list, gpointer param, void object_list_write_csim(ObjectList_t *list, gpointer param,
OutputFunc_t output); OutputFunc_t output);