From 9d8b954f716821a10b6a7762fad61298c371a9ba Mon Sep 17 00:00:00 2001 From: Shaohua Tong Date: Wed, 4 Dec 2019 15:55:37 +0100 Subject: [PATCH] fix range of x,y in windowsWidth and windowsHeight --- src/GUI_Window.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/GUI_Window.cpp b/src/GUI_Window.cpp index 82882f0..9f8730a 100644 --- a/src/GUI_Window.cpp +++ b/src/GUI_Window.cpp @@ -3,11 +3,18 @@ /*Function to handle the input*/ auto GUI_Window::handle(int e) -> int { + int windowsWidth = vkvm::getWidth(); + int windowsHeight = vkvm::getHeight(); + switch (e) { /*Mousebutton*/ case FL_PUSH: x = Fl::event_x(); y = Fl::event_y(); + x < 0 ? x = 0: x = x; + y < 0 ? y = 0: y = y; + x > windowsWidth ? x = windowsWidth : x = x; + y > windowsHeight ? y = windowsHeight : y = y; vkvm::setMousePosition(x,y); if (Fl::event_button() == FL_LEFT_MOUSE) { this->child(2)->label("Event:Mouse Left Down"); @@ -24,6 +31,10 @@ auto GUI_Window::handle(int e) -> int { case FL_RELEASE: x = Fl::event_x(); y = Fl::event_y(); + x < 0 ? x = 0: x = x; + y < 0 ? y = 0: y = y; + x > windowsWidth ? x = windowsWidth : x = x; + y > windowsHeight ? y = windowsHeight : y = y; vkvm::setMousePosition(x,y); if (Fl::event_button() == FL_LEFT_MOUSE) { this->child(2)->label("Event:Mouse Left Up"); @@ -39,19 +50,20 @@ auto GUI_Window::handle(int e) -> int { case FL_DRAG: x = Fl::event_x(); y = Fl::event_y(); + x < 0 ? x = 0: x = x; + y < 0 ? y = 0: y = y; + x > windowsWidth ? x = windowsWidth : x = x; + y > windowsHeight ? y = windowsHeight : y = y; vkvm::setMousePosition(x,y); this->child(3)->label(position_to_string(x,y)); if (Fl::event_button() == FL_LEFT_MOUSE) { this->child(2)->label("Event:Mouse Left Drag"); - vkvm::callEvent(vkvm::EventType::MouseLeftDown); vkvm::callEvent(vkvm::EventType::MouseMove); } else if (Fl::event_button() == FL_RIGHT_MOUSE) { this->child(2)->label("Event:Mouse Right Drag"); - vkvm::callEvent(vkvm::EventType::MouseRightDown); vkvm::callEvent(vkvm::EventType::MouseMove); } else { this->child(2)->label("Event:Mouse Middle Drag"); - vkvm::callEvent(vkvm::EventType::MouseMiddleDown); vkvm::callEvent(vkvm::EventType::MouseMove); } @@ -60,6 +72,10 @@ auto GUI_Window::handle(int e) -> int { case FL_MOVE: x = Fl::event_x(); y = Fl::event_y(); + x < 0 ? x = 0: x = x; + y < 0 ? y = 0: y = y; + x > windowsWidth ? x = windowsWidth : x = x; + y > windowsHeight ? y = windowsHeight : y = y; vkvm::setMousePosition(x,y); vkvm::callEvent(vkvm::EventType::MouseMove); this->child(2)->label("Event:Mouse Move");