1. start work on dialog stuff

2. fix edge flip stuff
3. fix ghost windows stuff
4. spec


SVN revision: 15925
This commit is contained in:
Carsten Haitzler 2005-07-28 04:35:45 +00:00
parent f4f1ad13b4
commit d2ea9aee5d
20 changed files with 627 additions and 93 deletions

3
TODO
View File

@ -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

View File

@ -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) \

View File

@ -39,5 +39,6 @@ collections {
#include "default_start.edc"
#include "default_winlist.edc"
#include "default_transitions.edc"
#include "default_dialog.edc"
}

View File

@ -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" "";
}
}
}

View File

@ -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

View File

@ -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@

View File

@ -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);
}

View File

@ -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

214
src/bin/e_dialog.c Normal file
View File

@ -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));
}

35
src/bin/e_dialog.h Normal file
View File

@ -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

View File

@ -55,3 +55,4 @@
#include "e_remember.h"
#include "e_win.h"
#include "e_pan.h"
#include "e_dialog.h"

View File

@ -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));
}
}

View File

@ -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)
{

View File

@ -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);

View File

@ -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 */

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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);
}

View File

@ -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;
}