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

Reply via email to