From e27693074998571ca5613e27a0d4bf00e2d78a79 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 1 Jul 2017 21:21:56 +0200 Subject: do not call methods directly on desktop object, the desktop object could be derived, so go over the vtable (keyboard and mouse handlers in kernel.c) --- src/kernel/kernel.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index 81266b1..b97c3ea 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -194,7 +194,7 @@ static void handle_keyboard_event( keyboard_event_t *event, void *context ) driver_manager_t *driver_manager = &global_context->driver_manager; vga_t *vga = &global_context->vga; mouse_t *mouse = &global_context->mouse; - //~ desktop_t *desktop = &global_context->desktop; + desktop_t *desktop = &global_context->desktop; switch( global_context->mode ) { @@ -296,7 +296,7 @@ static void handle_keyboard_event( keyboard_event_t *event, void *context ) case MODE_GRAPHICS: if( event->type == KEYBOARD_EVENT_TYPE_KEY_PRESSED ) { if( event->key == KEYBOARD_KEY_ASCII ) { - ((widget_vtable_t *)global_context->desktop.base.base.vtable)->on_key_down( &global_context->desktop, event->ascii_key ); + ((widget_t *)desktop)->vtable->on_key_down( &global_context->desktop, event->ascii_key ); } } break; @@ -340,18 +340,18 @@ static void handle_mouse_event( mouse_event_t *event, void *context ) switch( event->type ) { case MOUSE_EVENT_TYPE_BUTTON_UP: if( event->button == MOUSE_BUTTON_LEFT ) { - desktop_on_mouse_up( desktop, event->cursor_x, event->cursor_y ); + ((widget_t *)desktop)->vtable->on_mouse_up( desktop, event->cursor_x, event->cursor_y ); } break; case MOUSE_EVENT_TYPE_BUTTON_DOWN: if( event->button == MOUSE_BUTTON_LEFT ) { - desktop_on_mouse_down( desktop, event->cursor_x, event->cursor_y ); + ((widget_t *)desktop)->vtable->on_mouse_down( desktop, event->cursor_x, event->cursor_y ); } break; case MOUSE_EVENT_TYPE_MOVE: - desktop_on_mouse_move( desktop, event->old_cursor_x, event->old_cursor_y, event->cursor_x, event->cursor_y ); + ((widget_t *)desktop)->vtable->on_mouse_move( desktop, event->old_cursor_x, event->old_cursor_y, event->cursor_x, event->cursor_y ); break; } -- cgit v1.2.3-54-g00ecf