Signed-off-by: falkTX <falktx@falktx.com>pull/272/head
| @@ -1,228 +0,0 @@ | |||||
| /* | |||||
| * DISTRHO Plugin Framework (DPF) | |||||
| * Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com> | |||||
| * | |||||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||||
| * permission notice appear in all copies. | |||||
| * | |||||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||||
| */ | |||||
| #ifndef DGL_EVENTS_HPP_INCLUDED | |||||
| #define DGL_EVENTS_HPP_INCLUDED | |||||
| #include "Geometry.hpp" | |||||
| START_NAMESPACE_DGL | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| namespace Events | |||||
| { | |||||
| /** | |||||
| Base event data. | |||||
| These are the fields present on all Widget events. | |||||
| @a mod Currently active keyboard modifiers, @see Modifier. | |||||
| @a mod Event flags, @see Flag. | |||||
| @a time Event timestamp (if any). | |||||
| */ | |||||
| struct BaseEvent { | |||||
| uint mod; | |||||
| uint flags; | |||||
| uint time; | |||||
| /** Constuctor */ | |||||
| BaseEvent() noexcept : mod(0x0), flags(0x0), time(0) {} | |||||
| /** Destuctor */ | |||||
| virtual ~BaseEvent() noexcept {} | |||||
| }; | |||||
| /** | |||||
| Keyboard event. | |||||
| This event represents low-level key presses and releases. | |||||
| This can be used for "direct" keyboard handing like key bindings, but must not be interpreted as text input. | |||||
| Keys are represented portably as Unicode code points, using the "natural" code point for the key. | |||||
| The @a key field is the code for the pressed key, without any modifiers applied. | |||||
| For example, a press or release of the 'A' key will have `key` 97 ('a') | |||||
| regardless of whether shift or control are being held. | |||||
| Alternatively, the raw @a keycode can be used to work directly with physical keys, | |||||
| but note that this value is not portable and differs between platforms and hardware. | |||||
| @a press True if the key was pressed, false if released. | |||||
| @a key Unicode point of the key pressed. | |||||
| @a keycode Raw keycode. | |||||
| @see onKeyboard | |||||
| */ | |||||
| struct KeyboardEvent : BaseEvent { | |||||
| bool press; | |||||
| uint key; | |||||
| uint keycode; | |||||
| /** Constuctor */ | |||||
| KeyboardEvent() noexcept | |||||
| : BaseEvent(), | |||||
| press(false), | |||||
| key(0), | |||||
| keycode(0) {} | |||||
| }; | |||||
| /** | |||||
| Special keyboard event. | |||||
| This event allows the use of keys that do not have unicode points. | |||||
| Note that some are non-printable keys. | |||||
| @a press True if the key was pressed, false if released. | |||||
| @a key The key pressed. | |||||
| @see onSpecial | |||||
| */ | |||||
| struct SpecialEvent : BaseEvent { | |||||
| bool press; | |||||
| Key key; | |||||
| /** Constuctor */ | |||||
| SpecialEvent() noexcept | |||||
| : BaseEvent(), | |||||
| press(false), | |||||
| key(Key(0)) {} | |||||
| }; | |||||
| /** | |||||
| Character input event. | |||||
| This event represents text input, usually as the result of a key press. | |||||
| The text is given both as a Unicode character code and a UTF-8 string. | |||||
| Note that this event is generated by the platform's input system, | |||||
| so there is not necessarily a direct correspondence between text events and physical key presses. | |||||
| For example, with some input methods a sequence of several key presses will generate a single character. | |||||
| @a keycode Raw key code. | |||||
| @a character Unicode character code. | |||||
| @a string UTF-8 string. | |||||
| @see onCharacterInput | |||||
| */ | |||||
| struct CharacterInputEvent : BaseEvent { | |||||
| uint keycode; | |||||
| uint character; | |||||
| char string[8]; | |||||
| /** Constuctor */ | |||||
| CharacterInputEvent() noexcept | |||||
| : BaseEvent(), | |||||
| keycode(0), | |||||
| character(0), | |||||
| string{'\0','\0','\0','\0','\0','\0','\0','\0'} {} | |||||
| }; | |||||
| /** | |||||
| Mouse press or release event. | |||||
| @a button The button number starting from 1 (1 = left, 2 = middle, 3 = right). | |||||
| @a press True if the button was pressed, false if released. | |||||
| @a pos The widget-relative coordinates of the pointer. | |||||
| @see onMouse | |||||
| */ | |||||
| struct MouseEvent : BaseEvent { | |||||
| uint button; | |||||
| bool press; | |||||
| Point<double> pos; | |||||
| /** Constuctor */ | |||||
| MouseEvent() noexcept | |||||
| : BaseEvent(), | |||||
| button(0), | |||||
| press(false), | |||||
| pos(0.0, 0.0) {} | |||||
| }; | |||||
| /** | |||||
| Mouse motion event. | |||||
| @a pos The widget-relative coordinates of the pointer. | |||||
| @see onMotion | |||||
| */ | |||||
| struct MotionEvent : BaseEvent { | |||||
| Point<double> pos; | |||||
| /** Constuctor */ | |||||
| MotionEvent() noexcept | |||||
| : BaseEvent(), | |||||
| pos(0.0, 0.0) {} | |||||
| }; | |||||
| /** | |||||
| Mouse scroll event. | |||||
| The scroll distance is expressed in "lines", | |||||
| an arbitrary unit that corresponds to a single tick of a detented mouse wheel. | |||||
| For example, `delta.y` = 1.0 scrolls 1 line up. | |||||
| Some systems and devices support finer resolution and/or higher values for fast scrolls, | |||||
| so programs should handle any value gracefully. | |||||
| @a pos The widget-relative coordinates of the pointer. | |||||
| @a delta The scroll distance. | |||||
| @a direction The direction of the scroll or "smooth". | |||||
| @see onScroll | |||||
| */ | |||||
| struct ScrollEvent : BaseEvent { | |||||
| Point<double> pos; | |||||
| Point<double> delta; | |||||
| ScrollDirection direction; | |||||
| /** Constuctor */ | |||||
| ScrollEvent() noexcept | |||||
| : BaseEvent(), | |||||
| pos(0.0, 0.0), | |||||
| delta(0.0, 0.0), | |||||
| direction(kScrollSmooth) {} | |||||
| }; | |||||
| /** | |||||
| Resize event. | |||||
| @a size The new widget size. | |||||
| @a oldSize The previous size, may be null. | |||||
| @see onResize | |||||
| */ | |||||
| struct ResizeEvent { | |||||
| Size<uint> size; | |||||
| Size<uint> oldSize; | |||||
| /** Constuctor */ | |||||
| ResizeEvent() noexcept | |||||
| : size(0, 0), | |||||
| oldSize(0, 0) {} | |||||
| }; | |||||
| /** | |||||
| Widget position changed event. | |||||
| @a pos The new absolute position of the widget. | |||||
| @a oldPos The previous absolute position of the widget. | |||||
| @see onPositionChanged | |||||
| */ | |||||
| struct PositionChangedEvent { | |||||
| Point<int> pos; | |||||
| Point<int> oldPos; | |||||
| /** Constuctor */ | |||||
| PositionChangedEvent() noexcept | |||||
| : pos(0, 0), | |||||
| oldPos(0, 0) {} | |||||
| }; | |||||
| } | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| END_NAMESPACE_DGL | |||||
| #endif // DGL_EVENTS_HPP_INCLUDED | |||||
| @@ -17,7 +17,7 @@ | |||||
| #ifndef DGL_WIDGET_HPP_INCLUDED | #ifndef DGL_WIDGET_HPP_INCLUDED | ||||
| #define DGL_WIDGET_HPP_INCLUDED | #define DGL_WIDGET_HPP_INCLUDED | ||||
| #include "Events.hpp" | |||||
| #include "Geometry.hpp" | |||||
| START_NAMESPACE_DGL | START_NAMESPACE_DGL | ||||
| @@ -29,8 +29,6 @@ class SubWidget; | |||||
| class TopLevelWidget; | class TopLevelWidget; | ||||
| class Window; | class Window; | ||||
| using namespace Events; | |||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| /** | /** | ||||
| @@ -54,6 +52,203 @@ using namespace Events; | |||||
| */ | */ | ||||
| class Widget | class Widget | ||||
| { | { | ||||
| public: | |||||
| /** | |||||
| Base event data. | |||||
| These are the fields present on all Widget events. | |||||
| @a mod Currently active keyboard modifiers, @see Modifier. | |||||
| @a mod Event flags, @see Flag. | |||||
| @a time Event timestamp (if any). | |||||
| */ | |||||
| struct BaseEvent { | |||||
| uint mod; | |||||
| uint flags; | |||||
| uint time; | |||||
| /** Constuctor */ | |||||
| BaseEvent() noexcept : mod(0x0), flags(0x0), time(0) {} | |||||
| /** Destuctor */ | |||||
| virtual ~BaseEvent() noexcept {} | |||||
| }; | |||||
| /** | |||||
| Keyboard event. | |||||
| This event represents low-level key presses and releases. | |||||
| This can be used for "direct" keyboard handing like key bindings, but must not be interpreted as text input. | |||||
| Keys are represented portably as Unicode code points, using the "natural" code point for the key. | |||||
| The @a key field is the code for the pressed key, without any modifiers applied. | |||||
| For example, a press or release of the 'A' key will have `key` 97 ('a') | |||||
| regardless of whether shift or control are being held. | |||||
| Alternatively, the raw @a keycode can be used to work directly with physical keys, | |||||
| but note that this value is not portable and differs between platforms and hardware. | |||||
| @a press True if the key was pressed, false if released. | |||||
| @a key Unicode point of the key pressed. | |||||
| @a keycode Raw keycode. | |||||
| @see onKeyboard | |||||
| */ | |||||
| struct KeyboardEvent : BaseEvent { | |||||
| bool press; | |||||
| uint key; | |||||
| uint keycode; | |||||
| /** Constuctor */ | |||||
| KeyboardEvent() noexcept | |||||
| : BaseEvent(), | |||||
| press(false), | |||||
| key(0), | |||||
| keycode(0) {} | |||||
| }; | |||||
| /** | |||||
| Special keyboard event. | |||||
| This event allows the use of keys that do not have unicode points. | |||||
| Note that some are non-printable keys. | |||||
| @a press True if the key was pressed, false if released. | |||||
| @a key The key pressed. | |||||
| @see onSpecial | |||||
| */ | |||||
| struct SpecialEvent : BaseEvent { | |||||
| bool press; | |||||
| Key key; | |||||
| /** Constuctor */ | |||||
| SpecialEvent() noexcept | |||||
| : BaseEvent(), | |||||
| press(false), | |||||
| key(Key(0)) {} | |||||
| }; | |||||
| /** | |||||
| Character input event. | |||||
| This event represents text input, usually as the result of a key press. | |||||
| The text is given both as a Unicode character code and a UTF-8 string. | |||||
| Note that this event is generated by the platform's input system, | |||||
| so there is not necessarily a direct correspondence between text events and physical key presses. | |||||
| For example, with some input methods a sequence of several key presses will generate a single character. | |||||
| @a keycode Raw key code. | |||||
| @a character Unicode character code. | |||||
| @a string UTF-8 string. | |||||
| @see onCharacterInput | |||||
| */ | |||||
| struct CharacterInputEvent : BaseEvent { | |||||
| uint keycode; | |||||
| uint character; | |||||
| char string[8]; | |||||
| /** Constuctor */ | |||||
| CharacterInputEvent() noexcept | |||||
| : BaseEvent(), | |||||
| keycode(0), | |||||
| character(0), | |||||
| string{'\0','\0','\0','\0','\0','\0','\0','\0'} {} | |||||
| }; | |||||
| /** | |||||
| Mouse press or release event. | |||||
| @a button The button number starting from 1 (1 = left, 2 = middle, 3 = right). | |||||
| @a press True if the button was pressed, false if released. | |||||
| @a pos The widget-relative coordinates of the pointer. | |||||
| @see onMouse | |||||
| */ | |||||
| struct MouseEvent : BaseEvent { | |||||
| uint button; | |||||
| bool press; | |||||
| Point<double> pos; | |||||
| /** Constuctor */ | |||||
| MouseEvent() noexcept | |||||
| : BaseEvent(), | |||||
| button(0), | |||||
| press(false), | |||||
| pos(0.0, 0.0) {} | |||||
| }; | |||||
| /** | |||||
| Mouse motion event. | |||||
| @a pos The widget-relative coordinates of the pointer. | |||||
| @see onMotion | |||||
| */ | |||||
| struct MotionEvent : BaseEvent { | |||||
| Point<double> pos; | |||||
| /** Constuctor */ | |||||
| MotionEvent() noexcept | |||||
| : BaseEvent(), | |||||
| pos(0.0, 0.0) {} | |||||
| }; | |||||
| /** | |||||
| Mouse scroll event. | |||||
| The scroll distance is expressed in "lines", | |||||
| an arbitrary unit that corresponds to a single tick of a detented mouse wheel. | |||||
| For example, `delta.y` = 1.0 scrolls 1 line up. | |||||
| Some systems and devices support finer resolution and/or higher values for fast scrolls, | |||||
| so programs should handle any value gracefully. | |||||
| @a pos The widget-relative coordinates of the pointer. | |||||
| @a delta The scroll distance. | |||||
| @a direction The direction of the scroll or "smooth". | |||||
| @see onScroll | |||||
| */ | |||||
| struct ScrollEvent : BaseEvent { | |||||
| Point<double> pos; | |||||
| Point<double> delta; | |||||
| ScrollDirection direction; | |||||
| /** Constuctor */ | |||||
| ScrollEvent() noexcept | |||||
| : BaseEvent(), | |||||
| pos(0.0, 0.0), | |||||
| delta(0.0, 0.0), | |||||
| direction(kScrollSmooth) {} | |||||
| }; | |||||
| /** | |||||
| Resize event. | |||||
| @a size The new widget size. | |||||
| @a oldSize The previous size, may be null. | |||||
| @see onResize | |||||
| */ | |||||
| struct ResizeEvent { | |||||
| Size<uint> size; | |||||
| Size<uint> oldSize; | |||||
| /** Constuctor */ | |||||
| ResizeEvent() noexcept | |||||
| : size(0, 0), | |||||
| oldSize(0, 0) {} | |||||
| }; | |||||
| /** | |||||
| Widget position changed event. | |||||
| @a pos The new absolute position of the widget. | |||||
| @a oldPos The previous absolute position of the widget. | |||||
| @see onPositionChanged | |||||
| */ | |||||
| struct PositionChangedEvent { | |||||
| Point<int> pos; | |||||
| Point<int> oldPos; | |||||
| /** Constuctor */ | |||||
| PositionChangedEvent() noexcept | |||||
| : pos(0, 0), | |||||
| oldPos(0, 0) {} | |||||
| }; | |||||
| private: | |||||
| /** | /** | ||||
| Private constructor, reserved for TopLevelWidget class. | Private constructor, reserved for TopLevelWidget class. | ||||
| */ | */ | ||||
| @@ -42,7 +42,7 @@ struct ButtonImpl { | |||||
| self(s), | self(s), | ||||
| callback_img(nullptr) {} | callback_img(nullptr) {} | ||||
| bool onMouse(const Events::MouseEvent& ev) | |||||
| bool onMouse(const Widget::MouseEvent& ev) | |||||
| { | { | ||||
| // button was released, handle it now | // button was released, handle it now | ||||
| if (button != -1 && ! ev.press) | if (button != -1 && ! ev.press) | ||||
| @@ -83,7 +83,7 @@ struct ButtonImpl { | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool onMotion(const Events::MotionEvent& ev) | |||||
| bool onMotion(const Widget::MotionEvent& ev) | |||||
| { | { | ||||
| // keep pressed | // keep pressed | ||||
| if (button != -1) | if (button != -1) | ||||
| @@ -37,7 +37,7 @@ TopLevelWidget::PrivateData::~PrivateData() | |||||
| window.pData->topLevelWidget = nullptr; | window.pData->topLevelWidget = nullptr; | ||||
| } | } | ||||
| bool TopLevelWidget::PrivateData::keyboardEvent(const Events::KeyboardEvent& ev) | |||||
| bool TopLevelWidget::PrivateData::keyboardEvent(const KeyboardEvent& ev) | |||||
| { | { | ||||
| // give top-level widget chance to catch this event first | // give top-level widget chance to catch this event first | ||||
| if (self->onKeyboard(ev)) | if (self->onKeyboard(ev)) | ||||
| @@ -47,7 +47,7 @@ bool TopLevelWidget::PrivateData::keyboardEvent(const Events::KeyboardEvent& ev) | |||||
| return selfw->pData->giveKeyboardEventForSubWidgets(ev); | return selfw->pData->giveKeyboardEventForSubWidgets(ev); | ||||
| } | } | ||||
| bool TopLevelWidget::PrivateData::specialEvent(const Events::SpecialEvent& ev) | |||||
| bool TopLevelWidget::PrivateData::specialEvent(const SpecialEvent& ev) | |||||
| { | { | ||||
| // give top-level widget chance to catch this event first | // give top-level widget chance to catch this event first | ||||
| if (self->onSpecial(ev)) | if (self->onSpecial(ev)) | ||||
| @@ -57,7 +57,7 @@ bool TopLevelWidget::PrivateData::specialEvent(const Events::SpecialEvent& ev) | |||||
| return selfw->pData->giveSpecialEventForSubWidgets(ev); | return selfw->pData->giveSpecialEventForSubWidgets(ev); | ||||
| } | } | ||||
| bool TopLevelWidget::PrivateData::characterInputEvent(const Events::CharacterInputEvent& ev) | |||||
| bool TopLevelWidget::PrivateData::characterInputEvent(const CharacterInputEvent& ev) | |||||
| { | { | ||||
| // give top-level widget chance to catch this event first | // give top-level widget chance to catch this event first | ||||
| if (self->onCharacterInput(ev)) | if (self->onCharacterInput(ev)) | ||||
| @@ -67,9 +67,9 @@ bool TopLevelWidget::PrivateData::characterInputEvent(const Events::CharacterInp | |||||
| return selfw->pData->giveCharacterInputEventForSubWidgets(ev); | return selfw->pData->giveCharacterInputEventForSubWidgets(ev); | ||||
| } | } | ||||
| bool TopLevelWidget::PrivateData::mouseEvent(const Events::MouseEvent& ev) | |||||
| bool TopLevelWidget::PrivateData::mouseEvent(const MouseEvent& ev) | |||||
| { | { | ||||
| Events::MouseEvent rev = ev; | |||||
| MouseEvent rev = ev; | |||||
| if (window.pData->autoScaling) | if (window.pData->autoScaling) | ||||
| { | { | ||||
| @@ -87,9 +87,9 @@ bool TopLevelWidget::PrivateData::mouseEvent(const Events::MouseEvent& ev) | |||||
| return selfw->pData->giveMouseEventForSubWidgets(rev); | return selfw->pData->giveMouseEventForSubWidgets(rev); | ||||
| } | } | ||||
| bool TopLevelWidget::PrivateData::motionEvent(const Events::MotionEvent& ev) | |||||
| bool TopLevelWidget::PrivateData::motionEvent(const MotionEvent& ev) | |||||
| { | { | ||||
| Events::MotionEvent rev = ev; | |||||
| MotionEvent rev = ev; | |||||
| if (window.pData->autoScaling) | if (window.pData->autoScaling) | ||||
| { | { | ||||
| @@ -107,9 +107,9 @@ bool TopLevelWidget::PrivateData::motionEvent(const Events::MotionEvent& ev) | |||||
| return selfw->pData->giveMotionEventForSubWidgets(rev); | return selfw->pData->giveMotionEventForSubWidgets(rev); | ||||
| } | } | ||||
| bool TopLevelWidget::PrivateData::scrollEvent(const Events::ScrollEvent& ev) | |||||
| bool TopLevelWidget::PrivateData::scrollEvent(const ScrollEvent& ev) | |||||
| { | { | ||||
| Events::ScrollEvent rev = ev; | |||||
| ScrollEvent rev = ev; | |||||
| if (window.pData->autoScaling) | if (window.pData->autoScaling) | ||||
| { | { | ||||
| @@ -33,12 +33,12 @@ struct TopLevelWidget::PrivateData { | |||||
| explicit PrivateData(TopLevelWidget* const s, Window& w); | explicit PrivateData(TopLevelWidget* const s, Window& w); | ||||
| ~PrivateData(); | ~PrivateData(); | ||||
| void display(); | void display(); | ||||
| bool keyboardEvent(const Events::KeyboardEvent& ev); | |||||
| bool specialEvent(const Events::SpecialEvent& ev); | |||||
| bool characterInputEvent(const Events::CharacterInputEvent& ev); | |||||
| bool mouseEvent(const Events::MouseEvent& ev); | |||||
| bool motionEvent(const Events::MotionEvent& ev); | |||||
| bool scrollEvent(const Events::ScrollEvent& ev); | |||||
| bool keyboardEvent(const KeyboardEvent& ev); | |||||
| bool specialEvent(const SpecialEvent& ev); | |||||
| bool characterInputEvent(const CharacterInputEvent& ev); | |||||
| bool mouseEvent(const MouseEvent& ev); | |||||
| bool motionEvent(const MotionEvent& ev); | |||||
| bool scrollEvent(const ScrollEvent& ev); | |||||
| void fallbackOnResize(); | void fallbackOnResize(); | ||||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) | DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) | ||||
| @@ -69,7 +69,7 @@ void Widget::PrivateData::displaySubWidgets(const uint width, const uint height, | |||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| bool Widget::PrivateData::giveKeyboardEventForSubWidgets(const Events::KeyboardEvent& ev) | |||||
| bool Widget::PrivateData::giveKeyboardEventForSubWidgets(const KeyboardEvent& ev) | |||||
| { | { | ||||
| if (! visible) | if (! visible) | ||||
| return false; | return false; | ||||
| @@ -87,7 +87,7 @@ bool Widget::PrivateData::giveKeyboardEventForSubWidgets(const Events::KeyboardE | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool Widget::PrivateData::giveSpecialEventForSubWidgets(const Events::SpecialEvent& ev) | |||||
| bool Widget::PrivateData::giveSpecialEventForSubWidgets(const SpecialEvent& ev) | |||||
| { | { | ||||
| if (! visible) | if (! visible) | ||||
| return false; | return false; | ||||
| @@ -105,7 +105,7 @@ bool Widget::PrivateData::giveSpecialEventForSubWidgets(const Events::SpecialEve | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const Events::CharacterInputEvent& ev) | |||||
| bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const CharacterInputEvent& ev) | |||||
| { | { | ||||
| if (! visible) | if (! visible) | ||||
| return false; | return false; | ||||
| @@ -123,7 +123,7 @@ bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const Events::Cha | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool Widget::PrivateData::giveMouseEventForSubWidgets(Events::MouseEvent& ev) | |||||
| bool Widget::PrivateData::giveMouseEventForSubWidgets(MouseEvent& ev) | |||||
| { | { | ||||
| if (! visible) | if (! visible) | ||||
| return false; | return false; | ||||
| @@ -150,7 +150,7 @@ bool Widget::PrivateData::giveMouseEventForSubWidgets(Events::MouseEvent& ev) | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool Widget::PrivateData::giveMotionEventForSubWidgets(Events::MotionEvent& ev) | |||||
| bool Widget::PrivateData::giveMotionEventForSubWidgets(MotionEvent& ev) | |||||
| { | { | ||||
| if (! visible) | if (! visible) | ||||
| return false; | return false; | ||||
| @@ -177,7 +177,7 @@ bool Widget::PrivateData::giveMotionEventForSubWidgets(Events::MotionEvent& ev) | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool Widget::PrivateData::giveScrollEventForSubWidgets(Events::ScrollEvent& ev) | |||||
| bool Widget::PrivateData::giveScrollEventForSubWidgets(ScrollEvent& ev) | |||||
| { | { | ||||
| if (! visible) | if (! visible) | ||||
| return false; | return false; | ||||
| @@ -43,12 +43,12 @@ struct Widget::PrivateData { | |||||
| void displaySubWidgets(uint width, uint height, double autoScaleFactor); | void displaySubWidgets(uint width, uint height, double autoScaleFactor); | ||||
| bool giveKeyboardEventForSubWidgets(const Events::KeyboardEvent& ev); | |||||
| bool giveSpecialEventForSubWidgets(const Events::SpecialEvent& ev); | |||||
| bool giveCharacterInputEventForSubWidgets(const Events::CharacterInputEvent& ev); | |||||
| bool giveMouseEventForSubWidgets(Events::MouseEvent& ev); | |||||
| bool giveMotionEventForSubWidgets(Events::MotionEvent& ev); | |||||
| bool giveScrollEventForSubWidgets(Events::ScrollEvent& ev); | |||||
| bool giveKeyboardEventForSubWidgets(const KeyboardEvent& ev); | |||||
| bool giveSpecialEventForSubWidgets(const SpecialEvent& ev); | |||||
| bool giveCharacterInputEventForSubWidgets(const CharacterInputEvent& ev); | |||||
| bool giveMouseEventForSubWidgets(MouseEvent& ev); | |||||
| bool giveMotionEventForSubWidgets(MotionEvent& ev); | |||||
| bool giveScrollEventForSubWidgets(ScrollEvent& ev); | |||||
| static TopLevelWidget* findTopLevelWidget(Widget* const w); | static TopLevelWidget* findTopLevelWidget(Widget* const w); | ||||
| @@ -533,7 +533,7 @@ void Window::PrivateData::onPuglFocus(const bool focus, const CrossingMode mode) | |||||
| self->onFocus(focus, mode); | self->onFocus(focus, mode); | ||||
| } | } | ||||
| void Window::PrivateData::onPuglKey(const Events::KeyboardEvent& ev) | |||||
| void Window::PrivateData::onPuglKey(const Widget::KeyboardEvent& ev) | |||||
| { | { | ||||
| DGL_DBGp("onPuglKey : %i %u %u\n", ev.press, ev.key, ev.keycode); | DGL_DBGp("onPuglKey : %i %u %u\n", ev.press, ev.key, ev.keycode); | ||||
| @@ -546,7 +546,7 @@ void Window::PrivateData::onPuglKey(const Events::KeyboardEvent& ev) | |||||
| #endif | #endif | ||||
| } | } | ||||
| void Window::PrivateData::onPuglSpecial(const Events::SpecialEvent& ev) | |||||
| void Window::PrivateData::onPuglSpecial(const Widget::SpecialEvent& ev) | |||||
| { | { | ||||
| DGL_DBGp("onPuglSpecial : %i %u\n", ev.press, ev.key); | DGL_DBGp("onPuglSpecial : %i %u\n", ev.press, ev.key); | ||||
| @@ -559,7 +559,7 @@ void Window::PrivateData::onPuglSpecial(const Events::SpecialEvent& ev) | |||||
| #endif | #endif | ||||
| } | } | ||||
| void Window::PrivateData::onPuglText(const Events::CharacterInputEvent& ev) | |||||
| void Window::PrivateData::onPuglText(const Widget::CharacterInputEvent& ev) | |||||
| { | { | ||||
| DGL_DBGp("onPuglText : %u %u %s\n", ev.keycode, ev.character, ev.string); | DGL_DBGp("onPuglText : %u %u %s\n", ev.keycode, ev.character, ev.string); | ||||
| @@ -572,7 +572,7 @@ void Window::PrivateData::onPuglText(const Events::CharacterInputEvent& ev) | |||||
| #endif | #endif | ||||
| } | } | ||||
| void Window::PrivateData::onPuglMouse(const Events::MouseEvent& ev) | |||||
| void Window::PrivateData::onPuglMouse(const Widget::MouseEvent& ev) | |||||
| { | { | ||||
| DGL_DBGp("onPuglMouse : %i %i %f %f\n", ev.button, ev.press, ev.pos.getX(), ev.pos.getY()); | DGL_DBGp("onPuglMouse : %i %i %f %f\n", ev.button, ev.press, ev.pos.getX(), ev.pos.getY()); | ||||
| @@ -585,7 +585,7 @@ void Window::PrivateData::onPuglMouse(const Events::MouseEvent& ev) | |||||
| #endif | #endif | ||||
| } | } | ||||
| void Window::PrivateData::onPuglMotion(const Events::MotionEvent& ev) | |||||
| void Window::PrivateData::onPuglMotion(const Widget::MotionEvent& ev) | |||||
| { | { | ||||
| DGL_DBGp("onPuglMotion : %f %f\n", ev.pos.getX(), ev.pos.getY()); | DGL_DBGp("onPuglMotion : %f %f\n", ev.pos.getX(), ev.pos.getY()); | ||||
| @@ -598,7 +598,7 @@ void Window::PrivateData::onPuglMotion(const Events::MotionEvent& ev) | |||||
| #endif | #endif | ||||
| } | } | ||||
| void Window::PrivateData::onPuglScroll(const Events::ScrollEvent& ev) | |||||
| void Window::PrivateData::onPuglScroll(const Widget::ScrollEvent& ev) | |||||
| { | { | ||||
| DGL_DBGp("onPuglScroll : %f %f %f %f\n", ev.pos.getX(), ev.pos.getY(), ev.delta.getX(), ev.delta.getY()); | DGL_DBGp("onPuglScroll : %f %f %f %f\n", ev.pos.getX(), ev.pos.getY(), ev.delta.getX(), ev.delta.getY()); | ||||
| @@ -684,7 +684,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu | |||||
| { | { | ||||
| // unused x, y, xRoot, yRoot (double) | // unused x, y, xRoot, yRoot (double) | ||||
| // TODO special keys? | // TODO special keys? | ||||
| Events::KeyboardEvent ev; | |||||
| Widget::KeyboardEvent ev; | |||||
| ev.mod = event->key.state; | ev.mod = event->key.state; | ||||
| ev.flags = event->key.flags; | ev.flags = event->key.flags; | ||||
| ev.time = static_cast<uint>(event->key.time * 1000.0 + 0.5); | ev.time = static_cast<uint>(event->key.time * 1000.0 + 0.5); | ||||
| @@ -701,7 +701,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu | |||||
| case PUGL_TEXT: | case PUGL_TEXT: | ||||
| { | { | ||||
| // unused x, y, xRoot, yRoot (double) | // unused x, y, xRoot, yRoot (double) | ||||
| Events::CharacterInputEvent ev; | |||||
| Widget::CharacterInputEvent ev; | |||||
| ev.mod = event->text.state; | ev.mod = event->text.state; | ||||
| ev.flags = event->text.flags; | ev.flags = event->text.flags; | ||||
| ev.time = static_cast<uint>(event->text.time * 1000.0 + 0.5); | ev.time = static_cast<uint>(event->text.time * 1000.0 + 0.5); | ||||
| @@ -724,7 +724,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu | |||||
| ///< Mouse button released, a #PuglEventButton | ///< Mouse button released, a #PuglEventButton | ||||
| case PUGL_BUTTON_RELEASE: | case PUGL_BUTTON_RELEASE: | ||||
| { | { | ||||
| Events::MouseEvent ev; | |||||
| Widget::MouseEvent ev; | |||||
| ev.mod = event->button.state; | ev.mod = event->button.state; | ||||
| ev.flags = event->button.flags; | ev.flags = event->button.flags; | ||||
| ev.time = static_cast<uint>(event->button.time * 1000.0 + 0.5); | ev.time = static_cast<uint>(event->button.time * 1000.0 + 0.5); | ||||
| @@ -738,7 +738,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu | |||||
| ///< Pointer moved, a #PuglEventMotion | ///< Pointer moved, a #PuglEventMotion | ||||
| case PUGL_MOTION: | case PUGL_MOTION: | ||||
| { | { | ||||
| Events::MotionEvent ev; | |||||
| Widget::MotionEvent ev; | |||||
| ev.mod = event->motion.state; | ev.mod = event->motion.state; | ||||
| ev.flags = event->motion.flags; | ev.flags = event->motion.flags; | ||||
| ev.time = static_cast<uint>(event->motion.time * 1000.0 + 0.5); | ev.time = static_cast<uint>(event->motion.time * 1000.0 + 0.5); | ||||
| @@ -750,7 +750,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu | |||||
| ///< Scrolled, a #PuglEventScroll | ///< Scrolled, a #PuglEventScroll | ||||
| case PUGL_SCROLL: | case PUGL_SCROLL: | ||||
| { | { | ||||
| Events::ScrollEvent ev; | |||||
| Widget::ScrollEvent ev; | |||||
| ev.mod = event->scroll.state; | ev.mod = event->scroll.state; | ||||
| ev.flags = event->scroll.flags; | ev.flags = event->scroll.flags; | ||||
| ev.time = static_cast<uint>(event->scroll.time * 1000.0 + 0.5); | ev.time = static_cast<uint>(event->scroll.time * 1000.0 + 0.5); | ||||
| @@ -18,7 +18,7 @@ | |||||
| #define DGL_WINDOW_PRIVATE_DATA_HPP_INCLUDED | #define DGL_WINDOW_PRIVATE_DATA_HPP_INCLUDED | ||||
| #include "../Window.hpp" | #include "../Window.hpp" | ||||
| #include "../Events.hpp" | |||||
| #include "../Widget.hpp" | |||||
| #include "ApplicationPrivateData.hpp" | #include "ApplicationPrivateData.hpp" | ||||
| #include "pugl.hpp" | #include "pugl.hpp" | ||||
| @@ -149,12 +149,12 @@ struct Window::PrivateData : IdleCallback { | |||||
| void onPuglExpose(); | void onPuglExpose(); | ||||
| void onPuglClose(); | void onPuglClose(); | ||||
| void onPuglFocus(bool focus, CrossingMode mode); | void onPuglFocus(bool focus, CrossingMode mode); | ||||
| void onPuglKey(const Events::KeyboardEvent& ev); | |||||
| void onPuglSpecial(const Events::SpecialEvent& ev); | |||||
| void onPuglText(const Events::CharacterInputEvent& ev); | |||||
| void onPuglMouse(const Events::MouseEvent& ev); | |||||
| void onPuglMotion(const Events::MotionEvent& ev); | |||||
| void onPuglScroll(const Events::ScrollEvent& ev); | |||||
| void onPuglKey(const Widget::KeyboardEvent& ev); | |||||
| void onPuglSpecial(const Widget::SpecialEvent& ev); | |||||
| void onPuglText(const Widget::CharacterInputEvent& ev); | |||||
| void onPuglMouse(const Widget::MouseEvent& ev); | |||||
| void onPuglMotion(const Widget::MotionEvent& ev); | |||||
| void onPuglScroll(const Widget::ScrollEvent& ev); | |||||
| // Pugl event handling entry point | // Pugl event handling entry point | ||||
| static PuglStatus puglEventCallback(PuglView* view, const PuglEvent* event); | static PuglStatus puglEventCallback(PuglView* view, const PuglEvent* event); | ||||