summaryrefslogtreecommitdiff
path: root/src/kernel
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-06-30 09:10:26 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-06-30 09:10:26 +0200
commit58df0d3172ad548b85627e5bb0b92a27a6072736 (patch)
tree76d621778d30e541ab5bdce539b38bed27833abf /src/kernel
parent587f8d3dbf25408100496854c8803ce3c918ec4f (diff)
downloadabaos-58df0d3172ad548b85627e5bb0b92a27a6072736.tar.gz
abaos-58df0d3172ad548b85627e5bb0b92a27a6072736.tar.bz2
added a window to gui which is draggable by the mouse
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/kernel.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c
index dbf0cab..eff6a4c 100644
--- a/src/kernel/kernel.c
+++ b/src/kernel/kernel.c
@@ -24,6 +24,7 @@
#include "composite_widget.h"
#include "desktop.h"
#include "text_widget.h"
+#include "window.h"
static jmp_buf panic_jmp_buf;
@@ -44,8 +45,8 @@ typedef struct {
mode_t mode;
mouse_t mouse;
desktop_t desktop;
- widget_t widget1;
- widget_t widget2;
+ window_t window1;
+ window_t window2;
} global_context_t;
static global_context_t global_context;
@@ -214,11 +215,11 @@ static void handle_keyboard_event( keyboard_event_t *event, void *context )
if( vga_set_mode( vga, vga_make_mode( VGA_MODE_TYPE_GRAPHICS, 320, 200, 8 ) ) ) {
desktop_init( &global_context->desktop, 320, 200, VGA_COLOR_BLUE );
- widget_init( &global_context->widget1, (widget_t *)&global_context->desktop, 60, 90, 60, 70, VGA_COLOR_LIGHT_GREY );
- ((composite_widget_vtable_t *)global_context->desktop.vtable)->add_child( &global_context->desktop, &global_context->widget1 );
+ window_init( &global_context->window1, (widget_t *)&global_context->desktop, 60, 90, 60, 70, VGA_COLOR_LIGHT_GREY );
+ ((composite_widget_vtable_t *)global_context->desktop.vtable)->add_child( &global_context->desktop, (widget_t *)&global_context->window1 );
- widget_init( &global_context->widget2, (widget_t *)&global_context->desktop, 130, 80, 60, 70, VGA_COLOR_GREEN );
- ((composite_widget_vtable_t *)global_context->desktop.vtable)->add_child( &global_context->desktop, &global_context->widget2 );
+ window_init( &global_context->window2, (widget_t *)&global_context->desktop, 130, 80, 60, 70, VGA_COLOR_GREEN );
+ ((composite_widget_vtable_t *)global_context->desktop.vtable)->add_child( &global_context->desktop, (widget_t *)&global_context->window2 );
char s[100];
char *p = s;
@@ -295,7 +296,15 @@ static void handle_mouse_event( mouse_event_t *event, void *context )
case MODE_GRAPHICS:
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 );
+ }
+ break;
+
case MOUSE_EVENT_TYPE_BUTTON_DOWN:
+ if( event->button == MOUSE_BUTTON_LEFT ) {
+ desktop_on_mouse_down( desktop, event->cursor_x, event->cursor_y );
+ }
break;
case MOUSE_EVENT_TYPE_MOVE: