diff options
author | Rr42 | 2018-06-25 20:18:29 +0530 |
---|---|---|
committer | Rr42 | 2018-06-25 20:18:29 +0530 |
commit | 0dad08dd60d4de845db5a7f0d0948b3503c46d4a (patch) | |
tree | 8b1b45b97f26f4d02db910d8c6f6706178908222 | |
parent | 7569db65471fb0ab60f80cc8ec871460a4360835 (diff) | |
download | LDMicroGtk-0dad08dd60d4de845db5a7f0d0948b3503c46d4a.tar.gz LDMicroGtk-0dad08dd60d4de845db5a7f0d0948b3503c46d4a.tar.bz2 LDMicroGtk-0dad08dd60d4de845db5a7f0d0948b3503c46d4a.zip |
Updated Analog scroll popup.
-rw-r--r-- | ldmicro/iolist.cpp | 27 | ||||
-rw-r--r-- | ldmicro/ldmicro.cpp | 8 |
2 files changed, 23 insertions, 12 deletions
diff --git a/ldmicro/iolist.cpp b/ldmicro/iolist.cpp index aa2e2ac..33ec2d9 100644 --- a/ldmicro/iolist.cpp +++ b/ldmicro/iolist.cpp @@ -397,6 +397,7 @@ void SaveIoListToFile(FILE *f) static gboolean AnalogSliderDialogKeyboardProc(GtkWidget* widget, GdkEventKey* event, gpointer name) { // g_print("key click!\n"); + SWORD v = (SWORD)gtk_range_get_value(GTK_RANGE(AnalogSliderTrackbar)); SetAdcShadow((char*)name, v); if (AnalogSliderDone == TRUE || AnalogSliderCancel == TRUE) @@ -464,6 +465,8 @@ void ShowAnalogSliderPopup(char *name) return; } + // int x, y; + // gtk_window_get_position(GTK_WINDOW(MainWindow), &x, &y); int left = GLOBAL_mouse_last_clicked_x - 10; // try to put the slider directly under the cursor (though later we might // realize that that would put the popup off the screen) @@ -475,18 +478,24 @@ void ShowAnalogSliderPopup(char *name) // if(top + 110 >= r.bottom) { // top = r.bottom - 110; // } - if(top < 0) top = 30; - if(left < 0) left = 50; + if(top < 0) top = 100; + if(left < 0) left = 100; - AnalogSliderMain = gtk_window_new(GTK_WINDOW_POPUP); - gtk_window_set_title(GTK_WINDOW(AnalogSliderMain), "I/O Pin"); - gtk_window_resize (GTK_WINDOW(AnalogSliderMain), 30, 100); - gtk_window_move(GTK_WINDOW(AnalogSliderMain), left, top); + if (!GTK_IS_WINDOW(AnalogSliderMain)) + { + AnalogSliderMain = gtk_window_new(GTK_WINDOW_POPUP); + gtk_window_set_title(GTK_WINDOW(AnalogSliderMain), "I/O Pin"); + gtk_window_resize (GTK_WINDOW(AnalogSliderMain), 30, 100); + gtk_window_move(GTK_WINDOW(AnalogSliderMain), left, top); + } - AnalogSliderTrackbar = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, + if (!GTK_IS_SCALE(AnalogSliderTrackbar)) + { + AnalogSliderTrackbar = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL, 0, maxVal, 1); + } gtk_range_set_value (GTK_RANGE(AnalogSliderTrackbar), currentVal); // gtk_scale_add_mark (GTK_SCALE(AnalogSliderTrackbar), (maxVal + 1)/8, GTK_POS_LEFT, NULL); @@ -509,7 +518,9 @@ void ShowAnalogSliderPopup(char *name) gtk_container_add(GTK_CONTAINER(AnalogSliderMain), AnalogSliderTrackbar); // SetFocus(AnalogSliderTrackbar); - // gtk_window_set_focus (GTK_WINDOW(AnalogSliderMain), AnalogSliderTrackbar); + gtk_window_set_focus_visible (GTK_WINDOW(AnalogSliderMain), TRUE); + gtk_window_set_keep_above (GTK_WINDOW(AnalogSliderMain), TRUE); + // gtk_window_set_focus (, AnalogSliderTrackbar); g_signal_connect (AnalogSliderMain, "key-press-event", G_CALLBACK(AnalogSliderDialogKeyboardProc), (PVOID)name); diff --git a/ldmicro/ldmicro.cpp b/ldmicro/ldmicro.cpp index dda8f99..1a39b53 100644 --- a/ldmicro/ldmicro.cpp +++ b/ldmicro/ldmicro.cpp @@ -666,8 +666,8 @@ gboolean LD_GTK_mouse_click_hook(GtkWidget *widget, GdkEvent *event, gpointer us case GDK_BUTTON_PRESS: if (event->button.button == 1) /// left click { - GLOBAL_mouse_last_clicked_x = event->button.x; - GLOBAL_mouse_last_clicked_y = event->button.y; + GLOBAL_mouse_last_clicked_x = event->button.x_root; + GLOBAL_mouse_last_clicked_y = event->button.y_root; int x = event->button.x; int y = event->button.y - 30 + gtk_adjustment_get_value(adjustment); @@ -689,8 +689,8 @@ gboolean LD_GTK_mouse_click_hook(GtkWidget *widget, GdkEvent *event, gpointer us case GDK_2BUTTON_PRESS: if (event->button.button == 1) /// left click { - GLOBAL_mouse_last_clicked_x = event->button.x; - GLOBAL_mouse_last_clicked_y = event->button.y; + GLOBAL_mouse_last_clicked_x = event->button.x_root; + GLOBAL_mouse_last_clicked_y = event->button.y_root; int x = event->button.x; int y = event->button.y - 30 + gtk_adjustment_get_value(adjustment); |