Skip to content

Commit 784efe7

Browse files
committed
implement 'Easier way on working pixelwise' (issue #36)
1 parent 24f9e21 commit 784efe7

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

src/ColorPickerWindow.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ namespace ColorPicker {
8585
color_format_combobox.append_text ("rgba");
8686
color_format_combobox.append_text ("Gdk RGBA");
8787
color_format_combobox.append_text ("Qt rgba");
88-
color_format_combobox.active = settings.color_format_index;
88+
color_format_combobox.active = settings.color_format_index;
8989

9090
var adjust_button = new Gtk.Button.from_icon_name ("media-eq-symbolic");
9191
adjust_button.margin_start = 12;

src/Widgets/Picker.vala

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ namespace ColorPicker.Widgets {
3434
const string bright_border_color_string = "#FFFFFF";
3535
private Gdk.RGBA bright_border_color = Gdk.RGBA();
3636

37+
private int mouse_pos_x = 0;
38+
private int mouse_pos_y = 0;
39+
3740
// 1. Snapsize is the amount of pixel going to be magnified by the zoomlevel.
3841
// 2. The snapsize must be odd to have a 1px magnifier center.
3942
// 3. Asure that snapsize*max_zoomlevel+shadow_width*2 is smaller than 2 * get_screen ().get_display ().get_maximal_cursor_size()
@@ -77,9 +80,11 @@ namespace ColorPicker.Widgets {
7780

7881

7982
public override bool button_release_event (Gdk.EventButton e) {
83+
// button_1 is left mouse button
8084
if (e.button == 1) {
8185
Gdk.RGBA color = get_color_at ((int) e.x_root, (int) e.y_root);
8286
picked (color);
87+
// button_3 is right mouse button
8388
} else if (e.button == 3) {
8489
cancelled ();
8590
}
@@ -93,8 +98,9 @@ namespace ColorPicker.Widgets {
9398
}
9499

95100

96-
public override bool motion_notify_event (Gdk.EventMotion e) {
101+
public override bool motion_notify_event (Gdk.EventMotion e) {
97102
Gdk.RGBA color = get_color_at ((int) e.x_root, (int) e.y_root);
103+
98104
moved (color);
99105

100106
set_magnifier_cursor ();
@@ -237,10 +243,32 @@ namespace ColorPicker.Widgets {
237243

238244

239245
public override bool key_press_event (Gdk.EventKey e) {
240-
if (e.keyval == Gdk.Key.Escape) {
241-
cancelled ();
246+
int px, py;
247+
get_pointer (out px, out py);
248+
var manager = Gdk.Display.get_default ().get_device_manager ();
249+
250+
switch (e.keyval) {
251+
case Gdk.Key.Escape:
252+
cancelled ();
253+
break;
254+
case Gdk.Key.Return:
255+
Gdk.RGBA color = get_color_at (px, py);
256+
picked (color);
257+
break;
258+
case Gdk.Key.Up:
259+
manager.get_client_pointer ().warp (get_screen (), px, py - 1);
260+
break;
261+
case Gdk.Key.Down:
262+
manager.get_client_pointer ().warp (get_screen (), px, py + 1);
263+
break;
264+
case Gdk.Key.Left:
265+
manager.get_client_pointer ().warp (get_screen (), px - 1, py);
266+
break;
267+
case Gdk.Key.Right:
268+
manager.get_client_pointer ().warp (get_screen (), px + 1, py);
269+
break;
242270
}
243-
271+
244272
return true;
245273
}
246274

0 commit comments

Comments
 (0)