]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/window.cpp
Discard the EventSource abstraction
[libs/gui.git] / source / graphics / window.cpp
index 199f5269498b8b7445153de8f5cae249de84f6c9..a1353acf8fe4000f6b5a35cce9624cd6b2d43399 100644 (file)
@@ -9,6 +9,7 @@
 #include <windowsx.h>
 #endif
 #include <msp/core/application.h>
+#include <msp/core/systemerror.h>
 #include "display.h"
 #include "window.h"
 #include "display_priv.h"
@@ -368,47 +369,23 @@ void Window::hide()
 bool Window::event(const Event &evnt)
 {
 #ifdef WIN32
-       WPARAM wp = evnt.wparam;
-       LPARAM lp = evnt.lparam;
        switch(evnt.msg)
        {
        case WM_KEYDOWN:
-               signal_key_press.emit(wp, 0, wp);
-               break;
        case WM_KEYUP:
-               signal_key_release.emit(wp, 0);
-               break;
        case WM_LBUTTONDOWN:
-               signal_button_press.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), 1, 0);
-               break;
        case WM_LBUTTONUP:
-               signal_button_release.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), 1, 0);
-               break;
        case WM_MBUTTONDOWN:
-               signal_button_press.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), 2, 0);
-               break;
        case WM_MBUTTONUP:
-               signal_button_release.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), 2, 0);
-               break;
        case WM_RBUTTONDOWN:
-               signal_button_press.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), 3, 0);
-               break;
        case WM_RBUTTONUP:
-               signal_button_release.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), 3, 0);
-               break;
        case WM_MOUSEWHEEL:
-               {
-                       unsigned btn = (HIWORD(wp)&0x8000) ? 5 : 4;
-                       signal_button_press.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), btn, 0);
-                       signal_button_release.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp), btn, 0);
-               }
-               break;
        case WM_MOUSEMOVE:
-               signal_pointer_motion.emit(GET_X_LPARAM(lp), GET_Y_LPARAM(lp));
+               signal_input_event.emit(evnt);
                break;
        case WM_SIZE:
-               options.width = LOWORD(lp);
-               options.height = HIWORD(lp);
+               options.width = LOWORD(evnt.lparam);
+               options.height = HIWORD(evnt.lparam);
                signal_resize.emit(options.width, options.height);
                break;
        case WM_CLOSE:
@@ -422,24 +399,11 @@ bool Window::event(const Event &evnt)
        switch(ev.type)
        {
        case ButtonPress:
-               signal_button_press.emit(ev.xbutton.x, ev.xbutton.y, ev.xbutton.button, ev.xbutton.state);
-               break;
        case ButtonRelease:
-               signal_button_release.emit(ev.xbutton.x, ev.xbutton.y, ev.xbutton.button, ev.xbutton.state);
-               break;
        case MotionNotify:
-               signal_pointer_motion.emit(ev.xmotion.x, ev.xmotion.y);
-               break;
        case KeyPress:
-               {
-                       char buf[16];
-                       XLookupString(const_cast<XKeyEvent *>(&ev.xkey), buf, sizeof(buf), 0, 0);
-                       // XXX Handle the result according to locale
-                       signal_key_press.emit(XKeycodeToKeysym(display.get_private().display, ev.xkey.keycode, 0), ev.xkey.state, buf[0]);
-               }
-               break;
        case KeyRelease:
-               signal_key_release.emit(XKeycodeToKeysym(display.get_private().display, ev.xkey.keycode, 0), ev.xkey.state);
+               signal_input_event.emit(evnt);
                break;
        case ConfigureNotify:
                if((ev.xconfigure.width==static_cast<int>(options.width) && ev.xconfigure.height==static_cast<int>(options.height)) == resizing)