Enlightenment CVS committal

Author  : moom
Project : e17
Module  : proto

Dir     : e17/proto/etk/src/engines/ecore_evas_x11


Modified Files:
        ecore_evas_x11.c 


Log Message:
* Some work to clean up the engine's API


===================================================================
RCS file: /cvs/e/e17/proto/etk/src/engines/ecore_evas_x11/ecore_evas_x11.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- ecore_evas_x11.c    30 Jul 2006 21:09:32 -0000      1.11
+++ ecore_evas_x11.c    1 Sep 2006 06:41:17 -0000       1.12
@@ -6,20 +6,12 @@
 #include <Ecore_X.h>
 #include <Ecore_X_Cursor.h>
 #include <Ecore_X_Atoms.h>
-
-#include "etk_types.h"
-#include "etk_dnd.h"
-#include "etk_engine.h"
-#include "etk_utils.h"
-#include "etk_toplevel_widget.h"
-#include "etk_main.h"
-
+#include <Etk.h>
 #include "Etk_Engine_Ecore_Evas.h"
 #include "Etk_Engine_Ecore_Evas_X11.h"
 
 /* Engine specific data for Etk_Window
- * We do this to shorten the name for internal use
- */
+ * We do this to shorten the name for internal use */
 typedef Etk_Engine_Ecore_Evas_X11_Window_Data Etk_Engine_Window_Data;
 static Ecore_Event_Handler *_window_property_handler = NULL;
 static int _window_property_cb(void *data, int ev_type, void *ev);
@@ -42,66 +34,50 @@
 static Etk_Bool _engine_init();
 static void _engine_shutdown();
 
-/* Etk_Window functions */
+/* Etk_Window */
 static void _window_constructor(Etk_Window *window);
 static void _window_destructor(Etk_Window *window);
-static void _window_center_on_window(Etk_Window *window_to_center, Etk_Window 
*window);
-static void _window_move_to_mouse(Etk_Window *window);
+static void _window_screen_geometry_get(Etk_Window *window, int *x, int *y, 
int *w, int *h);
 static void _window_modal_for_window(Etk_Window *window_to_modal, Etk_Window 
*window);
 static void _window_skip_taskbar_hint_set(Etk_Window *window, Etk_Bool 
skip_taskbar_hint);
 static Etk_Bool _window_skip_taskbar_hint_get(Etk_Window *window);
 static void _window_skip_pager_hint_set(Etk_Window *window, Etk_Bool 
skip_pager_hint);
 static Etk_Bool _window_skip_pager_hint_get(Etk_Window *window);
-static void _window_dnd_aware_set(Etk_Window *window, Etk_Bool on);
-static Etk_Bool _window_dnd_aware_get(Etk_Window *window);
 static void _window_pointer_set(Etk_Window *window, Etk_Pointer_Type 
pointer_type);
   
-/* Etk_Popup_Window functions */
+/* Etk_Popup_Window */
 static void _popup_window_constructor(Etk_Popup_Window *popup_window);
 static void _popup_window_popup_at_xy(Etk_Popup_Window *popup_window, int x, 
int y);
-static void _popup_window_popup(Etk_Popup_Window *popup_window);
-static void _popup_window_popdown(Etk_Popup_Window *popup_window);  
-static Evas_List **_popup_window_popped_get();
+static void _popup_window_popdown(Etk_Popup_Window *popup_window);
 
-/* Etk_Popup_Window private functions */
 static Etk_Popup_Window_Screen_Edge 
_popup_window_over_screen_edge_get(Etk_Popup_Window *popup_window);
 static Etk_Popup_Window_Screen_Edge _popup_window_mouse_on_screen_edge_get();
 static void _popup_window_slide_timer_update(Etk_Popup_Window *popup_window);
 static int _popup_window_slide_timer_cb(void *data);
-  
-/* Etk_Popup_Window callbacks */
+
 static int _popup_window_key_down_cb(void *data, int type, void *event);
 static int _popup_window_key_up_cb(void *data, int type, void *event);
 static int _popup_window_mouse_move_cb(void *data, int type, void *event);
 static int _popup_window_mouse_up_cb(void *data, int type, void *event);
 
-/* Etk_Drag functions */
+/* Mouse */
+static void _mouse_position_get(int *x, int *y);
+static void _mouse_screen_geometry_get(int *x, int *y, int *w, int *h);
+
+/* Etk_Drag */
 static void _drag_constructor(Etk_Drag *drag);
 static void _drag_begin(Etk_Drag *drag);
 
-
-/* Etk_Drag event handlers */
 static Ecore_Event_Handler *_drag_mouse_move_handler;
 static Ecore_Event_Handler *_drag_mouse_up_handler;
 
-/* Etk_Drag callbacks */
 static int  _drag_mouse_up_cb(void *data, int type, void *event);
 static int  _drag_mouse_move_cb(void *data, int type, void *event);
 
-/* Etk Dnd functions */
+/* Etk Dnd */
 static Etk_Bool _dnd_init();
 static void _dnd_shutdown();
 
-/* Etk Dnd variables */
-extern Etk_Widget  *_etk_selection_widget;
-extern Etk_Widget  *_etk_drag_widget;
-static char       **_dnd_types          = NULL;
-static int          _dnd_types_num      = 0;
-static Etk_Widget  *_dnd_widget         = NULL;
-static Evas_List   *_dnd_handlers       = NULL;
-static int          _dnd_widget_accepts = 0;
-
-/* Etk Dnd callbacks */
 static void _dnd_container_get_widgets_at(Etk_Toplevel_Widget *top, int x, int 
y, int offx, int offy, Evas_List **list);
 static int _dnd_enter_handler(void *data, int type, void *event);
 static int _dnd_position_handler(void *data, int type, void *event);
@@ -111,6 +87,14 @@
 static int _dnd_status_handler(void *data, int type, void *event);
 static int _dnd_finished_handler(void *data, int type, void *event);
 
+extern Etk_Widget  *_etk_selection_widget;
+extern Etk_Widget  *_etk_drag_widget;
+static char       **_dnd_types          = NULL;
+static int          _dnd_types_num      = 0;
+static Etk_Widget  *_dnd_widget         = NULL;
+static Evas_List   *_dnd_handlers       = NULL;
+static int          _dnd_widget_accepts = 0;
+
 /* Etk Clipboard functions */
 static void _clipboard_text_request(Etk_Widget *widget);
 static void _clipboard_text_set(Etk_Widget *widget, const char *text, int 
length);
@@ -120,13 +104,19 @@
 static void _selection_text_set(Etk_Widget *widget, const char *text, int 
length);
 static void _selection_clear(void);
 
+/* TODO: remove! */
+static Evas_List **_popup_window_popped_get()
+{
+   return &_popup_window_popped_windows;
+}
+
 static Etk_Engine engine_info = {
    
    NULL, /* engine specific data */
    NULL, /* engine name */
    NULL, /* super (parent) engine */
    NULL, /* DL handle */
-     
+   
    _engine_init,
    _engine_shutdown,
    
@@ -144,8 +134,7 @@
    NULL, /* window_evas_position_get */
    NULL, /* window_screen_position_get */
    NULL, /* window_size_get */
-   _window_center_on_window,
-   _window_move_to_mouse,
+   _window_screen_geometry_get,
    _window_modal_for_window,     
    NULL, /* window_iconified_set */
    NULL, /* window_iconified_get */
@@ -167,30 +156,31 @@
    _window_skip_taskbar_hint_get,
    _window_skip_pager_hint_set,
    _window_skip_pager_hint_get,
-   _window_dnd_aware_set,
-   _window_dnd_aware_get,
    _window_pointer_set,
 
    _popup_window_constructor,
    _popup_window_popup_at_xy,
-   _popup_window_popup,
    _popup_window_popdown,
    _popup_window_popped_get,
-     
+   
+   _mouse_position_get,
+   _mouse_screen_geometry_get,
+   
    _drag_constructor,
    _drag_begin,
-     
+   
    _dnd_init,
    _dnd_shutdown,
-     
+   
    _clipboard_text_request,
    _clipboard_text_set,
-     
+   
    _selection_text_request,
    _selection_text_set,
    _selection_clear
 };
 
+
 Etk_Engine *engine_open()
 {
    engine_info.engine_data = NULL;
@@ -217,18 +207,14 @@
 static void _window_constructor(Etk_Window *window)
 {
    /* We expect the engine that extends this one to initialize and create
-    * the engine_data, ecore_evas and to get us the x_window.
-    */   
+    * the engine_data, ecore_evas and to get us the x_window. */
    Etk_Engine_Window_Data *engine_data;
    
    engine_data = window->engine_data;
-   /* TODO: perhaps this should be able to return with an error somehow */
-   if(!engine_data)
-     return;
+   if (!engine_data)
+      return;
    
    ecore_x_dnd_aware_set(engine_data->x_window, 1);
-   /* TODO: We are not using this now */
-   /* _window_property_handler = 
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _window_property_cb, 
window); */
    engine_info.super->window_constructor(window);
 }
 
@@ -239,102 +225,40 @@
    engine_data = window->engine_data;
    engine_info.super->window_destructor(window);
    free(engine_data);
-   /* We are not using this now */
-   /* ecore_event_handler_del(_window_property_handler); */
    window->engine_data = NULL;
 }
 
-static void _window_center_on_window(Etk_Window *window_to_center, Etk_Window 
*window)
+static void _window_screen_geometry_get(Etk_Window *window, int *x, int *y, 
int *w, int *h)
 {
-   int x, y, w, h;
-   int cw, ch;
    Etk_Engine_Window_Data *engine_data;
+   Ecore_X_Window root;
+   int num_screens;
+   int sx, sy, sw, sh;
+   int cx, cy, cw, ch;
+   int i;
    
-   engine_data = window->engine_data;   
-   if (!window_to_center)
-     return;
+   engine_data = window->engine_data;
    
-   if (window_to_center->wait_size_request)
-   {
-      window_to_center->center = ETK_TRUE;
-      window_to_center->center_on_window = window;
-      if (window)
-         etk_object_weak_pointer_add(ETK_OBJECT(window), (void 
**)(&window_to_center->center_on_window));
-   }
-   else
+   num_screens = ecore_x_xinerama_screen_count_get();
+   etk_window_geometry_get(window, &cx, &cy, &cw, &ch);
+   cx += (cw / 2);
+   cy += (ch / 2);
+   
+   for (i = 0; i < num_screens; i++)
    {
-      if (window)
+      ecore_x_xinerama_screen_geometry_get(i, &sx, &sy, &sw, &sh);
+      if (ETK_INSIDE(cx, cy, sx, sy, sw, sh))
       {
-         etk_window_geometry_get(window, &x, &y, &w, &h);
-         if (window->wait_size_request)
-         {
-            Etk_Size size_requisition;
-            
-            etk_widget_size_request(ETK_WIDGET(window), &size_requisition);
-            w = size_requisition.w;
-            h = size_requisition.h;
-         }
+         if (x)   *x = sx;
+         if (y)   *y = sy;
+         if (w)   *w = sw;
+         if (h)   *h = sh;
+         return;
       }
-
-      else
-      {
-         Ecore_X_Window root;
-        int screens;
-        
-        screens = ecore_x_xinerama_screen_count_get();  
-        if (screens > 0)
-        {
-           int i;
-           
-           for (root = engine_data->x_window; ecore_x_window_parent_get(root) 
!= 0; root = ecore_x_window_parent_get(root));
-           ecore_x_pointer_xy_get(root, &x, &y);
-           for (i = 0; i < screens; i++)
-           {          
-              int rx, ry, rw, rh;
-              
-              root = ecore_x_xinerama_screen_geometry_get(i, &rx, &ry, &rw, 
&rh);
-              if (ETK_INSIDE(x, y, rx, ry, rw, rh))
-              {
-                 x = rx; y = ry;
-                 w = rw; h = rh;
-                 goto END;
-              }               
-           }
-           goto DEFAULT;
-        }
-        else
-        {
-DEFAULT:           
-           for (root = engine_data->x_window; ecore_x_window_parent_get(root) 
!= 0; root = ecore_x_window_parent_get(root));
-           ecore_x_window_geometry_get(root, &x, &y, &w, &h);
-        }
-         
-        /* this is the case where we DONT have ecore_x and
-         * our window is NULL, we cant do anything.
-         */
-        return;
-      }
-
-END:      
-      etk_window_geometry_get(window_to_center, NULL, NULL, &cw, &ch);
-      
ecore_evas_move(ETK_ENGINE_ECORE_EVAS_WINDOW_DATA(engine_data)->ecore_evas, x + 
(w - cw) / 2, y + (h - ch) / 2);
    }
-}
-
-static void _window_move_to_mouse(Etk_Window *window)
-{
-   int x, y;
-   Ecore_X_Window root;
-   Etk_Engine_Window_Data *engine_data;
-   
-   engine_data = window->engine_data;   
-   
-   if (!window)
-     return;
    
    for (root = engine_data->x_window; ecore_x_window_parent_get(root) != 0; 
root = ecore_x_window_parent_get(root));
-   ecore_x_pointer_xy_get(root, &x, &y);
-   etk_window_move(window, x, y);
+   ecore_x_window_geometry_get(root, x, y, w, h);
 }
 
 static void _window_modal_for_window(Etk_Window *window_to_modal, Etk_Window 
*window)
@@ -362,9 +286,7 @@
       {
         Ecore_X_Window_State states[] = {ECORE_X_WINDOW_STATE_MODAL};
         
-        ecore_x_icccm_transient_for_set(engine_data->x_window,
-                                        engine_data2->x_window);
-        
+        ecore_x_icccm_transient_for_set(engine_data->x_window, 
engine_data2->x_window);
         ecore_x_netwm_window_state_set(engine_data->x_window, states, 1);
       }
    }
@@ -496,20 +418,6 @@
    return ETK_FALSE;
 }
 
-static void _window_dnd_aware_set(Etk_Window *window, Etk_Bool on)
-{
-   Etk_Engine_Window_Data *engine_data;
-   
-   engine_data = window->engine_data;   
-   ecore_x_dnd_aware_set(engine_data->x_window, on);
-}
-
-static Etk_Bool _window_dnd_aware_get(Etk_Window *window)
-{
-   /* TODO: we need to implement ecore_x_dnd_aware_get() */
-   return ETK_TRUE;
-}
-
 static void _window_pointer_set(Etk_Window *window, Etk_Pointer_Type 
pointer_type)
 {
    int x_pointer_type = ECORE_X_CURSOR_LEFT_PTR;
@@ -628,14 +536,6 @@
    _popup_window_slide_timer_update(popup_window);
 }
 
-static void _popup_window_popup(Etk_Popup_Window *popup_window)
-{
-   int x, y;
-   
-   ecore_x_pointer_last_xy_get(&x, &y);
-   etk_popup_window_popup_at_xy(popup_window, x + 1, y + 1);
-}
-
 static void _popup_window_popdown(Etk_Popup_Window *popup_window)
 {
    if (!_popup_window_popped_windows)
@@ -657,11 +557,6 @@
    }
 }
 
-static Evas_List **_popup_window_popped_get()
-{
-   return &_popup_window_popped_windows;
-}  
-
 /* Returns a flag incating on which edges of the screen the popup window is 
over */
 static Etk_Popup_Window_Screen_Edge 
_popup_window_over_screen_edge_get(Etk_Popup_Window *popup_window)
 {
@@ -802,6 +697,40 @@
    }
    
    return 1;
+}
+
+static void _mouse_position_get(int *x, int *y)
+{
+   ecore_x_pointer_last_xy_get(x, y);
+}
+
+static void _mouse_screen_geometry_get(int *x, int *y, int *w, int *h)
+{
+   int num_screens;
+   int sx, sy, sw, sh;
+   int mx, my;
+   
+   num_screens = ecore_x_xinerama_screen_count_get();   
+   if (num_screens > 0)
+   {
+      int i;
+      
+      ecore_x_pointer_last_xy_get(&mx, &my);
+      for (i = 0; i < num_screens; i++)
+      {
+         ecore_x_xinerama_screen_geometry_get(i, &sx, &sy, &sw, &sh);
+         if (ETK_INSIDE(mx, my, sx, sy, sw, sh))
+         {
+            if (x)   *x = sx;
+            if (y)   *y = sy;
+            if (w)   *w = sw;
+            if (h)   *h = sh;
+            return;
+         }
+      }
+   }
+   
+   ecore_x_window_geometry_get(ecore_x_window_root_first_get(), x, y, w, h);
 }
 
 static void _drag_constructor(Etk_Drag *drag)



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to