+}
+
+void pick_color(int x, int y)
+{
+ GdkDrawable *draw = gtk_widget_get_window(img_drawing_area);
+ int window_width, window_height;
+ unsigned char c;
+ gdk_drawable_get_size (draw, &window_width, &window_height);
+
+ if (!img_mark_buffer)
+ return;
+
+ /* we need to calculate an offset, since the drawing area is now larger */
+ x -= (window_width - img_width*img_scale_x/16) / 2;
+ y -= (window_height - img_height*img_scale_y/16) / 2;
+
+ x = x*16/img_scale_x;
+ y = y*16/img_scale_y;
+
+ if (x < 0 || x >= img_width || y < 0 || y >= img_height)
+ return;
+
+ c = img_mark_buffer[img_width*y+x];
+ if (c > 0) {
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+
+ mark_selected = c - 1;
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(palette_treeview));
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(palette_treeview));
+ if (get_iter_by_path_name(&iter, model, mark_selected)) {
+ gtk_tree_selection_select_iter(selection, &iter);
+ path = gtk_tree_model_get_path(model, &iter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(palette_treeview), path, NULL, FALSE, 0,0);
+ gtk_tree_path_free(path);
+ }