summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-07-01 21:21:56 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-07-01 21:21:56 +0200
commite27693074998571ca5613e27a0d4bf00e2d78a79 (patch)
treedad8932dc7ee447fdd16289e59fdc5d9dbe17a2e
parente6503671eecc2026130fe3544d79d644c1657b4c (diff)
downloadabaos-e27693074998571ca5613e27a0d4bf00e2d78a79.tar.gz
abaos-e27693074998571ca5613e27a0d4bf00e2d78a79.tar.bz2
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)
-rw-r--r--src/kernel/kernel.c10
1 files changed, 5 insertions, 5 deletions
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;
}