diff --git a/TODO b/TODO index 3a672057f..3484c714a 100644 --- a/TODO +++ b/TODO @@ -22,9 +22,6 @@ Some of the things (in very short form) that need to be done to E17... map/unmap event and something else... they still are around in x- just e hides them and never shows them again fullscreen. is this correct? -* BUG: client windows list somehow doesn't unref its list of borders in the - free callback set on it. why? is this callback never called? or is the - data pointer on the menu object null for some reason? * BUG: if you have 2 zones and you fill up zone 2 (right) mostly and then run a big xev (xev -g 1280x1024) that wont fit it gets placed offscreen to the right of zone 2 diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am index 291aa6b5c..7735a259b 100644 --- a/data/themes/Makefile.am +++ b/data/themes/Makefile.am @@ -30,7 +30,8 @@ default_cpufreq.edc \ default_ibox.edc \ default_start.edc \ default_winlist.edc \ -default_transitions.edc +default_transitions.edc \ +default_dialog.edc default.edj: Makefile $(EXTRA_DIST) $(EDJE_CC) $(EDJE_FLAGS) \ diff --git a/data/themes/default.edc b/data/themes/default.edc index 82d849cb3..e7edee240 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -39,5 +39,6 @@ collections { #include "default_start.edc" #include "default_winlist.edc" #include "default_transitions.edc" +#include "default_dialog.edc" } diff --git a/data/themes/default_dialog.edc b/data/themes/default_dialog.edc new file mode 100644 index 000000000..bac73753b --- /dev/null +++ b/data/themes/default_dialog.edc @@ -0,0 +1,253 @@ +images { + image: "e17_menu_bg.png" COMP; + image: "e17_winlist_top.png" COMP; + image: "e17_winlist_bottom.png" COMP; + image: "e17_button2.png" COMP; + image: "e17_button.png" COMP; +} + +group { + name: "widgets/dialog/main"; + parts { + part { + name: "base"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 1 0; + to_y: "base2"; + } + rel2 { + relative: 1.0 1.0; + offset: -2 -2; + } + color: 221 221 221 255; + } + } + part { + name: "base2"; + mouse_events: 0; + description { + state: "default" 0.0; + max: 99999 48; + align: 0.5 0.0; + rel1 { + relative: 0.0 0.0; + offset: 1 1; + } + rel2 { + relative: 1.0 1.0; + offset: -2 -2; + } + image { + normal: "e17_menu_bg.png"; + } + fill { + smooth: 0; + } + } + } + part { + name: "base3"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_bg_border.png"; + border: 1 1 1 1; + middle: 0; + } + fill { + smooth: 0; + } + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + description { + state: "default" 0.0; + align: 0.0 0.5; + color: 0 0 0 0; + rel1 { + relative: 0.0 0.0; + offset: 16 16; + } + rel2 { + relative: 0.0 0.0; + offset: 16 -9; + to_y: "buttons_swallow"; + } + } + } + part { + name: "content_swallow"; + type: SWALLOW; + description { + state: "default" 0.0; + color: 0 0 0 0; + rel1 { + relative: 1.0 0.0; + offset: 8 16; + to_x: "icon_swallow"; + } + rel2 { + relative: 1.0 0.0; + offset: -17 -9; + to_y: "buttons_swallow"; + } + } + } + part { + name: "top"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 1 1; + } + rel2 { + relative: 1.0 0.0; + offset: -2 16; + to_y: "content_swallow"; + } + image { + normal: "e17_winlist_top.png"; + border: 0 0 0 19; + } + fill { + smooth: 0; + } + } + } + part { + name: "bottom"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 1 -3; + to_y: "content_swallow"; + } + rel2 { + relative: 1.0 1.0; + offset: -2 -2; + } + image { + normal: "e17_winlist_bottom.png"; + border: 0 0 4 0; + } + fill { + smooth: 0; + } + } + } + part { + name: "buttons_swallow"; + type: SWALLOW; + description { + state: "default" 0.0; + color: 0 0 0 0; + align: 0.5 1.0; + rel1 { + relative: 0.0 1.0; + offset: 16 -9; + } + rel2 { + relative: 1.0 1.0; + offset: -17 -9; + } + } + } + } +} + +group { + name: "widgets/dialog/button"; + parts { + part { + name: "button_image"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + min: 64 32; + image { + normal: "e17_button.png"; + border: 8 8 8 8; + } + } + description { + state: "clicked" 0.0; + min: 64 32; + image { + normal: "e17_button2.png"; + border: 8 8 8 8; + } + } + } + part { + name: "button_text"; + type: TEXT; + effect: SHADOW; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 6 6; + to: "button_image"; + } + rel2 { + relative: 1.0 1.0; + offset: -7 -7; + to: "button_image"; + } + color: 0 0 0 255; + color3: 255 255 255 128; + text { + text: "OK"; + font: "Edje Vera"; + size: 10; + min: 0 0; + align: 0.5 0.5; + } + } + } + } + programs { + program { + name: "button_click"; + signal: "mouse,down,1"; + source: "button_image"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + } + program { + name: "button_unclick"; + signal: "mouse,up,1"; + source: "button_image"; + action: STATE_SET "default" 0.0; + target: "button_image"; + } + program { + name: "button_unclick2"; + signal: "mouse,clicked"; + source: "button_image"; + action: SIGNAL_EMIT "click" ""; + } + } +} diff --git a/enlightenment.spec b/enlightenment.spec index ba3be9a6b..75aff441a 100644 --- a/enlightenment.spec +++ b/enlightenment.spec @@ -1,6 +1,6 @@ Summary: The Enlightenment window manager Name: enlightenment -Version: 0.17.0_pre10 +Version: 0.16.999.011 Release: NOT_RELEASE_1.%(date '+%Y%m%d') License: BSD Group: User Interface/Desktops @@ -52,16 +52,17 @@ test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT %defattr(-, root, root) %doc AUTHORS COPYING COPYING-PLAIN README %{_bindir}/* +%{_libdir}/libe.so.* %{_libdir}/%{name} %{_datadir}/%{name} +%{_datadir}/locale/* %files devel %defattr(-, root, root) %{_includedir}/enlightenment/*.h -%{_includedir}/E.h +%{_includedir}/E_Lib.h %{_libdir}/libe.a %{_libdir}/libe.la -%{_libdir}/libe.so.0.0.0 - +%{_libdir}/libe.so %changelog diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 2f55f1856..4cc986e58 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -67,7 +67,8 @@ e_grabinput.h \ e_bg.h \ e_remember.h \ e_win.h \ -e_pan.h +e_pan.h \ +e_dialog.h enlightenment_SOURCES = \ e_main.c \ @@ -124,6 +125,7 @@ e_bg.c \ e_remember.c \ e_win.c \ e_pan.c \ +e_dialog.c \ $(ENLIGHTENMENTHEADERS) enlightenment_LDFLAGS = -export-dynamic @e_libs@ @x_libs@ @dlopen_libs@ diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 4e80d25b9..c573ff631 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -490,7 +490,7 @@ e_border_zone_set(E_Border *bd, E_Zone *zone) ev = calloc(1, sizeof(E_Event_Border_Zone_Set)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_zone_set_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_zone_set_event"); ev->zone = zone; e_object_ref(E_OBJECT(zone)); ecore_event_add(E_EVENT_BORDER_ZONE_SET, ev, _e_border_event_border_zone_set_free, NULL); @@ -516,7 +516,7 @@ e_border_desk_set(E_Border *bd, E_Desk *desk) ev = calloc(1, sizeof(E_Event_Border_Desk_Set)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_desk_set_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_desk_set_event"); ev->desk = desk; e_object_ref(E_OBJECT(desk)); ecore_event_add(E_EVENT_BORDER_DESK_SET, ev, _e_border_event_border_desk_set_free, NULL); @@ -545,7 +545,7 @@ e_border_show(E_Border *bd) ev = calloc(1, sizeof(E_Event_Border_Show)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_show_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_show_event"); ecore_event_add(E_EVENT_BORDER_SHOW, ev, _e_border_event_border_show_free, NULL); } @@ -598,7 +598,7 @@ e_border_hide(E_Border *bd, int manage) ev = calloc(1, sizeof(E_Event_Border_Hide)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_hide_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_hide_event"); ecore_event_add(E_EVENT_BORDER_HIDE, ev, _e_border_event_border_hide_free, NULL); } } @@ -647,7 +647,7 @@ e_border_move(E_Border *bd, int x, int y) ev = calloc(1, sizeof(E_Event_Border_Move)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); ecore_event_add(E_EVENT_BORDER_MOVE, ev, _e_border_event_border_move_free, NULL); } @@ -693,7 +693,7 @@ e_border_resize(E_Border *bd, int w, int h) ev = calloc(1, sizeof(E_Event_Border_Resize)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); } @@ -748,13 +748,13 @@ e_border_move_resize(E_Border *bd, int x, int y, int w, int h) mev = calloc(1, sizeof(E_Event_Border_Move)); mev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_move_event"); ecore_event_add(E_EVENT_BORDER_MOVE, mev, _e_border_event_border_move_free, NULL); rev = calloc(1, sizeof(E_Event_Border_Resize)); rev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); ecore_event_add(E_EVENT_BORDER_RESIZE, rev, _e_border_event_border_resize_free, NULL); } @@ -772,7 +772,7 @@ e_border_raise(E_Border *bd) ev = calloc(1, sizeof(E_Event_Border_Raise)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_raise_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_raise_event"); ev->above = NULL; ecore_event_add(E_EVENT_BORDER_RAISE, ev, _e_border_event_border_raise_free, NULL); } @@ -792,7 +792,7 @@ e_border_lower(E_Border *bd) ev = calloc(1, sizeof(E_Event_Border_Lower)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_lower_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_lower_event"); ev->below = NULL; ecore_event_add(E_EVENT_BORDER_LOWER, ev, _e_border_event_border_lower_free, NULL); } @@ -812,10 +812,10 @@ e_border_stack_above(E_Border *bd, E_Border *above) ev = calloc(1, sizeof(E_Event_Border_Raise)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_raise_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_raise_event"); ev->above = above; e_object_ref(E_OBJECT(above)); - e_object_breadcrumb_add(E_OBJECT(above), "border_raise_event.above"); +// e_object_breadcrumb_add(E_OBJECT(above), "border_raise_event.above"); ecore_event_add(E_EVENT_BORDER_RAISE, ev, _e_border_event_border_raise_free, NULL); } } @@ -833,10 +833,10 @@ e_border_stack_below(E_Border *bd, E_Border *below) ev = calloc(1, sizeof(E_Event_Border_Lower)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_lower_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_lower_event"); ev->below = below; e_object_ref(E_OBJECT(below)); - e_object_breadcrumb_add(E_OBJECT(below), "border_lower_event.below"); +// e_object_breadcrumb_add(E_OBJECT(below), "border_lower_event.below"); ecore_event_add(E_EVENT_BORDER_LOWER, ev, _e_border_event_border_lower_free, NULL); } } @@ -1012,7 +1012,7 @@ e_border_shade(E_Border *bd, E_Direction dir) /* The resize is added in the animator when animation complete */ /* For non-animated, we add it immediately with the new size */ e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); } @@ -1101,7 +1101,7 @@ e_border_unshade(E_Border *bd, E_Direction dir) /* The resize is added in the animator when animation complete */ /* For non-animated, we add it immediately with the new size */ e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); } @@ -1384,7 +1384,7 @@ e_border_iconify(E_Border *bd) ev = E_NEW(E_Event_Border_Iconify, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_iconify_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_iconify_event"); ecore_event_add(E_EVENT_BORDER_ICONIFY, ev, _e_border_event_border_iconify_free, NULL); } @@ -1413,7 +1413,7 @@ e_border_uniconify(E_Border *bd) ev = E_NEW(E_Event_Border_Uniconify, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_uniconify_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_uniconify_event"); ecore_event_add(E_EVENT_BORDER_UNICONIFY, ev, _e_border_event_border_uniconify_free, NULL); } @@ -1433,7 +1433,7 @@ e_border_stick(E_Border *bd) ev = E_NEW(E_Event_Border_Stick, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_stick_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_stick_event"); ecore_event_add(E_EVENT_BORDER_STICK, ev, _e_border_event_border_stick_free, NULL); } @@ -1454,7 +1454,7 @@ e_border_unstick(E_Border *bd) ev = E_NEW(E_Event_Border_Unstick, 1); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_unstick_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_unstick_event"); ecore_event_add(E_EVENT_BORDER_UNSTICK, ev, _e_border_event_border_unstick_free, NULL); } @@ -1614,13 +1614,11 @@ e_border_act_move_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev) void e_border_act_move_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev) { - if (bd->moving) - { - e_zone_flip_win_restore(); - bd->moving = 0; - _e_border_move_end(bd); - e_zone_flip_coords_handle(bd->zone, -1, -1); - } + if (!bd->moving) return; + bd->moving = 0; + e_zone_flip_win_restore(); + _e_border_move_end(bd); + e_zone_flip_coords_handle(bd->zone, -1, -1); } void @@ -1877,11 +1875,7 @@ e_border_ping(E_Border *bd) void e_border_move_cancel(void) { - if (move) - { - move->moving = 0; - _e_border_move_end(move); - } + if (move) _e_border_move_end(move); } void @@ -1933,11 +1927,13 @@ _e_border_free(E_Border *bd) IF_FREE(bd->shape_rects); bd->shape_rects_num = 0; +/* if (bd->dangling_ref_check) { ecore_timer_del(bd->dangling_ref_check); bd->dangling_ref_check = NULL; } + */ if (bd->kill_timer) { ecore_timer_del(bd->kill_timer); @@ -2017,6 +2013,7 @@ _e_border_free(E_Border *bd) free(bd); } +/* static int _e_border_del_dangling_ref_check(void *data) { @@ -2028,18 +2025,21 @@ _e_border_del_dangling_ref_check(void *data) printf("%p, %i, \"%s\" [\"%s\" \"%s\"]\n", bd, e_object_ref_get(E_OBJECT(bd)), bd->client.icccm.title, bd->client.icccm.name, bd->client.icccm.class); - e_object_breadcrumb_debug(E_OBJECT(bd)); +// e_object_breadcrumb_debug(E_OBJECT(bd)); printf("---\n"); return 1; } +*/ static void _e_border_del(E_Border *bd) { E_Event_Border_Remove *ev; - + +/* if (!bd->dangling_ref_check) bd->dangling_ref_check = ecore_timer_add(1.0, _e_border_del_dangling_ref_check, bd); + */ if (!bd->already_unparented) { ecore_x_window_reparent(bd->client.win, @@ -2055,7 +2055,7 @@ _e_border_del(E_Border *bd) /* FIXME Don't ref this during shutdown. And the event is pointless * during shutdown.. */ e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_remove_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_remove_event"); ecore_event_add(E_EVENT_BORDER_REMOVE, ev, _e_border_event_border_remove_free, NULL); } @@ -3995,7 +3995,7 @@ _e_border_eval(E_Border *bd) ev = calloc(1, sizeof(E_Event_Border_Icon_Change)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_icon_change_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_icon_change_event"); ecore_event_add(E_EVENT_BORDER_ICON_CHANGE, ev, _e_border_event_border_icon_change_free, NULL); } @@ -4467,7 +4467,7 @@ _e_border_eval(E_Border *bd) ev = calloc(1, sizeof(E_Event_Border_Add)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event"); ecore_event_add(E_EVENT_BORDER_ADD, ev, _e_border_event_border_add_free, NULL); /* Recreate state */ @@ -5081,7 +5081,7 @@ _e_border_shade_animator(void *data) ev = calloc(1, sizeof(E_Event_Border_Resize)); ev->border = bd; e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); +// e_object_breadcrumb_add(E_OBJECT(bd), "border_resize_event"); ecore_event_add(E_EVENT_BORDER_RESIZE, ev, _e_border_event_border_resize_free, NULL); return 0; } @@ -6187,7 +6187,7 @@ _e_border_event_border_resize_free(void *data, void *ev) E_Event_Border_Resize *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_resize_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_resize_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6198,7 +6198,7 @@ _e_border_event_border_move_free(void *data, void *ev) E_Event_Border_Move *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_move_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_move_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6209,7 +6209,7 @@ _e_border_event_border_add_free(void *data, void *ev) E_Event_Border_Add *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_add_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_add_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6220,7 +6220,7 @@ _e_border_event_border_remove_free(void *data, void *ev) E_Event_Border_Remove *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_remove_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_remove_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6231,7 +6231,7 @@ _e_border_event_border_show_free(void *data, void *ev) E_Event_Border_Show *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_show_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_show_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6242,7 +6242,7 @@ _e_border_event_border_hide_free(void *data, void *ev) E_Event_Border_Hide *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_hide_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_hide_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6253,7 +6253,7 @@ _e_border_event_border_iconify_free(void *data, void *ev) E_Event_Border_Iconify *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_iconify_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_iconify_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6264,7 +6264,7 @@ _e_border_event_border_uniconify_free(void *data, void *ev) E_Event_Border_Uniconify *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_uniconify_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_uniconify_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6275,7 +6275,7 @@ _e_border_event_border_stick_free(void *data, void *ev) E_Event_Border_Stick *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_stick_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_stick_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6286,7 +6286,7 @@ _e_border_event_border_unstick_free(void *data, void *ev) E_Event_Border_Unstick *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_unstick_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_unstick_event"); e_object_unref(E_OBJECT(e->border)); free(e); } @@ -6297,7 +6297,7 @@ _e_border_event_border_zone_set_free(void *data, void *ev) E_Event_Border_Zone_Set *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_zone_set_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_zone_set_event"); e_object_unref(E_OBJECT(e->border)); e_object_unref(E_OBJECT(e->zone)); free(e); @@ -6309,7 +6309,7 @@ _e_border_event_border_desk_set_free(void *data, void *ev) E_Event_Border_Desk_Set *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_desk_set_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_desk_set_event"); e_object_unref(E_OBJECT(e->border)); e_object_unref(E_OBJECT(e->desk)); free(e); @@ -6321,11 +6321,11 @@ _e_border_event_border_raise_free(void *data, void *ev) E_Event_Border_Raise *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_raise_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_raise_event"); e_object_unref(E_OBJECT(e->border)); if (e->above) { - e_object_breadcrumb_del(E_OBJECT(e->above), "border_raise_event.above"); +// e_object_breadcrumb_del(E_OBJECT(e->above), "border_raise_event.above"); e_object_unref(E_OBJECT(e->above)); } free(e); @@ -6337,11 +6337,11 @@ _e_border_event_border_lower_free(void *data, void *ev) E_Event_Border_Lower *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_lower_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_lower_event"); e_object_unref(E_OBJECT(e->border)); if (e->below) { - e_object_breadcrumb_del(E_OBJECT(e->below), "border_lower_event.below"); +// e_object_breadcrumb_del(E_OBJECT(e->below), "border_lower_event.below"); e_object_unref(E_OBJECT(e->below)); } free(e); @@ -6353,7 +6353,7 @@ _e_border_event_border_icon_change_free(void *data, void *ev) E_Event_Border_Icon_Change *e; e = ev; - e_object_breadcrumb_del(E_OBJECT(e->border), "border_icon_change_event"); +// e_object_breadcrumb_del(E_OBJECT(e->border), "border_icon_change_event"); e_object_unref(E_OBJECT(e->border)); free(e); } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index 465c894b1..917436f37 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -371,7 +371,7 @@ struct _E_Border Ecore_X_Rectangle *shape_rects; E_Remember *remember; - Ecore_Timer *dangling_ref_check; +// Ecore_Timer *dangling_ref_check; }; struct _E_Border_Pending_Move_Resize diff --git a/src/bin/e_dialog.c b/src/bin/e_dialog.c new file mode 100644 index 000000000..e3c8a1a61 --- /dev/null +++ b/src/bin/e_dialog.c @@ -0,0 +1,214 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#include "e.h" + +typedef struct _E_Dialog_Button E_Dialog_Button; + +struct _E_Dialog_Button +{ + E_Dialog *dialog; + Evas_Object *obj; + char *label; + char *icon; + void (*func) (void *data, E_Dialog *dia); + void *data; +}; + +/* local subsystem functions */ +static void _e_dialog_free(E_Dialog *dia); +static void _e_dialog_cb_button_clicked(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_dialog_cb_delete(E_Win *win); + +/* local subsystem globals */ + +/* externally accessible functions */ + +E_Dialog * +e_dialog_new(E_Container *con) +{ + E_Dialog *dia; + E_Manager *man; + Evas_Object *o; + + if (!con) + { + man = e_manager_current_get(); + if (!man) return NULL; + con = e_container_current_get(man); + if (!con) con = e_manager_container_number_get(man, 0); + if (!con) return NULL; + } + dia = E_OBJECT_ALLOC(E_Dialog, E_DIALOG_TYPE, _e_dialog_free); + if (!dia) return NULL; + dia->win = e_win_new(con); + if (!dia->win) + { + free(dia); + return NULL; + } + dia->win->data = dia; + e_win_name_class_set(dia->win, "E", "_dialog"); + o = edje_object_add(e_win_evas_get(dia->win)); + dia->bg_object = o; + e_theme_edje_object_set(o, "base/theme/dialog", + "widgets/dialog/main"); + evas_object_move(o, 0, 0); + evas_object_show(o); + + o = evas_object_textblock_add(e_win_evas_get(dia->win)); + dia->text_object = o; + edje_object_part_swallow(dia->bg_object, "content_swallow", o); + evas_object_show(o); + { + char format[1024]; + char *fname; + int fsize; + + fname = (char *)e_font_default_string_get("default", &fsize); + snprintf(format, sizeof(format), + "font='%s' size=%i wrap=word", + fname, fsize); + evas_object_textblock_format_insert(o, format); + evas_object_textblock_format_insert(o, "color=#000"); + evas_object_textblock_format_insert(o, "\n"); + evas_object_textblock_text_insert(o, "Here is some text"); + evas_object_textblock_format_insert(o, "\n"); + evas_object_textblock_text_insert(o, "Here is some more text"); + evas_object_textblock_format_insert(o, "\n"); + evas_object_textblock_text_insert(o, "And even more text on this line to make it really long for testing"); + evas_object_textblock_format_insert(o, "\n"); + evas_object_textblock_text_insert(o, "Short"); + evas_object_textblock_format_insert(o, "\n"); + evas_object_textblock_text_insert(o, "Aaardvaaarks On!"); + evas_object_textblock_format_insert(o, "\n"); + evas_object_textblock_format_insert(o, "\n"); + } + + o = e_box_add(e_win_evas_get(dia->win)); + dia->box_object = o; + e_box_orientation_set(o, 1); + e_box_homogenous_set(o, 1); + e_box_align_set(o, 0.5, 0.5); + edje_object_part_swallow(dia->bg_object, "buttons_swallow", o); + evas_object_show(o); + + return dia; +} + +void +e_dialog_button_add(E_Dialog *dia, char *label, char *icon, void (*func) (void *data, E_Dialog *dia), void *data) +{ + E_Dialog_Button *db; + Evas_Coord mw, mh; + + db = E_NEW(E_Dialog_Button, 1); + db->dialog = dia; + if (label) db->label = strdup(label); + if (icon) db->icon = strdup(icon); + db->func = func; + db->data = data; + db->obj = edje_object_add(e_win_evas_get(dia->win)); + e_theme_edje_object_set(db->obj, "base/theme/dialog", + "widgets/dialog/button"); + edje_object_signal_callback_add(db->obj, "click", "", + _e_dialog_cb_button_clicked, db); + edje_object_part_text_set(db->obj, "button_text", db->label); + edje_object_size_min_calc(db->obj, &mw, &mh); + e_box_pack_end(dia->box_object, db->obj); + e_box_pack_options_set(db->obj, + 1, 1, /* fill */ + 0, 1, /* expand */ + 0.5, 0.5, /* align */ + mw, mh, /* min */ + 9999, mh /* max */ + ); + evas_object_show(db->obj); + + dia->buttons = evas_list_append(dia->buttons, db); +} + +void +e_dialog_title_set(E_Dialog *dia, char *title) +{ + e_win_title_set(dia->win, title); +} + +void +e_dialog_text_set(E_Dialog *dia, char *text) +{ +} + +void +e_dialog_icon_set(E_Dialog *dia, char *icon) +{ +} + +void +e_dialog_show(E_Dialog *dia) +{ + Evas_Coord mw, mh; + Evas_Object *o; + + o = dia->text_object; +// evas_object_textblock_format_size_get(o, &mw, &mh); + evas_object_textblock_native_size_get(o, &mw, &mh); + edje_extern_object_min_size_set(o, mw + 2, mh + 2); + edje_object_part_swallow(dia->bg_object, "content_swallow", o); + + o = dia->box_object; + e_box_min_size_get(o, &mw, &mh); + edje_extern_object_min_size_set(o, mw, mh); + edje_object_part_swallow(dia->bg_object, "buttons_swallow", o); + + edje_object_size_min_calc(dia->bg_object, &mw, &mh); + evas_object_resize(dia->bg_object, mw, mh); + e_win_resize(dia->win, mw, mh); + e_win_size_min_set(dia->win, mw, mh); + e_win_size_max_set(dia->win, mw, mh); + e_win_show(dia->win); +} + +/* local subsystem functions */ +static void +_e_dialog_free(E_Dialog *dia) +{ + while (dia->buttons) + { + E_Dialog_Button *db; + + db = dia->buttons->data; + dia->buttons = evas_list_remove_list(dia->buttons, dia->buttons); + IF_FREE(db->label); + IF_FREE(db->icon); + evas_object_del(db->obj); + free(db); + } + if (dia->text_object) evas_object_del(dia->text_object); + if (dia->icon_object) evas_object_del(dia->icon_object); + if (dia->box_object) evas_object_del(dia->box_object); + if (dia->bg_object) evas_object_del(dia->bg_object); + e_object_del(E_OBJECT(dia->win)); + free(dia); +} + +static void +_e_dialog_cb_button_clicked(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Dialog_Button *db; + + db = data; + if (db->func) + db->func(db->data, db->dialog); + else + e_object_del(E_OBJECT(db->dialog)); +} + +static void +_e_dialog_cb_delete(E_Win *win) +{ + E_Dialog *dia; + + dia = win->data; + e_object_del(E_OBJECT(dia)); +} diff --git a/src/bin/e_dialog.h b/src/bin/e_dialog.h new file mode 100644 index 000000000..210bbfe3f --- /dev/null +++ b/src/bin/e_dialog.h @@ -0,0 +1,35 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#ifdef E_TYPEDEFS + +typedef struct _E_Dialog E_Dialog; + +#else +#ifndef E_DIALOG_H +#define E_DIALOG_H + +#define E_DIALOG_TYPE 0xE0b01012 + +struct _E_Dialog +{ + E_Object e_obj_inherit; + + E_Win *win; + Evas_Object *bg_object; + Evas_Object *box_object; + Evas_Object *text_object; + Evas_Object *icon_object; + Evas_List *buttons; + void *data; +}; + +EAPI E_Dialog *e_dialog_new (E_Container *con); +EAPI void e_dialog_button_add (E_Dialog *dia, char *label, char *icon, void (*func) (void *data, E_Dialog *dia), void *data); +EAPI void e_dialog_title_set (E_Dialog *dia, char *title); +EAPI void e_dialog_text_set (E_Dialog *dia, char *text); +EAPI void e_dialog_icon_set (E_Dialog *dia, char *icon); +EAPI void e_dialog_show (E_Dialog *dia); + +#endif +#endif diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index 5b6da2afa..a77557da5 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -55,3 +55,4 @@ #include "e_remember.h" #include "e_win.h" #include "e_pan.h" +#include "e_dialog.h" diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index 0be9f6926..aad7a6eb0 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -289,14 +289,6 @@ _e_int_menus_main_del_hook(void *obj) e_object_del(E_OBJECT(dat->lost_clients)); free(dat); } - else - { - printf("%%$%%@%%#^#^#$^#$\n" - "%%$%%@%%#^#^#$^#$\n" - " main menu object data is NULL!\n" - "%%$%%@%%#^#^#$^#$\n" - "%%$%%@%%#^#^#$^#$\n"); - } } static void @@ -567,7 +559,7 @@ _e_int_menus_clients_pre_cb(void *data, E_Menu *m) e_menu_item_label_set(mi, _("No name!!")); /* ref the border as we implicitly unref it in the callback */ e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "clients_menu"); +// e_object_breadcrumb_add(E_OBJECT(bd), "clients_menu"); e_menu_item_callback_set(mi, _e_int_menus_clients_item_cb, bd); if (!bd->iconic) e_menu_item_toggle_set(mi, 1); a = e_app_window_name_class_title_role_find(bd->client.icccm.name, @@ -585,6 +577,7 @@ _e_int_menus_clients_pre_cb(void *data, E_Menu *m) e_menu_item_icon_edje_set(mi, s, "windows"); IF_FREE(s); e_menu_item_callback_set(mi, _e_int_menus_clients_cleanup_cb, zone); + e_object_free_attach_func_set(E_OBJECT(m), _e_int_menus_clients_free_hook); e_object_data_set(E_OBJECT(m), borders); } @@ -597,21 +590,13 @@ _e_int_menus_clients_free_hook(void *obj) m = obj; borders = e_object_data_get(E_OBJECT(m)); - if (borders == NULL) - { - printf("########################################################\n"); - printf("########################################################\n"); - printf("clients menu free cb called and object data is NULL!\n"); - printf("########################################################\n"); - printf("########################################################\n"); - } while (borders) { E_Border *bd; bd = borders->data; borders = evas_list_remove_list(borders, borders); - e_object_breadcrumb_del(E_OBJECT(bd), "clients_menu"); +// e_object_breadcrumb_del(E_OBJECT(bd), "clients_menu"); e_object_unref(E_OBJECT(bd)); } } @@ -831,7 +816,7 @@ _e_int_menus_lost_clients_pre_cb(void *data, E_Menu *m) e_menu_item_label_set(mi, _("No name!!")); /* ref the border as we implicitly unref it in the callback */ e_object_ref(E_OBJECT(bd)); - e_object_breadcrumb_add(E_OBJECT(bd), "lost_clients_menu"); +// e_object_breadcrumb_add(E_OBJECT(bd), "lost_clients_menu"); e_menu_item_callback_set(mi, _e_int_menus_lost_clients_item_cb, bd); a = e_app_window_name_class_title_role_find(bd->client.icccm.name, bd->client.icccm.class, @@ -857,7 +842,7 @@ _e_int_menus_lost_clients_free_hook(void *obj) bd = borders->data; borders = evas_list_remove_list(borders, borders); - e_object_breadcrumb_del(E_OBJECT(bd), "lost_clients_menu"); +// e_object_breadcrumb_del(E_OBJECT(bd), "lost_clients_menu"); e_object_unref(E_OBJECT(bd)); } } diff --git a/src/bin/e_manager.c b/src/bin/e_manager.c index 3afc06d6c..2e24ec346 100644 --- a/src/bin/e_manager.c +++ b/src/bin/e_manager.c @@ -338,6 +338,24 @@ e_manager_lower(E_Manager *man) ecore_x_window_lower(man->win); } +E_Manager * +e_manager_current_get(void) +{ + Evas_List *l; + E_Manager *man; + int x, y; + + if (!managers) return NULL; + for (l = managers; l; l = l->next) + { + man = l->data; + ecore_x_pointer_xy_get(man->win, &x, &y); + if (E_INSIDE(x, y, man->x, man->y, man->w, man->h)) + return man; + } + return managers->data; +} + E_Container * e_manager_container_number_get(E_Manager *man, int num) { diff --git a/src/bin/e_manager.h b/src/bin/e_manager.h index 59440139b..1d8d46e42 100644 --- a/src/bin/e_manager.h +++ b/src/bin/e_manager.h @@ -37,8 +37,8 @@ EAPI void e_manager_resize(E_Manager *man, int w, int h); EAPI void e_manager_move_resize(E_Manager *man, int x, int y, int w, int h); EAPI void e_manager_raise(E_Manager *man); EAPI void e_manager_lower(E_Manager *man); +EAPI E_Manager *e_manager_current_get(void); -EAPI E_Container *e_manager_container_current_get(E_Manager *man); EAPI E_Container *e_manager_container_number_get(E_Manager *man, int num); EAPI void e_managers_keys_grab(void); diff --git a/src/bin/e_object.c b/src/bin/e_object.c index 656e12856..d47129e9e 100644 --- a/src/bin/e_object.c +++ b/src/bin/e_object.c @@ -80,11 +80,13 @@ void e_object_free(E_Object *obj) { E_OBJECT_CHECK(obj); +/* if (obj->crumbs) { printf("EEEK obj type %x has crumbs still! ->\n", obj->type); e_object_breadcrumb_debug(obj); } + */ if (obj->free_att_func) obj->free_att_func(obj); obj->magic = E_OBJECT_MAGIC_FREED; obj->cleanup_func(obj); @@ -257,6 +259,7 @@ e_object_del_attach_func_set(E_Object *obj, void (*func) (void *obj)) obj->del_att_func = func; } +/* void e_object_breadcrumb_add(E_Object *obj, char *crumb) { @@ -290,6 +293,7 @@ e_object_breadcrumb_debug(E_Object *obj) for (l = obj->crumbs; l; l = l->next) printf("CRUMB: %s\n", l->data); } +*/ #ifdef OBJECT_PARANOIA_CHECK /* local subsystem functions */ diff --git a/src/bin/e_object.h b/src/bin/e_object.h index 77f9eb81b..84f08a793 100644 --- a/src/bin/e_object.h +++ b/src/bin/e_object.h @@ -70,7 +70,7 @@ struct _E_Object void (*del_att_func) (void *obj); void *data; unsigned char deleted : 1; - Evas_List *crumbs; +// Evas_List *crumbs; }; EAPI void *e_object_alloc (int size, int type, E_Object_Cleanup_Func cleanup_func); @@ -88,9 +88,11 @@ EAPI void *e_object_data_get (E_Object *obj); EAPI void e_object_free_attach_func_set(E_Object *obj, void (*func) (void *obj)); EAPI void e_object_del_attach_func_set (E_Object *obj, void (*func) (void *obj)); +/* EAPI void e_object_breadcrumb_add (E_Object *obj, char *crumb); EAPI void e_object_breadcrumb_del (E_Object *obj, char *crumb); EAPI void e_object_breadcrumb_debug (E_Object *obj); +*/ #endif #endif diff --git a/src/bin/e_test.c b/src/bin/e_test.c index 0bf6a585f..483ae6b5b 100644 --- a/src/bin/e_test.c +++ b/src/bin/e_test.c @@ -282,6 +282,29 @@ _e_test_internal(E_Container *con) } } #elif 0 +static void +_e_test_dialog_del(void *obj) +{ + E_Dialog *dia; + + dia = obj; + printf("dialog delete hook!\n"); +} + +static void +_e_test_internal(E_Container *con) +{ + E_Dialog *dia; + + dia = e_dialog_new(con); + e_object_del_attach_func_set(E_OBJECT(dia), _e_test_dialog_del); + e_dialog_title_set(dia, "A Test Dialog"); + e_dialog_button_add(dia, "OK", NULL, NULL, NULL); + e_dialog_button_add(dia, "Apply", NULL, NULL, NULL); + e_dialog_button_add(dia, "Cancel", NULL, NULL, NULL); + e_dialog_show(dia); +} +#elif 0 #else static void _e_test_internal(E_Container *con) diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 22e30d967..1adf46c62 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -807,7 +807,6 @@ _e_zone_cb_timer(void *data) E_Event_Pointer_Warp *ev; int x, y; - printf("_e_zone_cb_timer()\n"); ev = E_NEW(E_Event_Pointer_Warp, 1); if (!ev) return 0; @@ -834,14 +833,11 @@ _e_zone_cb_timer(void *data) } break; case E_DIRECTION_RIGHT: - printf("clip right...\n"); if (E_ZONE_FLIP_RIGHT(zone)) { - printf("ummm...\n"); current = e_desk_at_xy_get(zone, zone->desk_x_current + 1, zone->desk_y_current); if (current) { - printf("show new desk\n"); e_desk_show(current); ecore_x_pointer_warp(zone->container->win, 2, y); ev->curr.y = y; diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index eaff5fefb..3b6c7dfc8 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -606,7 +606,7 @@ _pager_window_new(Pager_Desk *pd, E_Border *border) pw->border = border; e_object_ref(E_OBJECT(border)); - e_object_breadcrumb_add(E_OBJECT(border), "pager_module"); +// e_object_breadcrumb_add(E_OBJECT(border), "pager_module"); visible = !border->iconic; pw->desk = pd; @@ -635,7 +635,7 @@ _pager_window_free(Pager_Win *pw) { if (pw->window_object) evas_object_del(pw->window_object); if (pw->icon_object) evas_object_del(pw->icon_object); - e_object_breadcrumb_del(E_OBJECT(pw->border), "pager_module"); +// e_object_breadcrumb_del(E_OBJECT(pw->border), "pager_module"); e_object_unref(E_OBJECT(pw->border)); free(pw); } diff --git a/src/modules/start/e_mod_main.c b/src/modules/start/e_mod_main.c index 27df2eecf..b921d3518 100644 --- a/src/modules/start/e_mod_main.c +++ b/src/modules/start/e_mod_main.c @@ -368,5 +368,6 @@ _start_menu_cb_post_deactivate(void *data, E_Menu *m) face = data; if (!face->main_menu) return; edje_object_signal_emit(face->button_object, "passive", ""); + e_object_del(E_OBJECT(face->main_menu)); face->main_menu = NULL; }