diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-08-05 12:19:35 +0200 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2023-08-05 12:19:42 +0200 |
| commit | 3049e6394a3376f7fff1c8cde19fd7bb1a9252ec (patch) | |
| tree | e51ea3abc1232caac48edfc24e7e54fdf6495bcf /test | |
| parent | 2953db58c75f30912bee6b91fd5ff087bbb8cad5 (diff) | |
#733 partial: Adds rotation gesture event on MacOS
Diffstat (limited to 'test')
| -rw-r--r-- | test/keyboard.cxx | 21 | ||||
| -rw-r--r-- | test/keyboard_ui.fl | 39 |
2 files changed, 43 insertions, 17 deletions
diff --git a/test/keyboard.cxx b/test/keyboard.cxx index 46ba6142f..dd6feeb0f 100644 --- a/test/keyboard.cxx +++ b/test/keyboard.cxx @@ -43,11 +43,22 @@ int handle(int e) { return (e == FL_SHORTCUT); // eat all keystrokes } -int MyWindow::handle(int msg) { - if (msg==FL_MOUSEWHEEL) { - roller_x->value( roller_x->value() + Fl::e_dx * roller_x->step() ); - roller_y->value( roller_y->value() + Fl::e_dy * roller_y->step() ); - return 1; +int MyWindow::handle(int event) { + static int r = 0; + switch (event) { + case FL_MOUSEWHEEL: { + int x = (int)(w_scroll->xvalue() - Fl::event_dx()); + int y = (int)(w_scroll->yvalue() - Fl::event_dy()); + w_scroll->value( (double)(x&31), (double)(y&31) ); + return 1; } + case FL_ZOOM_GESTURE: { + int z = (int)(w_zoom->yvalue() + Fl::event_dy()); + w_zoom->value( (double)(z&255), (double)(z&255) ); + return 1; } + case FL_ROTATE_GESTURE: { + r = r - (Fl::event_dy()/100.0); + w_rotate->value( (double)(r&1023) ); + return 1; } } return 0; } diff --git a/test/keyboard_ui.fl b/test/keyboard_ui.fl index 425b05f4b..116259773 100644 --- a/test/keyboard_ui.fl +++ b/test/keyboard_ui.fl @@ -10,7 +10,7 @@ snap { Function {make_window()} {open } { Fl_Window my_window {open - xywh {448 339 495 215} type Double + xywh {407 352 550 215} type Double code0 {\#include "keyboard.h"} class MyWindow visible } { @@ -690,8 +690,8 @@ Function {make_window()} {open xywh {15 20 170 30} labelsize 9 align 5 } Fl_Box {} { - label {Fl::event_state():} selected - xywh {400 15 80 0} labelsize 9 align 5 + label {Fl::event_state():} + xywh {400 0 80 15} labelsize 9 align 22 } Fl_Output text_output { label {Fl::event_text():} @@ -709,15 +709,30 @@ Function {make_window()} {open callback key_cb xywh {420 70 20 20} labelsize 10 } - Fl_Dial roller_x { - label {x:} - callback wheel_cb - xywh {440 70 20 20} box ROUND_UP_BOX selection_color 49 labelsize 9 align 5 step 0.1 - } - Fl_Dial roller_y { - label {y:} - callback wheel_cb - xywh {460 70 20 20} box ROUND_UP_BOX selection_color 49 labelsize 9 align 5 step 0.1 + Fl_Box {} { + label {Gestures:} + xywh {493 0 50 15} labelsize 9 align 22 + } + Fl_Box w_scroll { + label Mousewheel selected + xywh {495 20 40 40} box DOWN_BOX selection_color 8 labelsize 8 align 2 + code0 {\#include <FL/Fl_Positioner.H>} + code1 {w_scroll->xbounds(0.0, 32.0); w_scroll->ybounds(0.0, 32.0);} + code2 {w_scroll->value(16.0, 16.0);} + class Fl_Positioner + } + Fl_Box w_zoom { + label Zoom + tooltip {the zoom gestures is not supported on all platforms} xywh {495 75 40 40} box DOWN_BOX selection_color 8 labelsize 8 align 2 + code0 {\#include <FL/Fl_Positioner.H>} + code1 {w_zoom->xbounds(0.0, 256.0); w_zoom->ybounds(256.0, 0.0);} + code2 {w_zoom->value(128.0, 128.0);} + class Fl_Positioner + } + Fl_Dial w_rotate { + label Rotate + tooltip {the rotation gestures is not supported on all platforms} xywh {495 130 40 40} box ROUND_DOWN_BOX selection_color 49 labelsize 8 maximum 1023 step 1 + code1 {w_rotate->angles(0, 360);} } } } |
