X-Git-Url: https://git.donarmstrong.com/?p=xournal.git;a=blobdiff_plain;f=src%2Fxo-paint.c;fp=src%2Fxo-paint.c;h=15b1fe86f65aacbb9958aa71cd57b16f35da77ec;hp=33576f8a21cca3fc5ccbef072e631fb5d9f4e361;hb=b5de327d9fdee841ff674dd5174365467e7fe67e;hpb=5e7bac3e55618a319a4b3742cb8821a3b7c05be6 diff --git a/src/xo-paint.c b/src/xo-paint.c index 33576f8..15b1fe8 100644 --- a/src/xo-paint.c +++ b/src/xo-paint.c @@ -608,9 +608,9 @@ void finalize_selectrect(void) } if (ui.selection->items == NULL) { - // if we clicked inside a text zone ? - item = click_is_in_text(ui.selection->layer, x1, y1); - if (item!=NULL && item==click_is_in_text(ui.selection->layer, x2, y2)) { + // if we clicked inside a text zone or image? + item = click_is_in_text_or_image(ui.selection->layer, x1, y1); + if (item!=NULL && item==click_is_in_text_or_image(ui.selection->layer, x2, y2)) { ui.selection->items = g_list_append(ui.selection->items, item); g_memmove(&(ui.selection->bbox), &(item->bbox), sizeof(struct BBox)); gnome_canvas_item_set(ui.selection->canvas_item, @@ -1259,6 +1259,22 @@ struct Item *click_is_in_text(struct Layer *layer, double x, double y) return val; } +struct Item *click_is_in_text_or_image(struct Layer *layer, double x, double y) +{ + GList *itemlist; + struct Item *item, *val; + + val = NULL; + for (itemlist = layer->items; itemlist!=NULL; itemlist = itemlist->next) { + item = (struct Item *)itemlist->data; + if (item->type != ITEM_TEXT && item->type != ITEM_IMAGE) continue; + if (xbbox.left || x>item->bbox.right) continue; + if (ybbox.top || y>item->bbox.bottom) continue; + val = item; + } + return val; +} + void refont_text_item(struct Item *item, gchar *font_name, double font_size) { if (!strcmp(font_name, item->font_name) && font_size==item->font_size) return;