Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/engines/ecore_fb


Modified Files:
        ecore_fb.c 


Log Message:
* [Fb engine] windows can now be maximized!


===================================================================
RCS file: /cvs/e/e17/libs/etk/src/engines/ecore_fb/ecore_fb.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- ecore_fb.c  12 Jan 2007 02:53:56 -0000      1.12
+++ ecore_fb.c  13 Jan 2007 17:25:00 -0000      1.13
@@ -11,7 +11,7 @@
 
 /* TODO: Debug */
 #include <Ecore_X.h>
-#define USE_X11 0
+#define USE_X11 1
 
 #define WM_THEME_FILE   (PACKAGE_DATA_DIR "/wm/default.edj")
 
@@ -53,6 +53,8 @@
 static void _window_unrealized_cb(Etk_Object *object, void *data);
 static void _window_titlebar_mouse_down_cb(void *data, Evas_Object *obj, const 
char *emission, const char *source);
 static void _window_titlebar_mouse_up_cb(void *data, Evas_Object *obj, const 
char *emission, const char *source);
+static void _window_maximize_mouse_up_cb(void *data, Evas_Object *obj, const 
char *emission, const char *source);
+static void _window_close_mouse_up_cb(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 
 /* Event and mouse functions */
 static void _event_callback_set(void (*callback)(Etk_Event_Type event, 
Etk_Event_Global event_info));
@@ -384,7 +386,7 @@
    engine_data = window->engine_data;
    engine_data->border_position.x = x;
    engine_data->border_position.y = y;
-   if (engine_data->border)
+   if (engine_data->border && !engine_data->maximized)
       evas_object_move(engine_data->border, x, y);
 }
 
@@ -396,7 +398,7 @@
    engine_data = window->engine_data;
    engine_data->size.w = ETK_MAX(engine_data->min_size.w, w);
    engine_data->size.h = ETK_MAX(engine_data->min_size.h, h);
-   if (engine_data->border && ETK_WIDGET(window)->smart_object)
+   if (engine_data->border && ETK_WIDGET(window)->smart_object && 
!engine_data->maximized)
    {
       int border_w, border_h;
       
@@ -449,8 +451,13 @@
    Etk_Engine_Window_Data *engine_data;
    
    engine_data = window->engine_data;
-   if (w)   *w = engine_data->size.w;
-   if (h)   *h = engine_data->size.h;
+   if (engine_data->maximized && ETK_WIDGET(window)->smart_object)
+      evas_object_geometry_get(ETK_WIDGET(window)->smart_object, NULL, NULL, 
w, h);
+   else
+   {
+      if (w)   *w = engine_data->size.w;
+      if (h)   *h = engine_data->size.h;
+   }
 }
 
 /* Gets the geometry of the screen containing the window */
@@ -471,6 +478,22 @@
    if (engine_data->maximized != maximized)
    {
       engine_data->maximized = maximized;
+      if (engine_data->border)
+      {
+         if (maximized)
+         {
+            evas_object_move(engine_data->border, 0, 0);
+            evas_object_resize(engine_data->border, _fb_width, _fb_height);
+         }
+         else
+         {
+            evas_object_move(engine_data->border, 
engine_data->border_position.x, engine_data->border_position.y);
+            etk_window_resize(window, engine_data->size.w, 
engine_data->size.h);
+         }
+         /* TODO: notify geometry.. */
+      }
+      else
+      
       etk_object_notify(ETK_OBJECT(window), "maximized");
    }
 }
@@ -699,8 +722,17 @@
    edje_object_part_swallow(engine_data->border, "etk.swallow.content", 
ETK_WIDGET(window)->smart_object);
    edje_object_size_min_calc(engine_data->border, &border_w, &border_h);
    
-   evas_object_move(engine_data->border, engine_data->border_position.x, 
engine_data->border_position.y);
-   evas_object_resize(engine_data->border, border_w, border_h);
+   if (engine_data->maximized)
+   {
+      evas_object_move(engine_data->border, 0, 0);
+      evas_object_resize(engine_data->border, _fb_width, _fb_height);
+   }
+   else
+   {
+      evas_object_move(engine_data->border, engine_data->border_position.x, 
engine_data->border_position.y);
+      evas_object_resize(engine_data->border, border_w, border_h);
+   }
+   
    if (engine_data->visible)
       evas_object_show(engine_data->border);
    
@@ -708,6 +740,10 @@
       _window_titlebar_mouse_down_cb, window);
    edje_object_signal_callback_add(engine_data->border, "mouse,up,1*", 
"etk.event.titlebar",
       _window_titlebar_mouse_up_cb, window);
+   edje_object_signal_callback_add(engine_data->border, "mouse,clicked,1*", 
"etk.event.maximize",
+      _window_maximize_mouse_up_cb, window);
+   edje_object_signal_callback_add(engine_data->border, "mouse,clicked,1*", 
"etk.event.close",
+      _window_close_mouse_up_cb, window);
    
    if (_pointer_object)
       evas_object_raise(_pointer_object);
@@ -740,9 +776,12 @@
       return;
    engine_data = window->engine_data;
    
-   _window_dragged = window;
-   _window_drag_offset_x = _mouse_x - engine_data->border_position.x;
-   _window_drag_offset_y = _mouse_y - engine_data->border_position.y;
+   if (!engine_data->maximized)
+   {
+      _window_dragged = window;
+      _window_drag_offset_x = _mouse_x - engine_data->border_position.x;
+      _window_drag_offset_y = _mouse_y - engine_data->border_position.y;
+   }
    
    etk_window_raise(window);
 }
@@ -751,6 +790,21 @@
 static void _window_titlebar_mouse_up_cb(void *data, Evas_Object *obj, const 
char *emission, const char *source)
 {
    _window_dragged = NULL;
+}
+
+/* Called when the mouse releases the maximize button */
+static void _window_maximize_mouse_up_cb(void *data, Evas_Object *obj, const 
char *emission, const char *source)
+{
+   Etk_Window *window;
+   
+   if (!(window = ETK_WINDOW(data)))
+      return;
+   etk_window_maximized_set(window, !etk_window_maximized_get(window));
+}
+
+/* Called when the mouse releases the close button */
+static void _window_close_mouse_up_cb(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+{
 }
 
 /* Called when the mouse is moved */



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to