X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fxo-paint.c;h=85e3536a488430b7c81833475f7431cdd5c1eea9;hb=34dbe92edd95fbf7082c3e54f438c76355254fe5;hp=8f6f609ef439f62966a7a179407b1b9a8a07f11f;hpb=8d8f9e44b17ef9737084eea7693072e4777a0609;p=xournal.git diff --git a/src/xo-paint.c b/src/xo-paint.c index 8f6f609..85e3536 100644 --- a/src/xo-paint.c +++ b/src/xo-paint.c @@ -1086,7 +1086,7 @@ void clipboard_paste(void) // modify the color or thickness of pen strokes in a selection -void recolor_selection(int color) +void recolor_selection(int color_no, guint color_rgba) { GList *itemlist; struct Item *item; @@ -1108,8 +1108,8 @@ void recolor_selection(int color) g_memmove(brush, &(item->brush), sizeof(struct Brush)); undo->auxlist = g_list_append(undo->auxlist, brush); // repaint the stroke - item->brush.color_no = color; - item->brush.color_rgba = predef_colors_rgba[color]; + item->brush.color_no = color_no; + item->brush.color_rgba = color_rgba; if (item->canvas_item!=NULL) { if (!item->brush.variable_width) gnome_canvas_item_set(item->canvas_item, @@ -1215,6 +1215,17 @@ void start_text(GdkEvent *event, struct Item *item) get_pointer_coords(event, pt); ui.cur_item_type = ITEM_TEXT; + // HACK TO BYPASS GTK+ 2.17 issues + if (!gtk_check_version(2, 17, 0)) { + /* first we make *all* canvas subwindows become XInput aware, + so that it'll be safe to disable XInput later on... (!!!) */ + gtk_widget_set_extension_events(GTK_WIDGET (canvas), + ui.use_xinput?GDK_EXTENSION_EVENTS_ALL:GDK_EXTENSION_EVENTS_NONE); + /* then we ask the canvas's leave-notify handler to disable + xinput when it's safe to do so... */ + ui.need_emergency_disable_xinput = TRUE; + } + if (item==NULL) { item = g_new(struct Item, 1); item->text = NULL; @@ -1277,6 +1288,14 @@ void end_text(void) GnomeCanvasItem *tmpitem; if (ui.cur_item_type!=ITEM_TEXT) return; // nothing for us to do! + + // HACK TO BYPASS GTK+ 2.17 issues + if (!gtk_check_version(2, 17, 0)) { + // re-enable XInput if needed (we disabled it during text edition) + gdk_input_set_extension_events(GTK_WIDGET(canvas)->window, + GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK, + ui.use_xinput?GDK_EXTENSION_EVENTS_ALL:GDK_EXTENSION_EVENTS_NONE); + } // finalize the text that's been edited... buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(ui.cur_item->widget));