Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: Makefile.am e_actions.c e_border.c e_border.h e_config.c e_container.c e_container.h e_includes.h e_init.c e_int_config_cursor.c e_ipc_handlers.h e_main.c e_manager.c e_maximize.c e_place.c e_pointer.c e_pointer.h e_resist.c e_test.c e_win.c e_win.h Removed Files: e_gadman.c e_gadman.h Log Message: jamse brown ... errr... gadman is dead. basically if moduels wish to put objects on a desktop - they now will have to DIY and look after themselves. until we have gadcons with "free" layout that do similar stuff - but this simply means module authors need to d a bit more work. gadman code is unmaintained and a burden - thus removed. also borders and e_win's have their own pointers now - this should nuke the stuck pointer bug... :) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.140 retrieving revision 1.141 diff -u -3 -r1.140 -r1.141 --- Makefile.am 20 Aug 2006 03:51:54 -0000 1.140 +++ Makefile.am 20 Aug 2006 04:48:27 -0000 1.141 @@ -54,7 +54,6 @@ e_resist.h \ e_startup.h \ e_hints.h \ -e_gadman.h \ e_signals.h \ e_xinerama.h \ e_table.h \ @@ -203,7 +202,6 @@ e_resist.c \ e_startup.c \ e_hints.c \ -e_gadman.c \ e_signals.c \ e_xinerama.c \ e_table.c \ =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_actions.c,v retrieving revision 1.77 retrieving revision 1.78 diff -u -3 -r1.77 -r1.78 --- e_actions.c 14 Aug 2006 15:22:44 -0000 1.77 +++ e_actions.c 20 Aug 2006 04:48:27 -0000 1.78 @@ -1352,49 +1352,6 @@ } /***************************************************************************/ -ACT_FN_GO(edit_mode) -{ - if (!obj) obj = E_OBJECT(e_container_current_get(e_manager_current_get())); - if (!obj) return; - if (obj->type != E_CONTAINER_TYPE) - { - obj = E_OBJECT(e_container_current_get(e_manager_current_get())); - if (!obj) return; - } - e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_EDIT); - e_gadcon_all_edit_begin(); -} -ACT_FN_END(edit_mode) -{ - if (!obj) obj = E_OBJECT(e_container_current_get(e_manager_current_get())); - if (!obj) return; - if (obj->type != E_CONTAINER_TYPE) - { - obj = E_OBJECT(e_container_current_get(e_manager_current_get())); - if (!obj) return; - } - e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_NORMAL); - e_gadcon_all_edit_end(); -} - -/***************************************************************************/ -ACT_FN_GO(edit_mode_toggle) -{ - if (!obj) obj = E_OBJECT(e_container_current_get(e_manager_current_get())); - if (!obj) return; - if (obj->type != E_CONTAINER_TYPE) - { - obj = E_OBJECT(e_container_current_get(e_manager_current_get())); - if (!obj) return; - } - if (e_gadman_mode_get(((E_Container *)obj)->gadman) == E_GADMAN_MODE_NORMAL) - e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_EDIT); - else - e_gadman_mode_set(((E_Container *)obj)->gadman, E_GADMAN_MODE_NORMAL); -} -/***************************************************************************/ - -/***************************************************************************/ ACT_FN_GO(desk_deskshow_toggle) { E_Zone *zone; @@ -1476,10 +1433,8 @@ return; if (bd->zone) man = bd->zone->container->manager; + e_pointer_type_push(bd->pointer, bd, params); } - if (!man) man = e_manager_current_get(); - if (!man) return; - e_pointer_type_push(man->pointer, obj, params); } ACT_FN_GO(pointer_resize_pop) @@ -1497,10 +1452,8 @@ return; if (bd->zone) man = (E_Manager *)bd->zone->container->manager; + e_pointer_type_pop(bd->pointer, bd, params); } - if (!man) man = e_manager_current_get(); - if (!man) return; - e_pointer_type_pop(man->pointer, obj, params); } /***************************************************************************/ @@ -1812,14 +1765,6 @@ ACT_GO_MOUSE(winlist); ACT_GO_KEY(winlist); - ACT_GO(edit_mode); - ACT_END(edit_mode); - - /* edit_mode */ - ACT_GO(edit_mode_toggle); - e_register_action_predef_name(_("Gadgets"), _("Toggle Edit Mode"), "edit_mode_toggle", NULL, - EDIT_RESTRICT_ACTION | EDIT_RESTRICT_PARAMS, 0); - /* restart */ ACT_GO(restart); e_register_action_predef_name(_("Enlightenment"), _("Restart"), "restart", NULL, =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.526 retrieving revision 1.527 diff -u -3 -r1.526 -r1.527 --- e_border.c 16 Aug 2006 23:12:03 -0000 1.526 +++ e_border.c 20 Aug 2006 04:48:27 -0000 1.527 @@ -473,6 +473,7 @@ focus_stack = evas_list_append(focus_stack, bd); + bd->pointer = e_pointer_window_new(bd->win, 0); return bd; } @@ -2973,6 +2974,7 @@ static void _e_border_free(E_Border *bd) { + e_object_del(E_OBJECT(bd->pointer)); if (bd->focused) { if (e_config->focus_revert_on_hide_or_close) @@ -3189,8 +3191,6 @@ ecore_event_add(E_EVENT_BORDER_REMOVE, ev, _e_border_event_border_remove_free, NULL); } - /* remove all pointers for this win. */ - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, NULL); e_container_border_remove(bd); if (bd->parent) { @@ -6981,28 +6981,28 @@ switch (bd->resize_mode) { case RESIZE_TL: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_tl"); + e_pointer_type_push(bd->pointer, bd, "resize_tl"); break; case RESIZE_T: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_t"); + e_pointer_type_push(bd->pointer, bd, "resize_t"); break; case RESIZE_TR: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_tr"); + e_pointer_type_push(bd->pointer, bd, "resize_tr"); break; case RESIZE_R: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_r"); + e_pointer_type_push(bd->pointer, bd, "resize_r"); break; case RESIZE_BR: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_br"); + e_pointer_type_push(bd->pointer, bd, "resize_br"); break; case RESIZE_B: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_b"); + e_pointer_type_push(bd->pointer, bd, "resize_b"); break; case RESIZE_BL: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_bl"); + e_pointer_type_push(bd->pointer, bd, "resize_bl"); break; case RESIZE_L: - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_l"); + e_pointer_type_push(bd->pointer, bd, "resize_l"); break; } } @@ -7013,28 +7013,28 @@ switch (bd->resize_mode) { case RESIZE_TL: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_tl"); + e_pointer_type_pop(bd->pointer, bd, "resize_tl"); break; case RESIZE_T: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_t"); + e_pointer_type_pop(bd->pointer, bd, "resize_t"); break; case RESIZE_TR: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_tr"); + e_pointer_type_pop(bd->pointer, bd, "resize_tr"); break; case RESIZE_R: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_r"); + e_pointer_type_pop(bd->pointer, bd, "resize_r"); break; case RESIZE_BR: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_br"); + e_pointer_type_pop(bd->pointer, bd, "resize_br"); break; case RESIZE_B: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_b"); + e_pointer_type_pop(bd->pointer, bd, "resize_b"); break; case RESIZE_BL: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_bl"); + e_pointer_type_pop(bd->pointer, bd, "resize_bl"); break; case RESIZE_L: - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_l"); + e_pointer_type_pop(bd->pointer, bd, "resize_l"); break; } } @@ -7042,11 +7042,11 @@ static void _e_border_pointer_move_begin(E_Border *bd) { - e_pointer_type_push(bd->zone->container->manager->pointer, bd, "move"); + e_pointer_type_push(bd->pointer, bd, "move"); } static void _e_border_pointer_move_end(E_Border *bd) { - e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "move"); + e_pointer_type_pop(bd->pointer, bd, "move"); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.147 retrieving revision 1.148 diff -u -3 -r1.147 -r1.148 --- e_border.h 7 Aug 2006 20:25:34 -0000 1.147 +++ e_border.h 20 Aug 2006 04:48:27 -0000 1.148 @@ -444,6 +444,7 @@ Evas_List *transients; E_App *app; + E_Pointer *pointer; }; struct _E_Border_Pending_Move_Resize =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.191 retrieving revision 1.192 diff -u -3 -r1.191 -r1.192 --- e_config.c 15 Aug 2006 06:59:55 -0000 1.191 +++ e_config.c 20 Aug 2006 04:48:27 -0000 1.192 @@ -857,9 +857,6 @@ CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "Tab", E_BINDING_MODIFIER_SHIFT | E_BINDING_MODIFIER_ALT, 0, "winlist", "prev"); - CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "g", - E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0, - "edit_mode_toggle", NULL); CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "End", E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0, "restart", NULL); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_container.c,v retrieving revision 1.105 retrieving revision 1.106 diff -u -3 -r1.105 -r1.106 --- e_container.c 18 Aug 2006 14:48:22 -0000 1.105 +++ e_container.c 20 Aug 2006 04:48:27 -0000 1.106 @@ -174,8 +174,6 @@ { zone = e_zone_new(con, 0, 0, 0, con->w, con->h); } - con->gadman = e_gadman_new(con); - return con; } @@ -965,7 +963,6 @@ l = l->next; e_object_del(E_OBJECT(tmp->data)); } - if (con->gadman) e_object_del(E_OBJECT(con->gadman)); con->manager->containers = evas_list_remove(con->manager->containers, con); e_canvas_del(con->bg_ecore_evas); ecore_evas_free(con->bg_ecore_evas); @@ -1150,7 +1147,6 @@ ev->container = con; e_object_ref(E_OBJECT(con)); - e_gadman_all_save(con->gadman); e_xinerama_update(); screens = (Evas_List *)e_xinerama_screens_get(); if (screens) @@ -1185,8 +1181,6 @@ e_zone_move_resize(zone, 0, 0, con->w, con->h); e_shelf_zone_move_resize_handle(zone); } - - e_gadman_container_resize(con->gadman); ecore_event_add(E_EVENT_CONTAINER_RESIZE, ev, _e_container_event_container_resize_free, NULL); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_container.h,v retrieving revision 1.34 retrieving revision 1.35 diff -u -3 -r1.34 -r1.35 --- e_container.h 8 Aug 2006 01:34:49 -0000 1.34 +++ e_container.h 20 Aug 2006 04:48:27 -0000 1.35 @@ -35,7 +35,6 @@ int x, y, w, h; char visible : 1; E_Manager *manager; - E_Gadman *gadman; unsigned int num; const char *name; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_includes.h,v retrieving revision 1.118 retrieving revision 1.119 diff -u -3 -r1.118 -r1.119 --- e_includes.h 20 Aug 2006 03:51:54 -0000 1.118 +++ e_includes.h 20 Aug 2006 04:48:27 -0000 1.119 @@ -31,7 +31,6 @@ #include "e_resist.h" #include "e_startup.h" #include "e_hints.h" -#include "e_gadman.h" #include "e_signals.h" #include "e_xinerama.h" #include "e_table.h" =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_init.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -3 -r1.35 -r1.36 --- e_init.c 5 Jun 2006 03:16:16 -0000 1.35 +++ e_init.c 20 Aug 2006 04:48:27 -0000 1.36 @@ -50,7 +50,7 @@ ecore_evas_name_class_set(_e_init_ecore_evas, "E", "Init_Window"); ecore_evas_title_set(_e_init_ecore_evas, "Enlightenment Init"); - _e_init_pointer = e_pointer_window_new(_e_init_win); + _e_init_pointer = e_pointer_window_new(_e_init_win, 1); ecore_evas_raise(_e_init_ecore_evas); ecore_evas_show(_e_init_ecore_evas); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_cursor.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_int_config_cursor.c 14 Aug 2006 15:22:45 -0000 1.9 +++ e_int_config_cursor.c 20 Aug 2006 04:48:27 -0000 1.10 @@ -79,7 +79,7 @@ E_Manager *man; man = l->data; if (man->pointer) e_object_del(E_OBJECT(man->pointer)); - man->pointer = e_pointer_window_new(man->root); + man->pointer = e_pointer_window_new(man->root, 1); } } return 1; @@ -128,7 +128,7 @@ E_Manager *man; man = l->data; if (man->pointer) e_object_del(E_OBJECT(man->pointer)); - man->pointer = e_pointer_window_new(man->root); + man->pointer = e_pointer_window_new(man->root, 1); } } return 1; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_ipc_handlers.h,v retrieving revision 1.133 retrieving revision 1.134 diff -u -3 -r1.133 -r1.134 --- e_ipc_handlers.h 10 Aug 2006 05:01:07 -0000 1.133 +++ e_ipc_handlers.h 20 Aug 2006 04:48:27 -0000 1.134 @@ -5354,7 +5354,7 @@ E_Manager *man; man = ml->data; if (man->pointer) e_object_del(E_OBJECT(man->pointer)); - man->pointer = e_pointer_window_new(man->root); + man->pointer = e_pointer_window_new(man->root, 1); } SAVE; END_INT; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.175 retrieving revision 1.176 diff -u -3 -r1.175 -r1.176 --- e_main.c 14 Aug 2006 21:56:13 -0000 1.175 +++ e_main.c 20 Aug 2006 04:48:27 -0000 1.176 @@ -907,7 +907,6 @@ if (!e_container_init()) return 0; if (!e_zone_init()) return 0; if (!e_desk_init()) return 0; - if (!e_gadman_init()) return 0; if (!e_menu_init()) return 0; if (!e_exehist_init()) return 0; @@ -971,7 +970,6 @@ e_focus_shutdown(); e_exehist_shutdown(); e_menu_shutdown(); - e_gadman_shutdown(); e_desk_shutdown(); e_zone_shutdown(); e_container_shutdown(); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -3 -r1.53 -r1.54 --- e_manager.c 12 May 2006 15:07:39 -0000 1.53 +++ e_manager.c 20 Aug 2006 04:48:27 -0000 1.54 @@ -148,7 +148,7 @@ h = ecore_event_handler_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, _e_manager_cb_screensaver_notify, man); if (h) man->handlers = evas_list_append(man->handlers, h); - man->pointer = e_pointer_window_new(man->root); + man->pointer = e_pointer_window_new(man->root, 1); return man; } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_maximize.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- e_maximize.c 8 Aug 2006 00:00:41 -0000 1.14 +++ e_maximize.c 20 Aug 2006 04:48:27 -0000 1.15 @@ -130,14 +130,6 @@ Evas_List *l, *rects = NULL; E_Maximize_Rect *r; - for (l = bd->zone->container->gadman->clients; l; l = l->next) - { - E_Gadman_Client *gmc; - - gmc = l->data; - if ((gmc->zone != bd->zone)) continue; - OBSTACLE(gmc->x, gmc->y, gmc->x + gmc->w, gmc->y + gmc->h); - } for (l = e_shelf_list(); l; l = l->next) { E_Shelf *es; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_place.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- e_place.c 8 Jun 2006 19:05:41 -0000 1.22 +++ e_place.c 20 Aug 2006 04:48:27 -0000 1.23 @@ -189,66 +189,6 @@ { Evas_List *l; - for (l = zone->container->gadman->clients; l; l = l->next) - { - E_Gadman_Client *gmc; - int bx, by, bw, bh; - - gmc = l->data; - if ((gmc->zone != zone)) continue; - - bx = gmc->x; - by = gmc->y; - bw = gmc->w; - bh = gmc->h; - if (E_INTERSECTS(bx, by, bw, bh, 0, 0, zw, zh)) - { - if ((bx > 0) && (bx <= zw) && (!u_x[bx])) - { - a_w++; - if (a_w > a_alloc_w) - { - a_alloc_w += 32; - E_REALLOC(a_x, int, a_alloc_w); - } - a_x[a_w - 1] = bx; - u_x[bx] = 1; - } - if (((bx + bw) > 0) && ((bx + bw) <= zw) && (!u_x[bx + bw])) - { - a_w++; - if (a_w > a_alloc_w) - { - a_alloc_w += 32; - E_REALLOC(a_x, int, a_alloc_w); - } - a_x[a_w - 1] = bx + bw; - u_x[bx + bw] = 1; - } - if ((by > 0) && (by <= zh) && (!u_y[by])) - { - a_h++; - if (a_h > a_alloc_h) - { - a_alloc_h += 32; - E_REALLOC(a_y, int, a_alloc_h); - } - a_y[a_h - 1] = by; - u_y[by] = 1; - } - if (((by + bh) > 0) && ((by + bh) <= zh) && (!u_y[by + bh])) - { - a_h++; - if (a_h > a_alloc_h) - { - a_alloc_h += 32; - E_REALLOC(a_y, int, a_alloc_h); - } - a_y[a_h - 1] = by + bh; - u_y[by + bh] = 1; - } - } - } for (l = e_shelf_list(); l; l = l->next) { E_Shelf *es; =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_pointer.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- e_pointer.c 2 Mar 2006 12:03:48 -0000 1.25 +++ e_pointer.c 20 Aug 2006 04:48:27 -0000 1.26 @@ -20,6 +20,8 @@ static Evas_List *_e_pointers = NULL; +static void _e_pointer_canvas_add(E_Pointer *p); +static void _e_pointer_canvas_del(E_Pointer *p); static void _e_pointer_cb_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info); static void _e_pointer_free(E_Pointer *p); static void _e_pointer_stack_free(E_Pointer_Stack *elem); @@ -27,109 +29,29 @@ /* externally accessible functions */ EAPI E_Pointer * -e_pointer_window_new(Ecore_X_Window win) +e_pointer_window_new(Ecore_X_Window win, int filled) { E_Pointer *p = NULL; + p = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_free); + if (!p) return NULL; + if (e_config->use_e_cursor) { - Evas_Engine_Info_Buffer *einfo; - Evas_Object *o; - int rmethod; - - rmethod = evas_render_method_lookup("buffer"); - if (!rmethod) return NULL; - - p = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_free); - if (!p) return NULL; p->e_cursor = 1; p->win = win; - - p->w = e_config->cursor_size; - p->h = e_config->cursor_size; - - /* create evas */ - p->evas = evas_new(); - if (!p->evas) - { - e_object_del(E_OBJECT(p)); - return NULL; - } - evas_output_method_set(p->evas, rmethod); - evas_output_size_set(p->evas, p->w, p->h); - evas_output_viewport_set(p->evas, 0, 0, p->w, p->h); - - p->pixels = malloc(p->w * p->h * sizeof(int)); - if (!p->pixels) - { - e_object_del(E_OBJECT(p)); - return NULL; - } - - einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(p->evas); - if (!einfo) - { - e_object_del(E_OBJECT(p)); - return NULL; - } - einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; - einfo->info.dest_buffer = p->pixels; - einfo->info.dest_buffer_row_bytes = p->w * sizeof(int); - einfo->info.use_color_key = 0; - einfo->info.alpha_threshold = 0; - einfo->info.func.new_update_region = NULL; - einfo->info.func.free_update_region = NULL; - evas_engine_info_set(p->evas, (Evas_Engine_Info *)einfo); - - /* set the pointer edje */ - o = edje_object_add(p->evas); - if (!o) - { - e_object_del(E_OBJECT(p)); - return NULL; - } - p->pointer_object = o; - - /* Create the hotspot object */ - o = evas_object_rectangle_add(p->evas); - if (!o) - { - e_object_del(E_OBJECT(p)); - return NULL; - } - p->hot_object = o; - evas_object_event_callback_add(o, - EVAS_CALLBACK_MOVE, - _e_pointer_cb_move, p); - /* Init the cursor object */ - if (ecore_x_cursor_color_supported_get()) - p->color = 1; - else - p->color = 0; - - /* init edje */ - evas_object_move(p->pointer_object, 0, 0); - evas_object_resize(p->pointer_object, p->w, p->h); - evas_object_show(p->pointer_object); - - ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4); - e_pointer_type_push(p, p, "default"); - - _e_pointers = evas_list_append(_e_pointers, p); + if (ecore_x_cursor_color_supported_get()) p->color = 1; + else p->color = 0; } else { - p = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_free); - if (!p) return NULL; p->e_cursor = 0; p->win = win; - - ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4); - e_pointer_type_push(p, p, "default"); - - _e_pointers = evas_list_append(_e_pointers, p); } + ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4); + if (filled) e_pointer_type_push(p, p, "default"); + _e_pointers = evas_list_append(_e_pointers, p); return p; } @@ -182,11 +104,15 @@ E_Pointer_Stack *stack; p->e_cursor = e_config->use_e_cursor; + if (p->e_cursor) + { + if (!p->evas) _e_pointer_canvas_add(p); + } + if (!_e_pointer_type_set(p, type)) { p->e_cursor = 0; - if (!_e_pointer_type_set(p, type)) - return; + if (!_e_pointer_type_set(p, type)) return; } if (p->type) evas_stringshare_del(p->type); @@ -224,7 +150,11 @@ if (!p->stack) { - printf("BUG: No pointer on the stack!\n"); + if (p->e_cursor) + { + if (p->evas) _e_pointer_canvas_del(p); + } + ecore_x_window_cursor_set(p->win, 0); return; } @@ -267,6 +197,7 @@ p = l->data; if (!p->e_cursor) continue; + if (!p->evas) continue; updates = evas_render_updates(p->evas); if ((updates) || (p->hot.update)) @@ -284,6 +215,80 @@ /* local subsystem functions */ static void +_e_pointer_canvas_add(E_Pointer *p) +{ + Evas_Engine_Info_Buffer *einfo; + Evas_Object *o; + int rmethod; + + p->w = e_config->cursor_size; + p->h = e_config->cursor_size; + + /* create evas */ + p->evas = evas_new(); + if (!p->evas) + { + e_object_del(E_OBJECT(p)); + return; + } + rmethod = evas_render_method_lookup("buffer"); + evas_output_method_set(p->evas, rmethod); + evas_output_size_set(p->evas, p->w, p->h); + evas_output_viewport_set(p->evas, 0, 0, p->w, p->h); + + p->pixels = malloc(p->w * p->h * sizeof(int)); + if (!p->pixels) + { + evas_free(p->evas); + p->evas = NULL; + return; + } + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(p->evas); + if (!einfo) + { + free(p->pixels); + p->pixels = NULL; + evas_free(p->evas); + p->evas = NULL; + return; + } + einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; + einfo->info.dest_buffer = p->pixels; + einfo->info.dest_buffer_row_bytes = p->w * sizeof(int); + einfo->info.use_color_key = 0; + einfo->info.alpha_threshold = 0; + einfo->info.func.new_update_region = NULL; + einfo->info.func.free_update_region = NULL; + evas_engine_info_set(p->evas, (Evas_Engine_Info *)einfo); + + /* set the pointer edje */ + o = edje_object_add(p->evas); + p->pointer_object = o; + /* Create the hotspot object */ + o = evas_object_rectangle_add(p->evas); + p->hot_object = o; + evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, + _e_pointer_cb_move, p); + /* init edje */ + evas_object_move(p->pointer_object, 0, 0); + evas_object_resize(p->pointer_object, p->w, p->h); + evas_object_show(p->pointer_object); +} + +static void +_e_pointer_canvas_del(E_Pointer *p) +{ + if (p->pointer_object) evas_object_del(p->pointer_object); + if (p->hot_object) evas_object_del(p->hot_object); + if (p->evas) evas_free(p->evas); + if (p->pixels) free(p->pixels); + p->pointer_object = NULL; + p->hot_object = NULL; + p->evas = NULL; + p->pixels = NULL; +} + +static void _e_pointer_cb_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) { E_Pointer *p; @@ -305,12 +310,8 @@ { _e_pointers = evas_list_remove(_e_pointers, p); - /* free evas */ - if (p->pointer_object) evas_object_del(p->pointer_object); - if (p->hot_object) evas_object_del(p->hot_object); - if (p->evas) evas_free(p->evas); - if (p->pixels) free(p->pixels); - + _e_pointer_canvas_del(p); + while (p->stack) { _e_pointer_stack_free(p->stack->data); @@ -324,8 +325,7 @@ static void _e_pointer_stack_free(E_Pointer_Stack *elem) { - if (elem->type) - evas_stringshare_del(elem->type); + if (elem->type) evas_stringshare_del(elem->type); free(elem); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_pointer.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- e_pointer.h 2 Mar 2006 12:03:48 -0000 1.13 +++ e_pointer.h 20 Aug 2006 04:48:27 -0000 1.14 @@ -35,7 +35,7 @@ } hot; }; -EAPI E_Pointer *e_pointer_window_new(Ecore_X_Window win); +EAPI E_Pointer *e_pointer_window_new(Ecore_X_Window win, int filled); EAPI void e_pointer_type_push(E_Pointer *p, void *obj, const char *type); EAPI void e_pointer_type_pop(E_Pointer *p, void *obj, const char *type); EAPI void e_pointers_size_set(int size); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_resist.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- e_resist.c 20 Apr 2006 11:30:24 -0000 1.14 +++ e_resist.c 20 Aug 2006 04:48:27 -0000 1.15 @@ -85,13 +85,6 @@ } e_container_border_list_free(bl); - for (l = con->gadman->clients; l; l = l->next) - { - E_Gadman_Client *gmc; - - gmc = l->data; - OBSTACLE(gmc->x, gmc->y, gmc->w, gmc->h, e_config->gadget_resist); - } for (l = e_shelf_list(); l; l = l->next) { E_Shelf *es; @@ -133,27 +126,6 @@ *rx = x; *ry = y; return 0; - } - - for (l = con->gadman->clients; l; l = l->next) - { - E_Gadman_Client *gmc; - int ok; - - gmc = l->data; - ok = 1; - for (ll = skiplist; ll; ll = ll->next) - { - if (ll->data == gmc) - { - ok = 0; - break; - } - } - if (ok) - { - OBSTACLE(gmc->x, gmc->y, gmc->w, gmc->h, e_config->gadget_resist); - } } for (l = e_shelf_list(); l; l = l->next) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_test.c,v retrieving revision 1.67 retrieving revision 1.68 diff -u -3 -r1.67 -r1.68 --- e_test.c 15 Aug 2006 00:54:32 -0000 1.67 +++ e_test.c 20 Aug 2006 04:48:27 -0000 1.68 @@ -4,7 +4,6 @@ #include "e.h" static void _e_test_internal(E_Container *con); -static void _cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change); EAPI void e_test(void) @@ -28,149 +27,6 @@ } #if 0 -/* local subsystem functions */ -typedef struct _Dat Dat; -struct _Dat -{ - Evas_Object *table; - Evas_List *items; -}; - -static void -_e_test_internal(E_Container *con) -{ - E_Gadman_Client *gmc; - Dat *dat; - Evas_Object *o; - int i, j; - - dat = calloc(1, sizeof(Dat)); - dat->table = e_table_add(con->bg_evas); - e_table_freeze(dat->table); - e_table_homogenous_set(dat->table, 1); - for (j = 0; j < 5; j++) - { - for (i = 0; i < 5; i++) - { - o = evas_object_rectangle_add(con->bg_evas); - dat->items = evas_list_append(dat->items, o); - evas_object_color_set(o, i * 50, j * 50, 100, 100); - e_table_pack(dat->table, o, i, j, 1, 1); - e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1); - evas_object_show(o); - } - } - e_table_thaw(dat->table); - evas_object_show(dat->table); - - gmc = e_gadman_client_new(con->gadman); - e_gadman_client_domain_set(gmc, "TEST", 0); - e_gadman_client_policy_set(gmc, - E_GADMAN_POLICY_ANYWHERE | - E_GADMAN_POLICY_HMOVE | - E_GADMAN_POLICY_VMOVE | - E_GADMAN_POLICY_HSIZE | - E_GADMAN_POLICY_VSIZE); - e_gadman_client_min_size_set(gmc, 10, 10); - e_gadman_client_auto_size_set(gmc, 128, 128); - e_gadman_client_align_set(gmc, 0.5, 0.5); - e_gadman_client_resize(gmc, 128, 128); - e_gadman_client_change_func_set(gmc, _cb_change, dat); - e_gadman_client_load(gmc); -} - -static void -_cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change) -{ - Dat *dat; - Evas_Coord x, y, w, h; - - dat = data; - switch (change) - { - case E_GADMAN_CHANGE_MOVE_RESIZE: - e_gadman_client_geometry_get(gmc, &x, &y, &w, &h); - evas_object_move(dat->table, x, y); - evas_object_resize(dat->table, w, h); - break; - default: - break; - } -} -#elif 0 -typedef struct _Dat Dat; -struct _Dat -{ - Evas_Object *layout; - Evas_List *items; -}; - -static void -_e_test_internal(E_Container *con) -{ - E_Gadman_Client *gmc; - Dat *dat; - Evas_Object *o; - int i; - - dat = calloc(1, sizeof(Dat)); - dat->layout = e_layout_add(con->bg_evas); - e_layout_freeze(dat->layout); - e_layout_virtual_size_set(dat->layout, 800, 600); - for (i = 0; i < 10; i++) - { - Evas_Coord x, y, w, h; - - o = evas_object_rectangle_add(con->bg_evas); - dat->items = evas_list_append(dat->items, o); - evas_object_color_set(o, i * 25, 255 - (i * 25), 100, 100); - e_layout_pack(dat->layout, o); - w = rand() % 800; - h = rand() % 600; - x = rand() % (800 - w); - y = rand() % (600 - h); - e_layout_child_move(o, x, y); - e_layout_child_resize(o, w, h); - evas_object_show(o); - } - e_layout_thaw(dat->layout); - evas_object_show(dat->layout); - - gmc = e_gadman_client_new(con->gadman); - e_gadman_client_domain_set(gmc, "TEST", 0); - e_gadman_client_policy_set(gmc, - E_GADMAN_POLICY_ANYWHERE | - E_GADMAN_POLICY_HMOVE | - E_GADMAN_POLICY_VMOVE | - E_GADMAN_POLICY_HSIZE | - E_GADMAN_POLICY_VSIZE); - e_gadman_client_min_size_set(gmc, 10, 10); - e_gadman_client_auto_size_set(gmc, 128, 128); - e_gadman_client_align_set(gmc, 0.5, 0.5); - e_gadman_client_resize(gmc, 128, 128); - e_gadman_client_change_func_set(gmc, _cb_change, dat); - e_gadman_client_load(gmc); -} - -static void -_cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change) -{ - Dat *dat; - Evas_Coord x, y, w, h; - - dat = data; - switch (change) - { - case E_GADMAN_CHANGE_MOVE_RESIZE: - e_gadman_client_geometry_get(gmc, &x, &y, &w, &h); - evas_object_move(dat->layout, x, y); - evas_object_resize(dat->layout, w, h); - break; - default: - break; - } -} -#elif 0 static int _e_test_timer(void *data) { @@ -835,10 +691,5 @@ static void _e_test_internal(E_Container *con) { -} - -static void -_cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change) -{ } #endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_win.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- e_win.c 20 Aug 2006 03:39:48 -0000 1.19 +++ e_win.c 20 Aug 2006 04:48:27 -0000 1.20 @@ -75,6 +75,8 @@ win->min_aspect = 0.0; win->max_aspect = 0.0; wins = evas_list_append(wins, win); + + win->pointer = e_pointer_window_new(win->evas_win, 0); return win; } @@ -104,7 +106,6 @@ E_OBJECT_CHECK(win); E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE); if (win->border) e_border_hide(win->border, 1); - e_pointer_type_pop(win->container->manager->pointer, win, NULL); } EAPI void @@ -368,6 +369,7 @@ static void _e_win_free(E_Win *win) { + e_object_del(E_OBJECT(win->pointer)); e_canvas_del(win->ecore_evas); ecore_evas_free(win->ecore_evas); if (win->border) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_win.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_win.h 20 Aug 2006 03:39:48 -0000 1.8 +++ e_win.h 20 Aug 2006 04:48:27 -0000 1.9 @@ -35,6 +35,8 @@ unsigned char centered : 1; unsigned char dialog : 1; } state; + + E_Pointer *pointer; }; EAPI int e_win_init (void); ------------------------------------------------------------------------- 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