Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_dnd.c ewl_dnd.h ewl_misc.c 


Log Message:
- cleanup

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_dnd.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ewl_dnd.c   29 Dec 2005 17:12:09 -0000      1.6
+++ ewl_dnd.c   29 Dec 2005 17:45:01 -0000      1.7
@@ -6,40 +6,81 @@
 #include <Ecore_X.h>
 
 #define EWL_DND_WINDOW_ROOT 0
+
 static int ewl_dragging_current = 0;
 static int ewl_dnd_move_count = 0;
-static Ecore_Evas* _ewl_dnd_drag_canvas;
-static Evas* _ewl_dnd_drag_evas;
-static Evas_Object* _ewl_dnd_drag_image;
-static Ecore_X_Window _ewl_dnd_evas_win;
-static Ecore_X_Window _ewl_dnd_drag_win = 0;
-
-static Ewl_Widget* _ewl_dnd_widget = NULL;
+static Ecore_Evas *ewl_dnd_drag_canvas;
+static Evas *ewl_dnd_drag_evas;
+static Evas_Object *ewl_dnd_drag_image;
+static Ecore_X_Window ewl_dnd_evas_win;
+static Ecore_X_Window ewl_dnd_drag_win = 0;
+
+static Ewl_Widget *ewl_dnd_widget = NULL;
+
+static Ecore_Hash *ewl_dnd_position_hash;
+static int ewl_dnd_status = 0;
+
+Ecore_Event_Handler *ewl_dnd_mouse_up_handler;
+Ecore_Event_Handler *ewl_dnd_mouse_move_handler;
+
+char *ewl_dnd_drop_types[] = { "text/uri-list" };
+
+static int ewl_dnd_event_mouse_up(void *data, int type, void *event);
+static int ewl_dnd_event_dnd_move(void *data, int type, void *event);
+
+/**
+ * @return Returns TRUE if the DND system was successfully initialized,
+ * FALSE otherwise
+ */
+int
+ewl_dnd_init(void) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
 
-static Ecore_Hash* ewl_dnd_position_hash;
-static int _ewl_dnd_status=0;
+       ewl_dnd_position_hash = ecore_hash_new(ecore_direct_hash, 
ecore_direct_compare);
+       if (!ewl_dnd_position_hash)
+               DRETURN_INT(FALSE, DLEVEL_STABLE);
 
-Ecore_Event_Handler* _ewl_dnd_mouse_up_handler;
-Ecore_Event_Handler* _ewl_dnd_mouse_move_handler;
+       ewl_dragging_current = 0;
+       ewl_dnd_status = 1;
 
+       DRETURN_INT(TRUE, DLEVEL_STABLE);
+}
 
-char *drop_types[] = { "text/uri-list" };
-char *data[] = { "file:///home/chaos/wlan-key2" };
+/**
+ * @brief Shuts down the EWL DND system
+ */
+void
+ewl_dnd_shutdown(void)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
 
+       ecore_hash_destroy(ewl_dnd_position_hash);
 
-void ewl_dnd_init(void) {
-       ewl_dnd_position_hash = ecore_hash_new(ecore_direct_hash, 
ecore_direct_compare);
-       ewl_dragging_current = 0;
-       _ewl_dnd_status = 1;
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
+/**
+ * @param w: The widget to add
+ * @return Returns no value
+ * @brief: Adds the given widget @a w to the position hash
+ */
+void
+ewl_dnd_position_windows_set(Ewl_Widget *w) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
 
-void ewl_dnd_position_windows_set(Ewl_Widget* w) {
-       ecore_hash_set(ewl_dnd_position_hash, w, (void*)1);
-}
-
+       ecore_hash_set(ewl_dnd_position_hash, w, (void *)1);
 
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
 
+/**
+ * @param widget: The widget to get the types for
+ * @return Returns the Ewl_Dnd_Types for the given widget
+ */
 Ewl_Dnd_Types *
 ewl_dnd_types_for_widget_get(Ewl_Widget *widget)
 {
@@ -64,62 +105,190 @@
        DRETURN_PTR(NULL, DLEVEL_STABLE);
 }
 
+/**
+ * @param: The widget to start dragging
+ * @return Returns no value
+ */
+void
+ewl_drag_start(Ewl_Widget *w) 
+{
+       int width, height;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, "widget");
+
+       if (!ewl_dnd_status || ewl_dragging_current) 
+               DRETURN(DLEVEL_STABLE);
+
+       ewl_dragging_current = 1;
+       ewl_dnd_widget = w;
+       ewl_dnd_move_count = 0;
+       
+       ewl_dnd_mouse_up_handler = 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP,
+                                                       ewl_dnd_event_mouse_up, 
NULL);
+       ewl_dnd_mouse_move_handler = 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, 
+                                                       ewl_dnd_event_dnd_move, 
NULL);
+
+       ewl_dnd_drag_canvas = ecore_evas_software_x11_new(NULL, 
+                                                       EWL_DND_WINDOW_ROOT, 
+                                                       64, 64, 64, 64); 
+       ewl_dnd_drag_evas = ecore_evas_get(ewl_dnd_drag_canvas);
+
+       ecore_evas_shaped_set(ewl_dnd_drag_canvas, 1);
+       ecore_evas_software_x11_direct_resize_set(ewl_dnd_drag_canvas, 1);
+
+       ewl_dnd_evas_win = 
ecore_evas_software_x11_window_get(ewl_dnd_drag_canvas);
+       ecore_x_window_resize(ewl_dnd_evas_win, 64, 64);
+       ecore_evas_override_set(ewl_dnd_drag_canvas, 1);
+       
+       //ecore_evas_software_x11_direct_resize_set(ewl_dnd_drag_evas, 1);
+       ecore_evas_ignore_events_set(ewl_dnd_drag_canvas, 1);
+
+       /* XXX Setup a cursor (This needs to become generic) */
+       ewl_dnd_drag_image = evas_object_image_add(ewl_dnd_drag_evas);
+       evas_object_image_file_set(ewl_dnd_drag_image, PACKAGE_DATA_DIR 
+                                               "/images/World.png", 0);
+       evas_object_image_fill_set(ewl_dnd_drag_image, 0, 0, 50, 50);
+       evas_object_resize(ewl_dnd_drag_image, 50, 50);
+       evas_object_show(ewl_dnd_drag_image);
+
+       /* Setup the dnd event capture window */
+       ecore_x_window_geometry_get(EWL_DND_WINDOW_ROOT, NULL, NULL, 
+                                                       &width,  &height);
+       ewl_dnd_drag_win = ecore_x_window_input_new(EWL_DND_WINDOW_ROOT, 0, 0,
+                                                               width, height);
+
+       /* Finally show the drag window */
+       ecore_x_window_show(ewl_dnd_drag_win);
+
+       /* Confine the pointer to our event windows */  
+       ecore_x_pointer_confine_grab(ewl_dnd_drag_win);
+       ecore_x_keyboard_grab(ewl_dnd_drag_win);
+
+       ecore_x_dnd_aware_set(ewl_dnd_drag_win, 1);
+       ecore_x_dnd_aware_set(ewl_dnd_evas_win, 1);
+       ecore_x_mwm_borderless_set(ewl_dnd_evas_win, 1);
+       
+       /* Start the drag operation */
+       ecore_x_dnd_types_set(ewl_dnd_drag_win, ewl_dnd_drop_types, 1);
+       ecore_x_dnd_begin(ewl_dnd_drag_win, NULL, 0);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * @brief Disables DND
+ * @return Returns no value
+ */
+void
+ewl_dnd_disable(void) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       ewl_dnd_status = 0;
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * @brief Enables DND
+ * @return Returns no value
+ */
+void
+ewl_dnd_enable(void) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       ewl_dnd_status = 1;
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * @return Returns the current DND status
+ */
+int
+ewl_dnd_status_get(void) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       DRETURN_INT(ewl_dnd_status, DLEVEL_STABLE);
+}
+
+/**
+ * @return Returns the current DND widget
+ */
+Ewl_Widget *
+ewl_dnd_drag_widget_get(void) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       DRETURN_PTR(ewl_dnd_widget, DLEVEL_STABLE);
+}
+
+/**
+ * @brief Clears the current DND widget
+ */
+void
+ewl_dnd_drag_widget_clear(void) 
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       ewl_dnd_widget = NULL;
 
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
 
 static int
-_ewl_dnd_event_dnd_move(void *data __UNUSED__, int type __UNUSED__, 
+ewl_dnd_event_dnd_move(void *data __UNUSED__, int type __UNUSED__, 
                                                        void *event)
 {
        Ecore_X_Event_Mouse_Move *ev;
-       ev = event;
 
-       if (!_ewl_dnd_status) return 1;
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("event", event, FALSE);
 
-       //printf("%d:%d\n", ev->x, ev->y);
-       ewl_dnd_move_count++;
+       ev = event;
 
-       if (ewl_dnd_move_count == 1) {
-               ecore_evas_show(_ewl_dnd_drag_canvas);
-       }
+       if (!ewl_dnd_status) DRETURN_INT(TRUE, DLEVEL_STABLE);
 
-       if (_ewl_dnd_drag_canvas) ecore_evas_move(_ewl_dnd_drag_canvas, ev->x - 
15, ev->y - 15);
+       ewl_dnd_move_count++;
+       if (ewl_dnd_move_count == 1) 
+               ecore_evas_show(ewl_dnd_drag_canvas);
 
+       if (ewl_dnd_drag_canvas) 
+               ecore_evas_move(ewl_dnd_drag_canvas, ev->x - 15, ev->y - 15);
 
-       return 1;
+       DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
 
-
 static int
-_ewl_dnd_event_mouse_up(void *data __UNUSED__, int type __UNUSED__, 
+ewl_dnd_event_mouse_up(void *data __UNUSED__, int type __UNUSED__, 
                                                void *event __UNUSED__)
 {
-       if (_ewl_dnd_drag_canvas && ewl_dragging_current) {
-               Ecore_List* pos;
-               void* val;
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       if (ewl_dnd_drag_canvas && ewl_dragging_current) {
+               Ecore_List *pos;
+               void *val;
 
                ecore_x_pointer_ungrab();
                ecore_x_keyboard_ungrab();
 
-               ecore_event_handler_del(_ewl_dnd_mouse_up_handler);
-               ecore_event_handler_del(_ewl_dnd_mouse_move_handler);
-       
-               //evas_object_del(_ewl_dnd_drag_image);
-               ecore_evas_free(_ewl_dnd_drag_canvas);
-               //ecore_evas_hide(_ewl_dnd_drag_canvas);
-               _ewl_dnd_drag_canvas = NULL;
-
-
-               ecore_x_window_del(_ewl_dnd_drag_win);
-               
+               ecore_event_handler_del(ewl_dnd_mouse_up_handler);
+               ecore_event_handler_del(ewl_dnd_mouse_move_handler);
        
-               //ecore_x_window_del(_ewl_dnd_evas_win);
+               ecore_evas_free(ewl_dnd_drag_canvas);
+               ewl_dnd_drag_canvas = NULL;
+               ecore_x_window_del(ewl_dnd_drag_win);
                ecore_x_dnd_drop();
 
                /* Kill all last position references so they don't get
                 * carried over to the next drag */
                pos = ecore_hash_keys(ewl_dnd_position_hash);
                ecore_list_goto_first(pos);
-               while ( (val = ecore_list_remove_first(pos)) ) {
+               while ((val = ecore_list_remove_first(pos))) {
                        EWL_WINDOW(val)->dnd_last_position = NULL;
                        ecore_hash_remove(ewl_dnd_position_hash, val);
                }
@@ -129,96 +298,6 @@
                ewl_widget_dnd_reset();
        }
 
-       return 1;
-       
-}
-
-
-void ewl_drag_start(Ewl_Widget* w) {
-       int width,height;
-
-       if (!_ewl_dnd_status) return;
-
-       if (ewl_dragging_current) {
-               return;
-       }
-
-       ewl_dragging_current = 1;
-       _ewl_dnd_widget = w;
-       ewl_dnd_move_count = 0;
-
-       
-       _ewl_dnd_mouse_up_handler = 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP,_ewl_dnd_event_mouse_up, 
NULL);
-       _ewl_dnd_mouse_move_handler = 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, _ewl_dnd_event_dnd_move, 
NULL);
-
-       _ewl_dnd_drag_canvas = ecore_evas_software_x11_new(NULL, 
EWL_DND_WINDOW_ROOT, 64,64,64,64); 
-       _ewl_dnd_drag_evas = ecore_evas_get(_ewl_dnd_drag_canvas);
-
-       ecore_evas_shaped_set(_ewl_dnd_drag_canvas, 1);
-       ecore_evas_software_x11_direct_resize_set(_ewl_dnd_drag_canvas,1);
-
-       _ewl_dnd_evas_win = 
ecore_evas_software_x11_window_get(_ewl_dnd_drag_canvas);
-       ecore_x_window_resize(_ewl_dnd_evas_win, 64,64);
-       ecore_evas_override_set(_ewl_dnd_drag_canvas, 1);
-
-       
-       //ecore_evas_software_x11_direct_resize_set(_ewl_dnd_drag_evas,1);
-       ecore_evas_ignore_events_set(_ewl_dnd_drag_canvas, 1);
-
-
-
-       /*Setup a cursor*/
-       _ewl_dnd_drag_image = evas_object_image_add(_ewl_dnd_drag_evas);
-       evas_object_image_file_set(_ewl_dnd_drag_image, PACKAGE_DATA_DIR 
"/images/World.png",0);        
-       evas_object_image_fill_set(_ewl_dnd_drag_image, 0,0,50,50);
-       evas_object_resize(_ewl_dnd_drag_image, 50,50);
-       evas_object_show(_ewl_dnd_drag_image);
-       
-
-
-
-       /*Setup the dnd event capture window*/
-       ecore_x_window_geometry_get(EWL_DND_WINDOW_ROOT, NULL, NULL, &width,  
&height);
-       _ewl_dnd_drag_win = ecore_x_window_input_new(EWL_DND_WINDOW_ROOT, 
-               0, 0,
-               width,height);
-
-       /*Finally show the drag window*/
-       ecore_x_window_show(_ewl_dnd_drag_win);
-
-
-       /*Confine the pointer to our event windows*/    
-       ecore_x_pointer_confine_grab(_ewl_dnd_drag_win);
-       ecore_x_keyboard_grab(_ewl_dnd_drag_win);
-
-       ecore_x_dnd_aware_set(_ewl_dnd_drag_win, 1);
-       ecore_x_dnd_aware_set(_ewl_dnd_evas_win, 1);
-       ecore_x_mwm_borderless_set(_ewl_dnd_evas_win, 1);
-       
-       /*Start the drag operation*/
-       ecore_x_dnd_types_set(_ewl_dnd_drag_win, drop_types, 1);
-       ecore_x_dnd_begin(_ewl_dnd_drag_win, NULL, 0);
-
-
+       DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
 
-
-void ewl_dnd_disable(void) {
-       _ewl_dnd_status=0;
-}
-
-void ewl_dnd_enable(void) {
-       _ewl_dnd_status=1;
-}
-
-int ewl_dnd_status_get(void) {
-       return _ewl_dnd_status;
-}
-
-Ewl_Widget* ewl_dnd_drag_widget_get(void) {
-       return _ewl_dnd_widget;
-}
-
-void ewl_dnd_drag_widget_clear(void) {
-       _ewl_dnd_widget = NULL;
-}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_dnd.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ewl_dnd.h   22 Dec 2005 20:18:47 -0000      1.8
+++ ewl_dnd.h   29 Dec 2005 17:45:01 -0000      1.9
@@ -1,14 +1,31 @@
 #ifndef __EWL_DND_H__
 #define __EWL_DND_H__
 
-Ewl_Dnd_Types *ewl_dnd_types_for_widget_get(Ewl_Widget *widget);
-void ewl_drag_start(Ewl_Widget* w);
-void ewl_dnd_position_windows_set(Ewl_Widget* w);
-void ewl_dnd_init(void);
-Ewl_Widget* ewl_dnd_drag_widget_get(void);
-int ewl_dnd_status_get(void);
-void ewl_dnd_drag_widget_clear(void);
-void ewl_dnd_disable(void);
-void ewl_dnd_enable(void);
+/**
+ * @file ewl_dnd.h
+ * @defgroup Ewl_Dnd Dnd: The files containing DND functions
+ *
+ * @{
+ */
+
+int             ewl_dnd_init(void);
+void            ewl_dnd_shutdown(void);
+
+void            ewl_drag_start(Ewl_Widget *w);
+void            ewl_dnd_drag_widget_clear(void);
+Ewl_Widget     *ewl_dnd_drag_widget_get(void);
+
+int             ewl_dnd_status_get(void);
+
+void            ewl_dnd_position_windows_set(Ewl_Widget *w);
+Ewl_Dnd_Types  *ewl_dnd_types_for_widget_get(Ewl_Widget *widget);
+
+void            ewl_dnd_disable(void);
+void            ewl_dnd_enable(void);
+
+/**
+ * @}
+ */
+
 #endif
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_misc.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- ewl_misc.c  22 Dec 2005 23:46:37 -0000      1.35
+++ ewl_misc.c  29 Dec 2005 17:45:01 -0000      1.36
@@ -185,7 +185,11 @@
                DRETURN_INT(_ewl_init_count, DLEVEL_STABLE);
        }
 
-       ewl_dnd_init();
+       if (!ewl_dnd_init()) {
+               DERROR("Count not init dnd.\n");
+               ewl_shutdown();
+               DRETURN_INT(_ewl_init_count, DLEVEL_STABLE);
+       }
 
 
 #ifdef ENABLE_EWL_SOFTWARE_X11
@@ -283,6 +287,7 @@
        ewl_callbacks_shutdown();
        ewl_theme_shutdown();
        ewl_config_shutdown();
+       ewl_dnd_shutdown();
 
        /*
         * Free internal accounting lists.




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to