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:

committed by
Sven Neumann

parent
1c1ee4dd21
commit
ec1161c139
@ -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>
|
||||
|
||||
* plug-ins/pygimp/pygimp-display.c (pygimp_display_new): return None
|
||||
|
@ -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,18 +1084,30 @@ key_press_cb(GtkWidget *widget, GdkEventKey *event)
|
||||
|
||||
switch (event->keyval) {
|
||||
case GDK_Left:
|
||||
if (ctrl)
|
||||
move_sash_selected_objects(-1, 0, shift);
|
||||
else
|
||||
move_selected_objects(-1, 0, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Right:
|
||||
if (ctrl)
|
||||
move_sash_selected_objects(1, 0, shift);
|
||||
else
|
||||
move_selected_objects(1, 0, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Up:
|
||||
if (ctrl)
|
||||
move_sash_selected_objects(0, -1, shift);
|
||||
else
|
||||
move_selected_objects(0, -1, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
case GDK_Down:
|
||||
if (ctrl)
|
||||
move_sash_selected_objects(0, 1, shift);
|
||||
else
|
||||
move_selected_objects(0, 1, shift);
|
||||
handled = TRUE;
|
||||
break;
|
||||
|
@ -294,6 +294,28 @@ object_move(Object_t *obj, gint dx, gint dy)
|
||||
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
|
||||
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
|
||||
write_xml_attrib(const gchar *attrib, const gchar *value,
|
||||
const gchar *default_text, gpointer param,
|
||||
|
@ -93,6 +93,7 @@ void object_edit(Object_t *obj, gboolean add);
|
||||
void object_select(Object_t *obj);
|
||||
void object_unselect(Object_t *obj);
|
||||
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_lock(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_to_front(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,
|
||||
OutputFunc_t output);
|
||||
|
Reference in New Issue
Block a user