Enlightenment CVS committal Author : moom16 Project : e17 Module : proto
Dir : e17/proto/etk/src/lib Modified Files: etk_entry.c etk_statusbar.c etk_statusbar.h etk_window.c Log Message: * The resize grip of the status bar now works =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_entry.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- etk_entry.c 11 Nov 2005 22:48:48 -0000 1.8 +++ etk_entry.c 20 Nov 2005 16:16:03 -0000 1.9 @@ -179,7 +179,7 @@ if (!(entry_widget = ETK_WIDGET(object))) return; - etk_toplevel_widget_pointer_push(entry_widget->toplevel_parent, ETK_POINTER_TEXT_EDIT); + etk_toplevel_widget_pointer_push(etk_widget_toplevel_parent_get(entry_widget), ETK_POINTER_TEXT_EDIT); } /* Called when the mouse leaves the entry */ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_statusbar.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- etk_statusbar.c 20 Nov 2005 10:33:28 -0000 1.1 +++ etk_statusbar.c 20 Nov 2005 16:16:03 -0000 1.2 @@ -2,9 +2,12 @@ #include "etk_statusbar.h" #include <stdlib.h> #include <string.h> +#include <Edje.h> #include "etk_signal.h" #include "etk_signal_callback.h" #include "etk_utils.h" +#include "etk_toplevel_widget.h" +#include "etk_window.h" /** * @addtogroup Etk_Statusbar @@ -35,6 +38,8 @@ static void _etk_statusbar_property_set(Etk_Object *object, int property_id, Etk_Property_Value *value); static void _etk_statusbar_property_get(Etk_Object *object, int property_id, Etk_Property_Value *value); static void _etk_statusbar_realize_cb(Etk_Object *object, void *data); +static void _etk_status_bar_resize_grip_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _etk_status_bar_mouse_move_cb(Etk_Object *object, void *event_info, void *data); static void _etk_statusbar_update(Etk_Statusbar *statusbar); static Etk_Signal *_etk_statusbar_signals[ETK_STATUSBAR_NUM_SIGNALS]; @@ -252,6 +257,48 @@ static void _etk_statusbar_realize_cb(Etk_Object *object, void *data) { _etk_statusbar_update(ETK_STATUSBAR(object)); + if (ETK_WIDGET(object)->theme_object) + edje_object_signal_callback_add(ETK_WIDGET(object)->theme_object, "*", "resize_grip", _etk_status_bar_resize_grip_cb, object); +} + +/* Called when an event occurs on the resize grip of the status bar */ +static void _etk_status_bar_resize_grip_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Etk_Statusbar *statusbar; + + if (!(statusbar = ETK_STATUSBAR(data))) + return; + + if (strcmp(emission, "mouse,in") == 0) + etk_toplevel_widget_pointer_push(etk_widget_toplevel_parent_get(ETK_WIDGET(statusbar)), ETK_POINTER_RESIZE_BR); + else if (strcmp(emission, "mouse,out") == 0) + etk_toplevel_widget_pointer_pop(etk_widget_toplevel_parent_get(ETK_WIDGET(statusbar)), ETK_POINTER_RESIZE_BR); + else if (strcmp(emission, "mouse,down,1") == 0) + { + Etk_Toplevel_Widget *window; + + if (!(window = etk_widget_toplevel_parent_get(ETK_WIDGET(statusbar))) || !ETK_IS_WINDOW(window)) + return; + + etk_window_geometry_get(ETK_WINDOW(window), NULL, NULL, &statusbar->new_window_width, &statusbar->new_window_height); + etk_signal_connect("mouse_move", ETK_OBJECT(statusbar), ETK_CALLBACK(_etk_status_bar_mouse_move_cb), NULL); + } + else if (strcmp(emission, "mouse,up,1") == 0) + etk_signal_disconnect("mouse_move", ETK_OBJECT(statusbar), ETK_CALLBACK(_etk_status_bar_mouse_move_cb)); +} + +static void _etk_status_bar_mouse_move_cb(Etk_Object *object, void *event_info, void *data) +{ + Etk_Statusbar *statusbar; + Etk_Toplevel_Widget *window; + Etk_Event_Mouse_Move *event = event_info; + + if (!(statusbar = ETK_STATUSBAR(object)) || !(window = etk_widget_toplevel_parent_get(ETK_WIDGET(statusbar))) || !ETK_IS_WINDOW(window)) + return; + + statusbar->new_window_width += event->cur.widget.x - event->prev.widget.x; + statusbar->new_window_height += event->cur.widget.y - event->prev.widget.y; + etk_window_resize(ETK_WINDOW(window), statusbar->new_window_width, statusbar->new_window_height); } /************************** =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_statusbar.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- etk_statusbar.h 20 Nov 2005 10:33:28 -0000 1.1 +++ etk_statusbar.h 20 Nov 2005 16:16:03 -0000 1.2 @@ -32,6 +32,8 @@ Evas_List *msg_stack; int next_message_id; int next_context_id; + int new_window_width; + int new_window_height; }; Etk_Type *etk_statusbar_type_get(); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_window.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- etk_window.c 20 Nov 2005 10:33:28 -0000 1.6 +++ etk_window.c 20 Nov 2005 16:16:03 -0000 1.7 @@ -110,9 +110,13 @@ */ void etk_window_resize(Etk_Window *window, int w, int h) { + int min_w, min_h; + if (!window) return; - ecore_evas_resize(window->ecore_evas, w, h); + + ecore_evas_size_min_get(window->ecore_evas, &min_w, &min_h); + ecore_evas_resize(window->ecore_evas, ETK_MAX(w, min_w), ETK_MAX(h, min_h)); } /** ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs