From 7617a46b26559bf9f78b23061e92ba82f4bfc6fa Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Thu, 21 Jun 2018 18:14:13 +0000 Subject: Android: roughly fixed Fl::grab() to make menus easier to navigate git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12960 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Android/Fl_Android_Screen_Driver.cxx | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/drivers/Android/Fl_Android_Screen_Driver.cxx') diff --git a/src/drivers/Android/Fl_Android_Screen_Driver.cxx b/src/drivers/Android/Fl_Android_Screen_Driver.cxx index 4a9674a2b..a7476c94e 100644 --- a/src/drivers/Android/Fl_Android_Screen_Driver.cxx +++ b/src/drivers/Android/Fl_Android_Screen_Driver.cxx @@ -147,15 +147,17 @@ int Fl_Android_Screen_Driver::handle_mouse_event(AInputQueue *queue, AInputEvent if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_DOWN) { AInputQueue_finishEvent(queue, event, 1); Fl::e_is_click = 1; + Fl_Android_Application::log_i("Mouse push %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y()); if (win) Fl::handle(FL_PUSH, win); // do NOT send a push event into the "Desktop" - Fl_Android_Application::log_i("Mouse push %d at %d, %d", Fl::event_button(), Fl::event_x(), Fl::event_y()); } else if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_MOVE) { AInputQueue_finishEvent(queue, event, 1); - Fl::handle(FL_DRAG, win); + Fl_Android_Application::log_i("Mouse drag %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y()); + if (win) Fl::handle(FL_DRAG, win); } else if (AMotionEvent_getAction(event) == AMOTION_EVENT_ACTION_UP) { AInputQueue_finishEvent(queue, event, 1); Fl::e_state = 0; - Fl::handle(FL_RELEASE, win); + Fl_Android_Application::log_i("Mouse release %x %d at %d, %d", win, Fl::event_button(), Fl::event_x(), Fl::event_y()); + if (win) Fl::handle(FL_RELEASE, win); } else { AInputQueue_finishEvent(queue, event, 0); } @@ -504,6 +506,22 @@ int Fl_Android_Screen_Driver::get_mouse(int &x, int &y) return 1; } + +void Fl_Android_Screen_Driver::grab(Fl_Window* win) +{ + if (win) { + if (!Fl::grab_) { + // TODO: will we need to fix any focus and/or direct the input stream to a window + } + Fl::grab_ = win; + } else { + if (Fl::grab_) { + Fl::grab_ = 0; + } + } +} + + // // End of "$Id$". // -- cgit v1.2.3