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 | |||
| #define DGL_WIDGET_HPP_INCLUDED | |||
| #include "Events.hpp" | |||
| #include "Geometry.hpp" | |||
| START_NAMESPACE_DGL | |||
| @@ -29,8 +29,6 @@ class SubWidget; | |||
| class TopLevelWidget; | |||
| class Window; | |||
| using namespace Events; | |||
| // -------------------------------------------------------------------------------------------------------------------- | |||
| /** | |||
| @@ -54,6 +52,203 @@ using namespace Events; | |||
| */ | |||
| 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. | |||
| */ | |||
| @@ -42,7 +42,7 @@ struct ButtonImpl { | |||
| self(s), | |||
| callback_img(nullptr) {} | |||
| bool onMouse(const Events::MouseEvent& ev) | |||
| bool onMouse(const Widget::MouseEvent& ev) | |||
| { | |||
| // button was released, handle it now | |||
| if (button != -1 && ! ev.press) | |||
| @@ -83,7 +83,7 @@ struct ButtonImpl { | |||
| return false; | |||
| } | |||
| bool onMotion(const Events::MotionEvent& ev) | |||
| bool onMotion(const Widget::MotionEvent& ev) | |||
| { | |||
| // keep pressed | |||
| if (button != -1) | |||
| @@ -37,7 +37,7 @@ TopLevelWidget::PrivateData::~PrivateData() | |||
| 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 | |||
| if (self->onKeyboard(ev)) | |||
| @@ -47,7 +47,7 @@ bool TopLevelWidget::PrivateData::keyboardEvent(const Events::KeyboardEvent& 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 | |||
| if (self->onSpecial(ev)) | |||
| @@ -57,7 +57,7 @@ bool TopLevelWidget::PrivateData::specialEvent(const Events::SpecialEvent& 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 | |||
| if (self->onCharacterInput(ev)) | |||
| @@ -67,9 +67,9 @@ bool TopLevelWidget::PrivateData::characterInputEvent(const Events::CharacterInp | |||
| 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) | |||
| { | |||
| @@ -87,9 +87,9 @@ bool TopLevelWidget::PrivateData::mouseEvent(const Events::MouseEvent& ev) | |||
| 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) | |||
| { | |||
| @@ -107,9 +107,9 @@ bool TopLevelWidget::PrivateData::motionEvent(const Events::MotionEvent& ev) | |||
| 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) | |||
| { | |||
| @@ -33,12 +33,12 @@ struct TopLevelWidget::PrivateData { | |||
| explicit PrivateData(TopLevelWidget* const s, Window& w); | |||
| ~PrivateData(); | |||
| 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(); | |||
| 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) | |||
| return false; | |||
| @@ -87,7 +87,7 @@ bool Widget::PrivateData::giveKeyboardEventForSubWidgets(const Events::KeyboardE | |||
| return false; | |||
| } | |||
| bool Widget::PrivateData::giveSpecialEventForSubWidgets(const Events::SpecialEvent& ev) | |||
| bool Widget::PrivateData::giveSpecialEventForSubWidgets(const SpecialEvent& ev) | |||
| { | |||
| if (! visible) | |||
| return false; | |||
| @@ -105,7 +105,7 @@ bool Widget::PrivateData::giveSpecialEventForSubWidgets(const Events::SpecialEve | |||
| return false; | |||
| } | |||
| bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const Events::CharacterInputEvent& ev) | |||
| bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const CharacterInputEvent& ev) | |||
| { | |||
| if (! visible) | |||
| return false; | |||
| @@ -123,7 +123,7 @@ bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const Events::Cha | |||
| return false; | |||
| } | |||
| bool Widget::PrivateData::giveMouseEventForSubWidgets(Events::MouseEvent& ev) | |||
| bool Widget::PrivateData::giveMouseEventForSubWidgets(MouseEvent& ev) | |||
| { | |||
| if (! visible) | |||
| return false; | |||
| @@ -150,7 +150,7 @@ bool Widget::PrivateData::giveMouseEventForSubWidgets(Events::MouseEvent& ev) | |||
| return false; | |||
| } | |||
| bool Widget::PrivateData::giveMotionEventForSubWidgets(Events::MotionEvent& ev) | |||
| bool Widget::PrivateData::giveMotionEventForSubWidgets(MotionEvent& ev) | |||
| { | |||
| if (! visible) | |||
| return false; | |||
| @@ -177,7 +177,7 @@ bool Widget::PrivateData::giveMotionEventForSubWidgets(Events::MotionEvent& ev) | |||
| return false; | |||
| } | |||
| bool Widget::PrivateData::giveScrollEventForSubWidgets(Events::ScrollEvent& ev) | |||
| bool Widget::PrivateData::giveScrollEventForSubWidgets(ScrollEvent& ev) | |||
| { | |||
| if (! visible) | |||
| return false; | |||
| @@ -43,12 +43,12 @@ struct Widget::PrivateData { | |||
| 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); | |||
| @@ -533,7 +533,7 @@ void Window::PrivateData::onPuglFocus(const bool focus, const CrossingMode 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); | |||
| @@ -546,7 +546,7 @@ void Window::PrivateData::onPuglKey(const Events::KeyboardEvent& ev) | |||
| #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); | |||
| @@ -559,7 +559,7 @@ void Window::PrivateData::onPuglSpecial(const Events::SpecialEvent& ev) | |||
| #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); | |||
| @@ -572,7 +572,7 @@ void Window::PrivateData::onPuglText(const Events::CharacterInputEvent& ev) | |||
| #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()); | |||
| @@ -585,7 +585,7 @@ void Window::PrivateData::onPuglMouse(const Events::MouseEvent& ev) | |||
| #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()); | |||
| @@ -598,7 +598,7 @@ void Window::PrivateData::onPuglMotion(const Events::MotionEvent& ev) | |||
| #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()); | |||
| @@ -684,7 +684,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu | |||
| { | |||
| // unused x, y, xRoot, yRoot (double) | |||
| // TODO special keys? | |||
| Events::KeyboardEvent ev; | |||
| Widget::KeyboardEvent ev; | |||
| ev.mod = event->key.state; | |||
| ev.flags = event->key.flags; | |||
| 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: | |||
| { | |||
| // unused x, y, xRoot, yRoot (double) | |||
| Events::CharacterInputEvent ev; | |||
| Widget::CharacterInputEvent ev; | |||
| ev.mod = event->text.state; | |||
| ev.flags = event->text.flags; | |||
| 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 | |||
| case PUGL_BUTTON_RELEASE: | |||
| { | |||
| Events::MouseEvent ev; | |||
| Widget::MouseEvent ev; | |||
| ev.mod = event->button.state; | |||
| ev.flags = event->button.flags; | |||
| 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 | |||
| case PUGL_MOTION: | |||
| { | |||
| Events::MotionEvent ev; | |||
| Widget::MotionEvent ev; | |||
| ev.mod = event->motion.state; | |||
| ev.flags = event->motion.flags; | |||
| 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 | |||
| case PUGL_SCROLL: | |||
| { | |||
| Events::ScrollEvent ev; | |||
| Widget::ScrollEvent ev; | |||
| ev.mod = event->scroll.state; | |||
| ev.flags = event->scroll.flags; | |||
| ev.time = static_cast<uint>(event->scroll.time * 1000.0 + 0.5); | |||
| @@ -18,7 +18,7 @@ | |||
| #define DGL_WINDOW_PRIVATE_DATA_HPP_INCLUDED | |||
| #include "../Window.hpp" | |||
| #include "../Events.hpp" | |||
| #include "../Widget.hpp" | |||
| #include "ApplicationPrivateData.hpp" | |||
| #include "pugl.hpp" | |||
| @@ -149,12 +149,12 @@ struct Window::PrivateData : IdleCallback { | |||
| void onPuglExpose(); | |||
| void onPuglClose(); | |||
| 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 | |||
| static PuglStatus puglEventCallback(PuglView* view, const PuglEvent* event); | |||