X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=colorize.git;a=blobdiff_plain;f=gui%2Fmain.c;h=dd757699a97b8872f71ffeb272b4a2ef11fc1ccb;hp=df656ff84e94ffb07add1998ac01ca38c234c855;hb=12af4c021cd5633ad2616e4364eb85a30cea31c3;hpb=198871b78cf797358e98cfb46338a9327ad5abcd diff --git a/gui/main.c b/gui/main.c index df656ff..dd75769 100644 --- a/gui/main.c +++ b/gui/main.c @@ -35,7 +35,7 @@ GtkToggleButton *show_flow_button; #endif int button_down = 0, button_down_x = -1000, button_down_y = -1000, shift_pressed = 0, button_num = 1; int brush_size; -int highlight = 0, preview = 0, rendered = 0, move_mode = 0, fill_mode = 0, flowview = 0; +int highlight = 0, preview = 0, rendered = 0, draw_mode = 1, move_mode = 0, fill_mode = 0, pick_mode = 0, flowview = 0; int mouse_over_palette_area = 0, mouse_over_drawing_area = 0, mouse_over_timeline_area = 0; #define min(x,y) ((x < y) ? x : y) #define abs(x,y) ((x < y) ? y - x : x - y) @@ -283,15 +283,21 @@ static gint motion_notify_event( GtkWidget *widget, } if ((state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK))) { - if (button_down) { + if (button_down && pick_mode) { + pick_color(x, y); + } + if (button_down && !pick_mode) { if (move_mode) { move_mark((x-button_down_x)*16/img_scale_x, (y-button_down_y)*16/img_scale_y); draw_image(0, 0, -1, -1); - } else { + } else + if (draw_mode) { draw_line(x, y, button_num == 1); } } } else { + if (button_down && pick_mode) + release_pick_mode(); button_down = 0; } @@ -307,9 +313,14 @@ static gint button_press_event (GtkWidget *widget, GdkEventButton *event) y = event->y; button_num = event->button; - if (!button_down) + if (!button_down && !pick_mode) copy_mark_to_undo(); + if (pick_mode) { + pick_color(x, y); + } else if (fill_mode) { + if (button_down) + return TRUE; fill(x, y, event->button != 1); draw_image(0, 0, -1, -1); } else @@ -318,7 +329,8 @@ static gint button_press_event (GtkWidget *widget, GdkEventButton *event) return TRUE; button_down_x = x; button_down_y = y; - } else { + } else + if (draw_mode) { /* if not shift, draw a dot and not a line */ if (!shift_pressed || button_down_x == -1000) { button_down_x = x;