From dc74938241d9bac0fa36e3153b3fd09cf6407f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Wed, 18 Dec 2013 18:51:08 -0200 Subject: [PATCH] Refactor systray to have only one box This is simpler and avoid some edje erros. This patch depends on a patch on elementary to update systray edj. --- src/modules/systray/e-module-systray.edj | Bin 13065 -> 10045 bytes src/modules/systray/e_mod_main.c | 37 +++--- src/modules/systray/e_mod_main.h | 7 +- src/modules/systray/e_mod_notifier_host.c | 10 +- src/modules/systray/e_mod_xembed.c | 139 +++++++++------------- 5 files changed, 84 insertions(+), 109 deletions(-) diff --git a/src/modules/systray/e-module-systray.edj b/src/modules/systray/e-module-systray.edj index f2dd5d4bbe25def3852b0857e11f3dde373789aa..f7fd8fd5552c55a8376cd2a793f7f6bfbb4977d5 100644 GIT binary patch literal 10045 zcmZ{n2V4}#9>>?-MMaQajD|$?C?fU(h(s(X7DPkN{C!8>}Jujy$O6fqf52<}CNO2JA4J z-W0=H9IvC@%=)GH?P{Zi#6?!gNVD0Rf z1?&T`mMC(6b-;qqq{rw576wN5hjq0b21e{Gf4d4S&Q1^S+rn3j1Er@1Gowv>Cx6=$ zjQEGlTV|PHi_oOUy$J?;F&!zpl!6@u^QG8_V8qVtD7Fc#3XGm}JlNl0tth?!FpLwK z8)Bw*E+2ytKQ^HBIIs?2&XnGEFxZP}WT!{$hnN!|PyGH2y$Hxggb-bbzF^UI4E}Z+ z2}Z}?PB6^dCQiv*5UbYyAjw?ofobjZUV;(Z)3G)WEDfwNHRsb{vxpvwJim@$(6#wC z7wk(gdL4)zrb#tYsYk8`v^mk=O=(651F>q zx0ss~)?%}^jbP`&no@d~z>rHe3^sHsw_{{&n2$AvApKEVgT1oTL+m({xzS@FmYqpl z(Q#i5<_1Rl7jtuN59Wj-ukF8J-O;3DavIoRJ3aWz`7^L4)Y{I0C6R9_hInzd$lpSe zIKB#ooU_rxx}3Lw(J_wvb>1)QK{}%FV5cBy+m8h!IY^H?6%2l7+M&p6TY_c-qDL{T zy&chUqvnjh+656kiXq0@McCTPW*6`k?rMt%oE&k>`iJ zY)9fsoFAkw3SlQ9MLozEl=)z{A?bD00jr|)TB80V!?=k13$+f!kqgOLdcE+k3+7!r zF2*Ewa~Wc%hZuE%KW%aq`@PF#Fk)BoG)K7z2HV)gBx1z{<1j6#xp;tKEjDLVXRsAu z%_+S*U?ivMeWMa=I~d}y)_!Zi_Q-mWWKJu=uy@#ei~MjoL>LNr$l9NS6++VakpuP% z7+I6-qjazzVFn3xNYQ7HcfyHBw`s6PRF3MuZ1kRp^xw$pY&NN#cV%<50$f4S=L`&;m9LOx)|pJCy%`5x>c{cSjw0<)$T!vL9^h z#@jLY*Nym6j5SD{l?>MBHV2ZvJJtbP3MSh$8TGSZUqjOK>kCHmTx5_VP_}|0zijkQ zgZ&65?i-LFp}@v&B!5L4NU`uguwTK*zAW1hwsd=hCT)8i81@9Fwe(#e>N^<5o%oHu z>%kxHUSKYg9$9A?7|9vhNBGXYKbVuGw-R;ay8CFENxT;rv9q((CNa?sY$l{Q7m2S2 zTLwnw7V^-2i=EysuxQ_-q3MS53>hAzpsol44z_31>aS>DQufXW@BbZ@49PL;T zSQk510~Te+-h#1q3_0V0n5jKOXQ7TUJxK0*qL3#Xr4Vc%B)$Lj0K-~re2HA}I0h!( z-Q;_m` zMEWK+Kn~aLCB!#ouv?JsDDqr7fFZVQ#y!t4UX8&-e?ay|830D&ioOdx0`s$b%eW&VU&p>su`^+CCQy z>#Ln}C)D9zuXKt*hnWht08-wYrl8&(47RRir0-2&TOh?;g>*&91k0wF6Y5_0I|NCu zm*5k2>=UqaV05mo0DAz|o>~Xu#hb*l?8_fe$9d;X)-V1a3W?YwXPkFC$R;S{A$#0q zFds;g1G0ZNfWgN$ej|Eh50%Hbf;#N%P5O|1ej0W7#2c|?lY`Y@Ln%G%kt8O)$(-bT zJB<1TFcR1F|IYA_cM_Ov`yWvc2jd~-yd>)(Ys-L?bGj7uTVTXT^uCL>_ck#3u1EY3 z0Y-cz<|QP?WM+VoJx4wl$UMoMf2G(B)X93EQtUeFn6HmGC(1{2!ALxa|Mx)R>}7Jm zxV zg4x1o)nF+GK@l4nF*&+4^?R4uPfB*y($^H@6{M67Qz8#zlD!oZ= zD+AMlgV?2-a1&&E&bt%$sFe6OmID-P7<)o^h#UxULnABh< zwJVbvBALfJdF5!;$Ynim*TvW3^Gc*WG(T3T(*Qd^s5(=TH( zY7GK{%<2niun`iJEN8V;S9K7=*3L+XPl1H4pjE+2Hu@ofA^+6ZaT-ii8b)+LNZ0QF zR5NRnlI`_E6aT3v8138{(v$nAR-#c5;49l<)xrN%R2j_%&a4#dR?;mn^!>VK+kU%s z)x1|X(Z1jAUEi;3-!H3vuP!zLo3(Z0{>4+$+Tbo5-O!--uT7U|ryIh)cMfLgB9nP0 zk>xptq%hI~$tPuiQqA!yMoa^Rm~Gaolo3)U>$G~Uz+i7kGAPm{X<;ZzPE&8}^+wv8GM&k6EdsU^MBs%4Iv$b#+qquSDYy1!rr z-CwXm?oX^)u;1#8W`$XjNs>&IBx{uzL9R#|!3s$wSi!4jj=%Itr;(;B_2AMf!@oRk7WIxWpdTACrGKJ59MGc>q050kf8Dl=6t2 zf!7M}Hs@s4tTu4ey40Kr_L9|+7)D$QNTMlC#&@e1{X#4#E55U$Y%F7{Qe(!EWYm-S zBivECsg@^PioX-!JOsKfKwGHJ`ktIAqg2jYbwz@=_XjEGmPNTtY!|07EJg2lOV)roN_9wR_pKEk% z63_5R0CJ(>R9fh3(JA5wHwf}It3z-Z5MknNRH^3#ggs)!dX_82n+7I=iSEH-e|Vgv9}6Z65_bhs7NRx9t94mo~+fW&746gn&O>9-qmXTkZ4R}#M={Y#RzsZ z6*|^pOcBJYyuTA{ty@HHV%2Jrlxa3C>pSa4PQDkTo{Y-H6cmKT)L9g}P*9KGF4HJWv5+%Iu;l(W@}aGg!Xwn62cEq|AF zw)|ZNTe*GPX17st2K(H5cTLA>j6lTwQg?p7E^TjDqaD zAya-kpgqxW#hr1hGlk-wFUD7$+5P9W__lv%W+l(Ce3dY&Chl@f#ig3~>f#&ct2P)8 z?oXchTZOjlQqd0kXpIu#Cs(kTq zc(?K`rb%rlu33?=GN)wQ#oP;nrk6GiOHCR!qK>xH=t24GJ})V#_Io@dXk)W=9^ap@ zTA1z?8YSG|Gur!(ow=q}z`DF$Hy+){wwyX~^1z!NHU3|oZGJcJ>fVMAPE2^#Z0j4% z=eL&5_lhredOp4BcMbO_hLt%i?De0fy}9mZV$S^Zs3`H*PVUFl9-E_g#S4C|%#Sw| z?C26#^X0O;Q`y$R?I+Crsc}l{*d{-@jjZquiq0K*{d!jO<*S-38|{%bYRZD)r*ksD z=;H6#!QZt}<>i^0yvhUquj@rGiu@?;YWcarO=kr*Z*VU8aSP`X-sOeF3X8VGM?cH|teD=e5q09a@*A9KfRwf)jn?C>WqQe!_`x^M8 zzkfPGl{s(f^tJA@B24u&k2UGhAnBIJr?ZBb8f1G0wOBkwvDa{UiJ3Q zH|LtH_Ya$#cJmQyP)IJ~~=Th!>t73D5hvc3L>9ozA+cr0TeA8{p@qgF3c<{xq$7hr{p7Bi_vm-D5 zVM5j05=-%oH;0P9uK3+`%a)vv+|IVB|GYun*St=S1ix2=$(+hbF%k^>be*5&Q(4bl5p{p(&bwpenhl~ z`6Vp=r1bpoIOT(NVfmT92?0X>>)6u3%4w}DdzGZ0eY!2X^@Zxh3)O9icHd>f;Z?%n zUq~ko?Gpn0684(%-|o)ubmYQ}o9>I}_Z|E2b;7fv4~-5JHeTy+b6|dE)q$Z;(-tNk zFZW$~+0t=EKt@$|*57CAAI#qJ`i3g&K}6l`6aJe9#tBQxL&i+kGq-xpd04deb*_7d ztiYka>@x^Wx*fT+&+GR=ea3y*dd=qgH`Vd&ZhraG|IVFSIrzea%DTpHORi`BH0rwp z8y?^3oxE>n;l6_*f=xbX?mg4rLQZmT#TO6Y0jJ08lOJ1p7<0* zOxjg=$l+oyO`HDVr3u5*(^nms_c;Hg>0bQ3K^Ftv*_Nw|B7MF5*iFmsf0F0eZ*X{@ z$Y$&OMmGB^#B=7nwAqEzZzXkfE+})pov?rH@EMtp>y~#q8rFSt_m-Po_O$%`N!{nS zBIm5h(KRWE?YuiG&GohupSeG)d}3s^?^4J8aXNkISjPu@7LScSQgHX@BhQ|zlr7F4 z*^utKv~phhn4WLU&oB3VQ+9O2`9l|?_uP!yTXwAUyO$|v^3$BWre`dQb38h@d+CJ2 z$@hnyTd*eIIUw1y;M%z7Er(wjc<)a|!L&IqT7~-P2Bvv`<9fT^9EaBZf?J)*yrMU0 z3JnG}BQOV2j$>^X|xes5?|*Sx=uCQqspoVQB7y`+52j+#eZ_}4X>GoS7n z`{$Cv(s_LI-8(W~Z+|->t(R`)l?PKArk}0!s5tnUo8QAfmRu~a$O$cbRCv?zk1aK` zUWSzgCYLR}a(-jlJ;jBWe$x$)SHE;!^x|CZqX%nz!p?XKf3>SVo6-BvxXB%-?K`~d Lr9*i2<*EM%#E)D7 literal 13065 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 diff --git a/src/modules/systray/e_mod_main.c b/src/modules/systray/e_mod_main.c index 1550f855d..321196720 100644 --- a/src/modules/systray/e_mod_main.c +++ b/src/modules/systray/e_mod_main.c @@ -96,6 +96,7 @@ _cfg_data_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) systray_xembed_shutdown(); inst->xembed = NULL; } + systray_size_updated(inst); ctx->config->use_xembed = cfdata->use_xembed; @@ -514,31 +515,29 @@ systray_edje_get(const Instance *inst) return inst->ui.gadget; } -void -systray_edje_emit(const Instance *inst, const char *sig) +const Evas_Object * +systray_box_get(const Instance *inst) { - EINA_SAFETY_ON_NULL_RETURN(inst); - edje_object_signal_emit(inst->ui.gadget, sig, _sig_source); + EINA_SAFETY_ON_NULL_RETURN_VAL(inst, NULL); + return edje_object_part_object_get(inst->ui.gadget, "box"); } void -systray_edje_box_append(const Instance *inst, const char *part, - Evas_Object *child) +systray_edje_box_append(const Instance *inst, Evas_Object *child) { - EINA_SAFETY_ON_NULL_RETURN(inst); - EINA_SAFETY_ON_NULL_RETURN(part); - EINA_SAFETY_ON_NULL_RETURN(child); - edje_object_part_box_append(inst->ui.gadget, part, child); + edje_object_part_box_append(inst->ui.gadget, "box", child); } void -systray_edje_box_remove(const Instance *inst, const char *part, - Evas_Object *child) +systray_edje_box_prepend(const Instance *inst, Evas_Object *child) { - EINA_SAFETY_ON_NULL_RETURN(inst); - EINA_SAFETY_ON_NULL_RETURN(part); - EINA_SAFETY_ON_NULL_RETURN(child); - edje_object_part_box_remove(inst->ui.gadget, part, child); + edje_object_part_box_prepend(inst->ui.gadget, "box", child); +} + +void +systray_edje_box_remove(const Instance *inst, Evas_Object *child) +{ + edje_object_part_box_remove(inst->ui.gadget, "box", child); } int @@ -560,12 +559,12 @@ _systray_size_apply_do(Instance *inst) { Evas_Coord w, h; - if (inst->xembed) - systray_xembed_size_updated(inst->xembed); - edje_object_message_signal_process(inst->ui.gadget); edje_object_size_min_calc(inst->ui.gadget, &w, &h); e_gadcon_client_min_size_set(inst->gcc, MAX(w, SYSTRAY_MIN_W), MAX(h, SYSTRAY_MIN_H)); + + if (inst->xembed) + systray_xembed_size_updated(inst->xembed); } static void diff --git a/src/modules/systray/e_mod_main.h b/src/modules/systray/e_mod_main.h index 4055fb9cf..700f5b8f8 100644 --- a/src/modules/systray/e_mod_main.h +++ b/src/modules/systray/e_mod_main.h @@ -42,9 +42,10 @@ const char *systray_style_get(const Instance *inst); void systray_size_updated(Instance *inst); Evas *systray_evas_get(const Instance *inst); Evas_Object *systray_edje_get(const Instance *inst); -void systray_edje_emit(const Instance *inst, const char *sig); -void systray_edje_box_append(const Instance *inst, const char *part, Evas_Object *child); -void systray_edje_box_remove(const Instance *inst, const char *part, Evas_Object *child); +const Evas_Object *systray_box_get(const Instance *inst); +void systray_edje_box_append(const Instance *inst, Evas_Object *child); +void systray_edje_box_remove(const Instance *inst, Evas_Object *child); +void systray_edje_box_prepend(const Instance *inst, Evas_Object *child); int systray_manager_number_get(const Instance *inst); Ecore_X_Window systray_root_get(const Instance *inst); diff --git a/src/modules/systray/e_mod_notifier_host.c b/src/modules/systray/e_mod_notifier_host.c index 5331b1985..7141a2738 100644 --- a/src/modules/systray/e_mod_notifier_host.c +++ b/src/modules/systray/e_mod_notifier_host.c @@ -14,7 +14,6 @@ const char *Status_Names[] = { "unknown", "Active", "Passive", "NeedsAttention", NULL }; -static const char *box_part_name = "e.dbus_notifier.box"; static Context_Notifier_Host *ctx = NULL; void @@ -247,8 +246,7 @@ jump_search: image_load(item->icon_name, item->icon_path, ii->icon); if (!evas_object_visible_get(ii->icon)) { - systray_edje_box_append(host_inst->inst, box_part_name, - ii->icon); + systray_edje_box_append(host_inst->inst, ii->icon); evas_object_show(ii->icon); } break; @@ -257,8 +255,7 @@ jump_search: { if (evas_object_visible_get(ii->icon)) { - systray_edje_box_remove(host_inst->inst, box_part_name, - ii->icon); + systray_edje_box_remove(host_inst->inst, ii->icon); evas_object_hide(ii->icon); } break; @@ -268,8 +265,7 @@ jump_search: image_load(item->attention_icon_name, item->icon_path, ii->icon); if (!evas_object_visible_get(ii->icon)) { - systray_edje_box_append(host_inst->inst, box_part_name, - ii->icon); + systray_edje_box_append(host_inst->inst, ii->icon); evas_object_show(ii->icon); } break; diff --git a/src/modules/systray/e_mod_xembed.c b/src/modules/systray/e_mod_xembed.c index ff7a20c24..c50692972 100644 --- a/src/modules/systray/e_mod_xembed.c +++ b/src/modules/systray/e_mod_xembed.c @@ -44,7 +44,7 @@ typedef struct _Icon Icon; struct _Icon { Ecore_X_Window win; - Evas_Object *o; + Evas_Object *rect; Instance_Xembed *xembed; }; @@ -83,39 +83,39 @@ static Ecore_X_Atom _atom_xembed_info = 0; static Ecore_X_Atom _atom_st_num = 0; static int _last_st_num = -1; -/* TODO: remove me later: */ -static const char _part_box[] = "e.xembed.box"; -static const char _part_size[] = "e.xembed.size"; -static const char _sig_enable[] = "e,action,xembed,enable"; -static const char _sig_disable[] = "e,action,xembed,disable"; -/* END TODO: remove me later */ +static void +_xembed_win_resize(Instance_Xembed *xembed) +{ + Evas_Coord first_x, first_y, first_w, first_h, last_x, last_y; + Icon *icon; + + if (!xembed->icons) + return; + + icon = eina_list_data_get(xembed->icons); + evas_object_geometry_get(icon->rect, &first_x, + &first_y, &first_w, &first_h); + + icon = eina_list_last_data_get(xembed->icons); + evas_object_geometry_get(icon->rect, &last_x, + &last_y, NULL, NULL); + + //because we always prepend xembed icons + ecore_x_window_move_resize(xembed->win.base, last_x, last_y, + (first_x+first_w) - last_x, + (first_y+first_h) - last_y); +} void systray_xembed_size_updated(Instance_Xembed *xembed) { - const Evas_Object *o; - Evas_Object *ui = systray_edje_get(xembed->inst); - Evas_Coord x, y, w, h, mw = 1, mh = 1; - - /* this hack is required so we resize the base xwindow */ - - edje_object_message_signal_process(ui); - o = edje_object_part_object_get(ui, _part_box); - if (!o) return; - evas_object_size_hint_min_get(o, &w, &h); - - if (w < 1) w = 1; - if (h < 1) h = 1; - if (eina_list_count(xembed->icons) == 0) - ecore_x_window_hide(xembed->win.base); - else - ecore_x_window_show(xembed->win.base); - edje_object_size_min_calc(systray_edje_get(xembed->inst), &mw, &mh); - e_gadcon_client_min_size_set(systray_gadcon_client_get(xembed->inst), mw, mh); - - evas_object_geometry_get(o, &x, &y, &w, &h); - ecore_x_window_move_resize(xembed->win.base, x, y, w, h); + { + ecore_x_window_hide(xembed->win.base); + return; + } + ecore_x_window_show(xembed->win.base); + _xembed_win_resize(xembed); } static void @@ -135,15 +135,15 @@ _systray_xembed_cb_resize(void *data, Evas *evas __UNUSED__, Evas_Object *o __UN static void _systray_xembed_icon_geometry_apply(Icon *icon) { - const Evas_Object *o, *ui = systray_edje_get(icon->xembed->inst); + const Evas_Object *box; Evas_Coord x, y, w, h, wx, wy; /* hack required so we reposition x window inside parent */ - o = edje_object_part_object_get(ui, _part_size); - if (!o) return; + box = systray_box_get(icon->xembed->inst); + if (!box) return; - evas_object_geometry_get(icon->o, &x, &y, &w, &h); - evas_object_geometry_get(o, &wx, &wy, NULL, NULL); + evas_object_geometry_get(icon->rect, &x, &y, &w, &h); + evas_object_geometry_get(box, &wx, &wy, NULL, NULL); ecore_x_window_move_resize(icon->win, x - wx, y - wy, w, h); } @@ -220,17 +220,10 @@ static Icon * _systray_xembed_icon_add(Instance_Xembed *xembed, const Ecore_X_Window win) { Ecore_X_Gravity gravity; - Evas_Object *o; + Evas_Object *rect; Evas_Coord w, h, sz = 48; Icon *icon; - edje_object_part_geometry_get(systray_edje_get(xembed->inst), _part_size, - NULL, NULL, &w, &h); - if (w > h) - w = h; - else - h = w; - /* assuming systray must be on a shelf here */ switch (systray_gadcon_get(xembed->inst)->orient) { @@ -252,32 +245,31 @@ _systray_xembed_icon_add(Instance_Xembed *xembed, const Ecore_X_Window win) case E_GADCON_ORIENT_CORNER_LB: case E_GADCON_ORIENT_CORNER_RB: sz = systray_gadcon_get(xembed->inst)->shelf->w; + break; + default: break; } - if ((w < 16) && (sz > 16)) - w = h = sz - 5; - w = h = e_util_icon_size_normalize(w); - if (w > sz - 5) - w = h = e_util_icon_size_normalize(sz - 5); + sz = sz - 5; + w = h = e_util_icon_size_normalize(sz); - o = evas_object_rectangle_add(systray_evas_get(xembed->inst)); - if (!o) + rect = evas_object_rectangle_add(systray_evas_get(xembed->inst)); + if (!rect) return NULL; - evas_object_color_set(o, 0, 0, 0, 0); - evas_object_resize(o, w, h); - evas_object_show(o); + evas_object_color_set(rect, 0, 0, 0, 0); + evas_object_resize(rect, w, h); + evas_object_show(rect); - icon = malloc(sizeof(*icon)); + icon = malloc(sizeof(Icon)); if (!icon) { - evas_object_del(o); + evas_object_del(rect); return NULL; } icon->win = win; icon->xembed = xembed; - icon->o = o; + icon->rect = rect; gravity = _systray_xembed_gravity(xembed); ecore_x_icccm_size_pos_hints_set(win, 1, gravity, @@ -290,15 +282,13 @@ _systray_xembed_icon_add(Instance_Xembed *xembed, const Ecore_X_Window win) ecore_x_window_save_set_add(win); ecore_x_window_shape_events_select(win, 1); - //ecore_x_window_geometry_get(win, NULL, NULL, &w, &h); - evas_object_event_callback_add - (o, EVAS_CALLBACK_MOVE, _systray_xembed_icon_cb_move, icon); + (rect, EVAS_CALLBACK_MOVE, _systray_xembed_icon_cb_move, icon); evas_object_event_callback_add - (o, EVAS_CALLBACK_RESIZE, _systray_xembed_icon_cb_resize, icon); + (rect, EVAS_CALLBACK_RESIZE, _systray_xembed_icon_cb_resize, icon); xembed->icons = eina_list_append(xembed->icons, icon); - systray_edje_box_append(xembed->inst, _part_box, o); + systray_edje_box_prepend(xembed->inst, rect); systray_size_updated(xembed->inst); _systray_xembed_icon_geometry_apply(icon); @@ -314,7 +304,7 @@ _systray_xembed_icon_del_list(Instance_Xembed *xembed, Eina_List *l, Icon *icon) ecore_x_window_save_set_del(icon->win); ecore_x_window_reparent(icon->win, 0, 0, 0); - evas_object_del(icon->o); + evas_object_del(icon->rect); free(icon); systray_size_updated(xembed->inst); @@ -366,8 +356,6 @@ _systray_xembed_deactivate(Instance_Xembed *xembed) { if (xembed->win.selection == 0) return; - systray_edje_emit(xembed->inst, _sig_disable); - while (xembed->icons) _systray_xembed_icon_del_list(xembed, xembed->icons, xembed->icons->data); @@ -381,8 +369,8 @@ _systray_xembed_deactivate(Instance_Xembed *xembed) static Eina_Bool _systray_xembed_base_create(Instance_Xembed *xembed) { - const Evas_Object *o, *ui = systray_edje_get(xembed->inst); - Evas_Coord x, y, w, h; + const Evas_Object *box; + Evas_Coord x, y; unsigned short r, g, b; const char *color; Eina_Bool invis = EINA_FALSE; @@ -392,7 +380,8 @@ _systray_xembed_base_create(Instance_Xembed *xembed) invis = EINA_TRUE; else { - color = edje_object_data_get(ui, systray_style_get(xembed->inst)); + color = edje_object_data_get(systray_edje_get(xembed->inst), + systray_style_get(xembed->inst)); if (color && (sscanf(color, "%hu %hu %hu", &r, &g, &b) == 3)) { @@ -404,14 +393,12 @@ _systray_xembed_base_create(Instance_Xembed *xembed) r = g = b = (unsigned short)65535; } - o = edje_object_part_object_get(ui, _part_size); - if (!o) + box = systray_box_get(xembed->inst); + if (!box) return EINA_FALSE; - evas_object_geometry_get(o, &x, &y, &w, &h); - if (w < 1) w = 1; - if (h < 1) h = 1; - xembed->win.base = ecore_x_window_new(0, x, y, w, h); + evas_object_geometry_get(box, &x, &y, NULL, NULL); + xembed->win.base = ecore_x_window_new(0, x, y, 1, 1); ecore_x_icccm_title_set(xembed->win.base, "noshadow_systray_base"); ecore_x_icccm_name_class_set(xembed->win.base, "systray", "holder"); ecore_x_netwm_name_set(xembed->win.base, "noshadow_systray_base"); @@ -480,8 +467,6 @@ _systray_xembed_activate(Instance_Xembed *xembed) ecore_x_current_time_get(), atom, xembed->win.selection, 0, 0); - systray_edje_emit(xembed->inst, _sig_enable); - return 1; } @@ -529,8 +514,6 @@ _systray_xembed_activate_retry_first(void *data) return ECORE_CALLBACK_CANCEL; } - systray_edje_emit(xembed->inst, _sig_disable); - fprintf(stderr, "SYSTRAY: activate failure! retrying in %0.1f seconds\n", RETRY_TIMEOUT); @@ -737,8 +720,6 @@ _systray_xembed_cb_selection_clear(void *data, int type __UNUSED__, void *event) (ev->atom == _systray_xembed_atom_st_get(manager)) && (ecore_x_selection_owner_get(ev->atom) != xembed->win.selection)) { - systray_edje_emit(xembed->inst, _sig_disable); - while (xembed->icons) _systray_xembed_icon_del_list(xembed, xembed->icons, xembed->icons->data); @@ -850,8 +831,6 @@ systray_xembed_new(Instance *inst) if (!xembed->timer.retry) xembed->timer.retry = ecore_timer_add (0.1, _systray_xembed_activate_retry_first, xembed); - else - systray_edje_emit(xembed->inst, _sig_disable); } evas_object_event_callback_add(ui, EVAS_CALLBACK_MOVE,