Add eyedrop tool. The treeview will scroll to the selection.
[colorize.git] / gui / main.c
index df656ff..dd75769 100644 (file)
@@ -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;