Index: uspace/lib/gui/window.c
===================================================================
--- uspace/lib/gui/window.c	(revision 1e4a937d249f5477ae9be53bbb34c94e8942f19d)
+++ uspace/lib/gui/window.c	(revision e0228190e56b2405620ccda32362ae157ee28834)
@@ -87,4 +87,5 @@
 static void window_kbd_event(void *, kbd_event_t *);
 static void window_pos_event(void *, pos_event_t *);
+static void window_resize_event(void *, gfx_rect_t *);
 static void window_unfocus_event(void *);
 
@@ -94,4 +95,5 @@
 	.kbd_event = window_kbd_event,
 	.pos_event = window_pos_event,
+	.resize_event = window_resize_event,
 	.unfocus_event = window_unfocus_event
 };
@@ -313,5 +315,5 @@
 		} else if (left && btn_left) {
 			(void) display_window_resize_req(widget->window->dwindow,
-			    display_wr_bottom, &pos);
+			    display_wr_left, &pos);
 		} else if (bottom && btn_left) {
 			(void) display_window_resize_req(widget->window->dwindow,
@@ -319,5 +321,5 @@
 		} else if (right && btn_left) {
 			(void) display_window_resize_req(widget->window->dwindow,
-			    display_wr_bottom, &pos);
+			    display_wr_right, &pos);
 		} else if (close && btn_left) {
 			window_close(widget->window);
@@ -815,4 +817,23 @@
 }
 
+static void window_resize_event(void *arg, gfx_rect_t *nrect)
+{
+	window_t *win = (window_t *) arg;
+	window_event_t *event;
+
+	event = (window_event_t *) calloc(1, sizeof(window_event_t));
+	if (event == NULL)
+		return;
+
+	link_initialize(&event->link);
+	event->type = ET_WINDOW_RESIZE;
+	event->data.resize.offset_x = nrect->p0.x;
+	event->data.resize.offset_y = nrect->p0.y;
+	event->data.resize.width = nrect->p1.x - nrect->p0.x;
+	event->data.resize.height = nrect->p1.y - nrect->p0.y;
+	event->data.resize.placement_flags = WINDOW_PLACEMENT_ANY;
+	prodcons_produce(&win->events, &event->link);
+}
+
 static void window_unfocus_event(void *arg)
 {
