From: Enlightenment S. <no-...@en...> - 2009-12-10 18:14:46
|
Log: Handle conformant apps in both dual modes now. Author: devilhorns Date: 2009-12-10 10:14:32 -0800 (Thu, 10 Dec 2009) New Revision: 44343 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-10 17:25:04 UTC (rev 44342) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-10 18:14:32 UTC (rev 44343) @@ -16,15 +16,6 @@ if (illume_border_is_top_shelf(bd)) return; if (illume_border_is_bottom_panel(bd)) return; if (illume_border_is_keyboard(bd)) return; - if (illume_border_is_conformant(bd)) - { - E_Border *b; - - b = illume_border_top_shelf_get(); - if (b) e_border_fx_offset(b, 0, -shelfsize); - b = illume_border_bottom_panel_get(); - if (b) e_border_fx_offset(b, 0, -panelsize); - } e_border_raise(bd); e_border_focus_set(bd, 1, 1); } @@ -172,7 +163,19 @@ if ((b) && (bd != b)) by = by + bh; else if (b) - by = bd->y; + by = bd->fx.y; + if (illume_border_is_conformant(bd)) + { + by = z->y; + bh = (z->h / 2); + if ((b) && (bd != b)) + { + by = b->fx.y + b->h; + bh = (z->h - (b->fx.y + b->h)); + } + else if (b) + by = bd->fx.y; + } } else if (il_cfg->policy.mode.side == 1) /* left/right */ { @@ -182,6 +185,15 @@ bx = bx + bw; else if (b) bx = bd->x; + if (illume_border_is_conformant(bd)) + { + bx = z->x; + by = z->y; + bw = (z->w / 2); + bh = z->h; + if ((b) && (bd != b)) + bx = b->fx.x + b->w; + } } if ((bd->w != bw) || (bd->h != bh)) e_border_resize(bd, bw, bh); |
From: Enlightenment S. <no-...@en...> - 2009-12-11 02:56:19
|
Log: Don't treat config dialogs as special anymore. They also can work w/ dual app mode. Author: devilhorns Date: 2009-12-10 18:56:07 -0800 (Thu, 10 Dec 2009) New Revision: 44346 Modified: trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-11 02:41:32 UTC (rev 44345) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-11 02:56:07 UTC (rev 44346) @@ -341,7 +341,6 @@ if (illume_border_is_bottom_panel(bd)) continue; if (illume_border_is_keyboard(bd)) continue; if (illume_border_is_dialog(bd)) continue; - if (strstr(bd->client.icccm.class, "config")) continue; ret = eina_list_append(ret, bd); } return ret; Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-11 02:41:32 UTC (rev 44345) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-11 02:56:07 UTC (rev 44346) @@ -119,13 +119,6 @@ if ((bd->x != z->x) || (bd->y != (z->y + ((z->h - mh) / 2)))) e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2))); } - else if (strstr(bd->client.icccm.class, "config")) - { - if ((bd->w != z->w) || (bd->h != (z->h - shelfsize - panelsize))) - e_border_resize(bd, z->w, (z->h - shelfsize - panelsize)); - if ((bd->x != z->x) || (bd->y != (z->y + shelfsize))) - e_border_fx_offset(bd, z->x, (z->y + shelfsize)); - } else { if (!il_cfg->policy.mode.dual) |
From: Enlightenment S. <no-...@en...> - 2009-12-11 09:35:06
|
Log: Set keyboard as sticky. Author: devilhorns Date: 2009-12-11 01:34:52 -0800 (Fri, 11 Dec 2009) New Revision: 44354 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-11 09:34:35 UTC (rev 44353) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-11 09:34:52 UTC (rev 44354) @@ -110,6 +110,7 @@ e_border_resize(bd, z->w, kbdsize); if ((bd->x != z->x) || (bd->y != (z->y + z->h - kbdsize))) e_border_fx_offset(bd, z->x, (z->y + z->h - kbdsize)); + e_border_stick(bd); } else if (illume_border_is_dialog(bd)) { |
From: Enlightenment S. <no-...@en...> - 2009-12-11 21:13:53
|
Log: Trap for illume_mode client messages. Author: devilhorns Date: 2009-12-11 13:13:40 -0800 (Fri, 11 Dec 2009) New Revision: 44386 Modified: trunk/e/src/modules/illume2/e_mod_layout.c Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-11 21:12:30 UTC (rev 44385) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-11 21:13:40 UTC (rev 44386) @@ -635,10 +635,25 @@ E_Border *bd; ev = event; - if (ev->message_type != ECORE_X_ATOM_NET_ACTIVE_WINDOW) return 1; - bd = e_border_find_by_client_window(ev->win); - if (bd->stolen) return 1; - if ((mode) && (mode->funcs.border_activate)) - mode->funcs.border_activate(bd); + if (ev->message_type == ECORE_X_ATOM_NET_ACTIVE_WINDOW) + { + bd = e_border_find_by_client_window(ev->win); + if (bd->stolen) return 1; + if ((mode) && (mode->funcs.border_activate)) + mode->funcs.border_activate(bd); + } + else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_MODE) + { + Ecore_X_Illume_Mode mode; + + mode = ecore_x_e_illume_mode_get(ev->win); + if (mode == ECORE_X_ILLUME_MODE_SINGLE) + il_cfg->policy.mode.dual = 0; + else if (mode == ECORE_X_ILLUME_MODE_DUAL) + il_cfg->policy.mode.dual = 1; + else /* unknown */ + il_cfg->policy.mode.dual = 0; + e_config_save_queue(); + } return 1; } |
From: Enlightenment S. <no-...@en...> - 2009-12-12 01:11:20
|
Log: Handle client messages for back & close. Author: devilhorns Date: 2009-12-11 17:11:05 -0800 (Fri, 11 Dec 2009) New Revision: 44400 Modified: trunk/e/src/modules/illume2/e_mod_layout.c Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-12 00:46:54 UTC (rev 44399) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-12 01:11:05 UTC (rev 44400) @@ -655,5 +655,40 @@ il_cfg->policy.mode.dual = 0; e_config_save_queue(); } + else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_BACK) + { + E_Border *bd, *fbd; + Eina_List *focused, *l; + + if (!(bd = e_border_focused_get())) return 1; + focused = e_border_focus_stack_get(); + EINA_LIST_REVERSE_FOREACH(focused, l, fbd) + { + E_Border *fb; + + if (e_object_is_del(E_OBJECT(fbd))) continue; + if ((!fbd->client.icccm.accepts_focus) && + (!fbd->client.icccm.take_focus)) continue; + if (fbd->client.netwm.state.skip_taskbar) continue; + if (fbd == bd) + { + if (!(fb = focused->next->data)) continue; + if (e_object_is_del(E_OBJECT(fb))) continue; + if ((!fb->client.icccm.accepts_focus) && + (!fb->client.icccm.take_focus)) continue; + if (fb->client.netwm.state.skip_taskbar) continue; + e_border_raise(fb); + e_border_focus_set(fb, 1, 1); + break; + } + } + } + else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_CLOSE) + { + E_Border *bd; + + if (!(bd = e_border_focused_get())) return 1; + e_border_act_close_begin(bd); + } return 1; } |
From: Enlightenment S. <no-...@en...> - 2009-12-13 18:14:35
|
Log: Formatting. Fix comments. Author: devilhorns Date: 2009-12-13 10:14:24 -0800 (Sun, 13 Dec 2009) New Revision: 44427 Modified: trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-13 17:54:37 UTC (rev 44426) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-13 18:14:24 UTC (rev 44427) @@ -632,11 +632,12 @@ _cb_event_client_message(void *data, int type, void *event) { Ecore_X_Event_Client_Message *ev; - E_Border *bd; ev = event; if (ev->message_type == ECORE_X_ATOM_NET_ACTIVE_WINDOW) { + E_Border *bd; + bd = e_border_find_by_client_window(ev->win); if (bd->stolen) return 1; if ((mode) && (mode->funcs.border_activate)) Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-13 17:54:37 UTC (rev 44426) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-13 18:14:24 UTC (rev 44427) @@ -133,7 +133,8 @@ } else { - if ((bd->w != z->w) || (bd->h != (z->h - shelfsize - panelsize))) + if ((bd->w != z->w) || + (bd->h != (z->h - shelfsize - panelsize))) e_border_resize(bd, z->w, (z->h - shelfsize - panelsize)); if ((bd->x != z->x) || (bd->y != (z->y + shelfsize))) e_border_fx_offset(bd, z->x, (z->y + shelfsize)); @@ -150,7 +151,7 @@ bh = (z->h - shelfsize - panelsize); /* in dual mode */ - if (il_cfg->policy.mode.side == 0) /* top/left */ + if (il_cfg->policy.mode.side == 0) /* top/bottom */ { bh = ((z->h - shelfsize - panelsize) / 2); b = illume_border_at_xy_get(bx, by); |
From: Enlightenment S. <no-...@en...> - 2009-12-13 20:03:26
|
Log: When a border needs fullscreen, set it. Author: devilhorns Date: 2009-12-13 12:03:18 -0800 (Sun, 13 Dec 2009) New Revision: 44431 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-13 19:47:05 UTC (rev 44430) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-13 20:03:18 UTC (rev 44431) @@ -70,7 +70,7 @@ EINA_LIST_FOREACH(borders, l, bd) { int mw, mh; - + if (bd->zone != z) continue; // skip other zones if (bd->new_client) continue; // skip new clients if (!bd->visible) continue; // skip invisible @@ -134,13 +134,7 @@ e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2))); } else if ((bd->need_fullscreen) || (bd->fullscreen)) - { -// e_border_fullscreen(bd, E_FULLSCREEN_RESIZE); - if ((bd->w != z->w) || (bd->h != z->h)) - e_border_resize(bd, z->w, z->h); - if ((bd->x != z->x) || (bd->y != z->y)) - e_border_fx_offset(bd, z->x, z->y); - } + e_border_fullscreen(bd, E_FULLSCREEN_RESIZE); else { if (!il_cfg->policy.mode.dual) |
From: Enlightenment S. <no-...@en...> - 2009-12-13 20:04:51
|
Log: Hide top & bottom panels when border is fullscreen. Author: devilhorns Date: 2009-12-13 11:47:05 -0800 (Sun, 13 Dec 2009) New Revision: 44430 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-13 18:59:25 UTC (rev 44429) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-13 19:47:05 UTC (rev 44430) @@ -16,6 +16,16 @@ if (illume_border_is_top_shelf(bd)) return; if (illume_border_is_bottom_panel(bd)) return; if (illume_border_is_keyboard(bd)) return; + if ((bd->need_fullscreen) || (bd->fullscreen)) + { + E_Border *b; + + b = illume_border_top_shelf_get(); + if (b) e_border_fx_offset(b, 0, -shelfsize); + b = illume_border_bottom_panel_get(); + if (b) e_border_fx_offset(b, 0, -panelsize); + } + e_border_raise(bd); e_border_focus_set(bd, 1, 1); } @@ -23,15 +33,18 @@ static void _border_del(E_Border *bd) { // handle a border being deleted - E_Border *b; - if (illume_border_is_top_shelf(bd)) return; if (illume_border_is_bottom_panel(bd)) return; if (illume_border_is_keyboard(bd)) return; - b = illume_border_top_shelf_get(); - if (b) e_border_fx_offset(b, 0, 0); - b = illume_border_bottom_panel_get(); - if (b) e_border_fx_offset(b, 0, 0); + if ((bd->need_fullscreen) || (bd->fullscreen)) + { + E_Border *b; + + b = illume_border_top_shelf_get(); + if (b) e_border_fx_offset(b, 0, 0); + b = illume_border_bottom_panel_get(); + if (b) e_border_fx_offset(b, 0, 0); + } } static void @@ -120,6 +133,14 @@ if ((bd->x != z->x) || (bd->y != (z->y + ((z->h - mh) / 2)))) e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2))); } + else if ((bd->need_fullscreen) || (bd->fullscreen)) + { +// e_border_fullscreen(bd, E_FULLSCREEN_RESIZE); + if ((bd->w != z->w) || (bd->h != z->h)) + e_border_resize(bd, z->w, z->h); + if ((bd->x != z->x) || (bd->y != z->y)) + e_border_fx_offset(bd, z->x, z->y); + } else { if (!il_cfg->policy.mode.dual) |
From: Enlightenment S. <no-...@en...> - 2009-12-14 06:56:57
|
Log: Handle resizing border when vkbd appears. Works for single mode and dual mode (top & bottom). Author: devilhorns Date: 2009-12-13 22:56:43 -0800 (Sun, 13 Dec 2009) New Revision: 44438 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-14 06:55:34 UTC (rev 44437) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-14 06:56:43 UTC (rev 44438) @@ -16,16 +16,6 @@ if (illume_border_is_top_shelf(bd)) return; if (illume_border_is_bottom_panel(bd)) return; if (illume_border_is_keyboard(bd)) return; - if ((bd->need_fullscreen) || (bd->fullscreen)) - { - E_Border *b; - - b = illume_border_top_shelf_get(); - if (b) e_border_fx_offset(b, 0, -shelfsize); - b = illume_border_bottom_panel_get(); - if (b) e_border_fx_offset(b, 0, -panelsize); - } - e_border_raise(bd); e_border_focus_set(bd, 1, 1); } @@ -36,15 +26,6 @@ if (illume_border_is_top_shelf(bd)) return; if (illume_border_is_bottom_panel(bd)) return; if (illume_border_is_keyboard(bd)) return; - if ((bd->need_fullscreen) || (bd->fullscreen)) - { - E_Border *b; - - b = illume_border_top_shelf_get(); - if (b) e_border_fx_offset(b, 0, 0); - b = illume_border_bottom_panel_get(); - if (b) e_border_fx_offset(b, 0, 0); - } } static void @@ -134,82 +115,72 @@ e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2))); } else if ((bd->need_fullscreen) || (bd->fullscreen)) - e_border_fullscreen(bd, E_FULLSCREEN_RESIZE); - else { + int kx, ky, kw, kh; + + e_kbd_safe_app_region_get(z, &kx, &ky, &kw, &kh); if (!il_cfg->policy.mode.dual) { - if (illume_border_is_conformant(bd)) + if ((bd->w != kw) || (bd->h != kh)) { - if ((bd->w != z->w) || (bd->h != z->h)) - e_border_resize(bd, z->w, z->h); - if ((bd->x != z->x) || (bd->y != z->y)) - e_border_fx_offset(bd, z->x, z->y); + bd->w = kw; + bd->h = kh; + bd->client.w = kw; + bd->client.h = kh; + bd->changes.size = 1; } - else + if ((bd->x != kx) || (bd->y != ky)) { - if ((bd->w != z->w) || - (bd->h != (z->h - shelfsize - panelsize))) - e_border_resize(bd, z->w, (z->h - shelfsize - panelsize)); - if ((bd->x != z->x) || (bd->y != (z->y + shelfsize))) - e_border_fx_offset(bd, z->x, (z->y + shelfsize)); + bd->x = kx; + bd->y = ky; + bd->changes.pos = 1; } } - else + } + else /* not fullscreen border; handle all other borders */ + { + int kx, ky, kw, kh, ps, ss; + int bx, by, bw, bh; + + ss = 0; + ps = 0; + e_kbd_safe_app_region_get(z, &kx, &ky, &kw, &kh); + if (!illume_border_is_conformant(bd)) { + if (kh >= z->h) ps = panelsize; + ss = shelfsize; + } + bx = kx; + by = (ky + ss); + bw = kw; + bh = (kh - ss - ps); + if (il_cfg->policy.mode.dual) + { E_Border *b; - int bx, by, bw, bh; - bx = z->x; - bw = z->w; - by = (z->y + shelfsize); - bh = (z->h - shelfsize - panelsize); - - /* in dual mode */ if (il_cfg->policy.mode.side == 0) /* top/bottom */ { - bh = ((z->h - shelfsize - panelsize) / 2); + bh = (bh / 2); b = illume_border_at_xy_get(bx, by); if ((b) && (bd != b)) - by = by + bh; + by = (by + bh); else if (b) by = bd->fx.y; - if (illume_border_is_conformant(bd)) - { - by = z->y; - bh = (z->h / 2); - if ((b) && (bd != b)) - { - by = b->fx.y + b->h; - bh = (z->h - (b->fx.y + b->h)); - } - else if (b) - by = bd->fx.y; - } } else if (il_cfg->policy.mode.side == 1) /* left/right */ { - bw = (z->w / 2); - b = illume_border_at_xy_get(bx, by); + bw = (bw / 2); + b = illume_border_at_xy_get(kx, by); if ((b) && (bd != b)) - bx = bx + bw; + bx = (bx + bw); else if (b) bx = bd->x; - if (illume_border_is_conformant(bd)) - { - bx = z->x; - by = z->y; - bw = (z->w / 2); - bh = z->h; - if ((b) && (bd != b)) - bx = b->fx.x + b->w; - } } - if ((bd->w != bw) || (bd->h != bh)) - e_border_resize(bd, bw, bh); - if ((bd->x != bx) || (bd->y != by)) - e_border_fx_offset(bd, bx, by); } + if ((bd->w != bw) || (bd->h != bh)) + e_border_resize(bd, bw, bh); + if ((bd->x != bx) || (bd->y != by)) + e_border_fx_offset(bd, bx, by); } } } |
From: Enlightenment S. <no-...@en...> - 2009-12-14 23:49:51
|
Log: Rework illume layout code to be cleaner WITH comments :) Much much much better layout code. I believe this handles ALL cases now :) Author: devilhorns Date: 2009-12-14 15:49:36 -0800 (Mon, 14 Dec 2009) New Revision: 44454 Modified: trunk/e/src/modules/illume2/e_kbd.c trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_layout.h trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_kbd.c =================================================================== --- trunk/e/src/modules/illume2/e_kbd.c 2009-12-14 21:45:33 UTC (rev 44453) +++ trunk/e/src/modules/illume2/e_kbd.c 2009-12-14 23:49:36 UTC (rev 44454) @@ -1062,20 +1062,17 @@ e_kbd_safe_app_region_get(E_Zone *zone, int *x, int *y, int *w, int *h) { Eina_List *l; + E_Kbd *kbd; if (x) *x = zone->x; if (y) *y = zone->y; if (w) *w = zone->w; if (h) *h = zone->h; - for (l = kbds; l; l = l->next) + EINA_LIST_FOREACH(kbds, l, kbd) { - E_Kbd *kbd; - - kbd = l->data; if ((kbd->border) && (kbd->border->zone == zone)) { if ((kbd->visible) && (!kbd->animator) && (!kbd->disabled)) - /* out finished, not disabled */ { if (h) { Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-14 21:45:33 UTC (rev 44453) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-14 23:49:36 UTC (rev 44454) @@ -347,6 +347,38 @@ } E_Border * +illume_border_valid_border_get(void) +{ + Eina_List *bds, *l; + E_Border *bd, *ret = NULL; + + bds = e_border_client_list(); + EINA_LIST_FOREACH(bds, l, bd) + { + if (!bd) continue; + if (illume_border_is_top_shelf(bd)) continue; + if (illume_border_is_bottom_panel(bd)) continue; + if (illume_border_is_keyboard(bd)) continue; + if (illume_border_is_dialog(bd)) continue; + ret = bd; + break; + } + return ret; +} + +int +illume_border_valid_count_get(void) +{ + Eina_List *l; + int count; + + l = illume_border_valid_borders_get(); + count = eina_list_count(l); + eina_list_free(l); + return count; +} + +E_Border * illume_border_at_xy_get(int x, int y) { Eina_List *bds, *l; Modified: trunk/e/src/modules/illume2/e_mod_layout.h =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-14 21:45:33 UTC (rev 44453) +++ trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-14 23:49:36 UTC (rev 44454) @@ -54,6 +54,8 @@ Eina_Bool illume_border_is_conformant(E_Border *bd); Eina_List *illume_border_valid_borders_get(void); +E_Border *illume_border_valid_border_get(void); +int illume_border_valid_count_get(void); E_Border *illume_border_at_xy_get(int x, int y); E_Border *illume_border_top_shelf_get(void); E_Border *illume_border_bottom_panel_get(void); Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-14 21:45:33 UTC (rev 44453) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-14 23:49:36 UTC (rev 44454) @@ -5,234 +5,467 @@ #include "e_mod_layout_illume.h" #include "e_kbd.h" +/* local function prototypes */ +static void _border_resize_fx(E_Border *bd, int bx, int by, int bw, int bh); +static void _border_add(E_Border *bd); +static void _border_del(E_Border *bd); +static void _border_focus_in(E_Border *bd); +static void _border_focus_out(E_Border *bd); +static void _border_activate(E_Border *bd); +static void _zone_layout(E_Zone *z); +static void _zone_layout_single(E_Border *bd); +static void _zone_layout_dual(E_Border *bd); +static void _zone_layout_dual_top(E_Border *bd); +static void _zone_layout_dual_left(E_Border *bd); +static void _zone_move_resize(E_Zone *z); + /* local variables */ static int shelfsize = 0; static int kbdsize = 0; static int panelsize = 0; -static void -_border_add(E_Border *bd) -{ // handle a border being added - if (illume_border_is_top_shelf(bd)) return; - if (illume_border_is_bottom_panel(bd)) return; - if (illume_border_is_keyboard(bd)) return; - e_border_raise(bd); - e_border_focus_set(bd, 1, 1); +const Illume_Layout_Mode laymode = +{ + "illume", "Illume", + _border_add, _border_del, + _border_focus_in, _border_focus_out, + _zone_layout, _zone_move_resize, + _border_activate +}; + +/* public functions */ +void +illume_layout_illume_init(void) +{ + illume_layout_mode_register(&laymode); } -static void -_border_del(E_Border *bd) -{ // handle a border being deleted - if (illume_border_is_top_shelf(bd)) return; - if (illume_border_is_bottom_panel(bd)) return; - if (illume_border_is_keyboard(bd)) return; +void +illume_layout_illume_shutdown(void) +{ + illume_layout_mode_unregister(&laymode); } -static void -_border_focus_in(E_Border *bd) -{ // do something if focus enters a window +/* local functions */ +static void +_border_resize_fx(E_Border *bd, int bx, int by, int bw, int bh) +{ + /* CONVENIENCE FUNCTION TO REMOVE DUPLICATED CODE */ + if ((bd->need_fullscreen) || (bd->fullscreen)) + { + if ((bd->w != bw) || (bd->h != bh)) + { + bd->w = bw; + bd->h = bh; + bd->client.w = bw; + bd->client.h = bh; + bd->changes.size = 1; + } + if ((bd->x != bx) || (bd->y != by)) + { + bd->x = bx; + bd->y = by; + bd->changes.pos = 1; + } + } + else + { + if ((bd->w != bw) || (bd->h != bh)) + e_border_resize(bd, bw, bh); + if ((bd->x != bx) || (bd->y != by)) + e_border_fx_offset(bd, bx, by); + } } -static void -_border_focus_out(E_Border *bd) -{ // do something if the focus exits a window +static void +_border_add(E_Border *bd) +{ + /* HANDLE A BORDER BEING ADDED */ + int conform; + + /* skip new clients and invisible borders */ + if ((bd->new_client) || (!bd->visible)) return; + + /* check if this border is conformant */ + conform = illume_border_is_conformant(bd); + + /* is this a fullscreen border ? */ + if ((bd->need_fullscreen) || (bd->fullscreen)) + { + E_Border *b; + + /* we lock stacking so that the keyboard does not get put + * under the window (if it's needed) */ + bd->lock_user_stacking = 1; + + /* conformant fullscreen borders just hide bottom panel */ + b = illume_border_bottom_panel_get(); + if (b) e_border_fx_offset(b, 0, -panelsize); + + /* for non-conformant fullscreen borders, + * we hide top shelf and bottom panel in all cases */ + if (!conform) + { + b = illume_border_top_shelf_get(); + if (b) e_border_fx_offset(b, 0, -shelfsize); + } + } + + /* we lock stacking so that the keyboard does not get put + * under the window (if it's needed) */ + if (conform) bd->lock_user_stacking = 1; + + /* only set focus if border accepts it and it's not locked out */ + if ((bd->client.icccm.accepts_focus) && (bd->client.icccm.take_focus) + && (!bd->lock_focus_out)) + e_border_focus_set(bd, 1, 1); } -static void -_zone_layout(E_Zone *z) -{ // borders are in re-layout stage. this is where you move/resize them +static void +_border_del(E_Border *bd) +{ + /* HANDLE A BORDER BEING DELETED */ + + if ((bd->need_fullscreen) || (bd->fullscreen)) + { + E_Border *b; + + /* conformant fullscreen borders just get bottom panel shown */ + b = illume_border_bottom_panel_get(); + if (b) e_border_fx_offset(b, 0, 0); + + /* for non-conformant fullscreen borders, + * we show top shelf and bottom panel in all cases */ + if (!illume_border_is_conformant(bd)) + { + b = illume_border_top_shelf_get(); + if (b) e_border_fx_offset(b, 0, 0); + } + } +} + +static void +_border_focus_in(E_Border *bd) +{ + /* do something if focus enters a window */ +} + +static void +_border_focus_out(E_Border *bd) +{ + /* do something if focus exits a window */ +} + +static void +_border_activate(E_Border *bd) +{ + /* HANDLE A BORDER BEING ACTIVATED */ + + /* only set focus if border accepts it */ + if ((!bd->client.icccm.accepts_focus) && (!bd->client.icccm.take_focus)) + return; + + /* if the border is not focused, check focus settings */ + if ((bd) && (!bd->focused)) + { + if ((e_config->focus_setting == E_FOCUS_NEW_WINDOW) || + ((bd->parent) && + ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) || + ((bd->parent->focused) && + (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED))))) + { + if (bd->iconic) + { + /* if it's iconic, then uniconify */ + if (!bd->lock_user_iconify) e_border_uniconify(bd); + } + /* if we can, raise the border */ + if (!bd->lock_user_stacking) e_border_raise(bd); + /* if we can, focus the border */ + if (!bd->lock_focus_out) e_border_focus_set(bd, 1, 1); + } + } +} + +static void +_zone_layout(E_Zone *z) +{ Eina_List *l, *borders; E_Border *bd; - // phase 1. loop through borders to figure out sizes of things + /* ACTUALLY APPLY THE SIZING, POSITIONING AND LAYERING */ + + /* grab list of borders */ borders = e_border_client_list(); - EINA_LIST_FOREACH(borders, l, bd) + EINA_LIST_FOREACH(borders, l, bd) { - int mw, mh; + int mh; - if (bd->zone != z) continue; // skip other zones - if (bd->new_client) continue; // skip new clients - if (!bd->visible) continue; // skip invisible + /* skip border if: zone not the same, a new client, or invisible */ + if ((bd->zone != z) || (bd->new_client) || (!bd->visible)) continue; - illume_border_min_get(bd, &mw, &mh); - if (illume_border_is_top_shelf(bd)) + /* check for special windows to get their size(s) */ + illume_border_min_get(bd, NULL, &mh); + if (illume_border_is_top_shelf(bd)) { if (shelfsize < mh) shelfsize = mh; } - else if (illume_border_is_bottom_panel(bd)) + else if (illume_border_is_bottom_panel(bd)) { if (panelsize < mh) panelsize = mh; } - else if (illume_border_is_keyboard(bd)) + else if (illume_border_is_keyboard(bd)) { if (kbdsize < mh) kbdsize = mh; } } - // phase 2. actually apply the sizing, positioning and layering too + /* grab list of borders */ borders = e_border_client_list(); - EINA_LIST_FOREACH(borders, l, bd) + EINA_LIST_FOREACH(borders, l, bd) { - int mw, mh; + /* skip border if: zone not the same, a new client, or invisible */ + if ((bd->zone != z) || (bd->new_client) || (!bd->visible)) continue; - if (bd->zone != z) continue; // skip other zones - if (bd->new_client) continue; // skip new clients - if (!bd->visible) continue; // skip invisible - - illume_border_min_get(bd, &mw, &mh); - if (illume_border_is_top_shelf(bd)) + /* trap 'special' windows as they need special treatment */ + if (illume_border_is_top_shelf(bd)) { - if ((bd->w != z->w) || (bd->h != shelfsize)) - e_border_resize(bd, z->w, shelfsize); - if ((bd->x != z->x) || (bd->y != z->y)) - e_border_fx_offset(bd, z->x, z->y); + _border_resize_fx(bd, z->x, z->y, z->w, shelfsize); e_border_stick(bd); } - else if (illume_border_is_bottom_panel(bd)) + else if (illume_border_is_bottom_panel(bd)) { - if ((bd->w != z->w) || (bd->h != panelsize)) - e_border_resize(bd, z->w, panelsize); - if ((bd->x != z->x) || (bd->y != (z->y + z->h - panelsize))) - e_border_fx_offset(bd, z->x, (z->y + z->h - panelsize)); + _border_resize_fx(bd, z->x, (z->y + z->h - panelsize), + z->w, panelsize); e_border_stick(bd); } - else if (illume_border_is_keyboard(bd)) + else if (illume_border_is_keyboard(bd)) { - if ((bd->w != z->w) || (bd->h != kbdsize)) - e_border_resize(bd, z->w, kbdsize); - if ((bd->x != z->x) || (bd->y != (z->y + z->h - kbdsize))) - e_border_fx_offset(bd, z->x, (z->y + z->h - kbdsize)); + _border_resize_fx(bd, z->x, (z->y + z->h - kbdsize), + z->w, kbdsize); e_border_stick(bd); } - else if (illume_border_is_dialog(bd)) + else if (illume_border_is_dialog(bd)) { + int mh; + + illume_border_min_get(bd, NULL, &mh); if (mh > z->h) mh = z->h; - if ((bd->w != z->w) || (bd->h != mh)) - e_border_resize(bd, z->w, mh); - if ((bd->x != z->x) || (bd->y != (z->y + ((z->h - mh) / 2)))) - e_border_fx_offset(bd, z->x, (z->y + ((z->h - mh) / 2))); + _border_resize_fx(bd, z->x, (z->y + ((z->h - mh) / 2)), + z->w, mh); } - else if ((bd->need_fullscreen) || (bd->fullscreen)) + else { - int kx, ky, kw, kh; + /* normal border, handle layout based on policy mode */ + if (il_cfg->policy.mode.dual) _zone_layout_dual(bd); + else _zone_layout_single(bd); + } + } +} - e_kbd_safe_app_region_get(z, &kx, &ky, &kw, &kh); - if (!il_cfg->policy.mode.dual) - { - if ((bd->w != kw) || (bd->h != kh)) - { - bd->w = kw; - bd->h = kh; - bd->client.w = kw; - bd->client.h = kh; - bd->changes.size = 1; - } - if ((bd->x != kx) || (bd->y != ky)) - { - bd->x = kx; - bd->y = ky; - bd->changes.pos = 1; - } - } +static void +_zone_layout_single(E_Border *bd) +{ + int kx, ky, kw, kh, ss, ps; + + /* grab the 'safe' region. Safe region is space not occupied by keyboard */ + e_kbd_safe_app_region_get(bd->zone, &kx, &ky, &kw, &kh); + if (!illume_border_is_conformant(bd)) + { + if (!((bd->need_fullscreen) || (bd->fullscreen))) + { + if (kh >= bd->zone->h) ps = panelsize; + ss = shelfsize; } - else /* not fullscreen border; handle all other borders */ + } + else + kh = bd->zone->h; + _border_resize_fx(bd, kx, (ky + ss), kw, (kh - ss - ps)); +} + +static void +_zone_layout_dual(E_Border *bd) +{ + if (il_cfg->policy.mode.side == 0) _zone_layout_dual_top(bd); + else if (il_cfg->policy.mode.side == 1) _zone_layout_dual_left(bd); +} + +static void +_zone_layout_dual_top(E_Border *bd) +{ + int kx, ky, kw, kh, ss, ps; + int count, conform; + + /* get count of valid borders */ + count = illume_border_valid_count_get(); + + /* fetch if this border is conformant */ + conform = illume_border_is_conformant(bd); + + /* grab the 'safe' region. Safe region is space not occupied by keyboard */ + e_kbd_safe_app_region_get(bd->zone, &kx, &ky, &kw, &kh); + if (!conform) + { + /* if the border is not conformant and doesn't need fullscreen, then + * we account for shelf & panel sizes */ + if (!((bd->need_fullscreen) || (bd->fullscreen))) { - int kx, ky, kw, kh, ps, ss; - int bx, by, bw, bh; + if (kh >= bd->zone->h) ps = panelsize; + ss = shelfsize; + } + } - ss = 0; - ps = 0; - e_kbd_safe_app_region_get(z, &kx, &ky, &kw, &kh); - if (!illume_border_is_conformant(bd)) + /* if there are no other borders, than give this one all available space */ + if (count < 2) + _border_resize_fx(bd, kx, (ky + ss), kw, (kh - ss - ps)); + else + { + E_Border *b; + int bh, by; + + /* more than one valid border */ + + /* grab the border at this location */ + b = illume_border_at_xy_get(kx, shelfsize); + + if ((b) && (bd != b)) + { + /* we have a border there, and it's not the current one */ + if (!illume_border_is_conformant(b)) { - if (kh >= z->h) ps = panelsize; - ss = shelfsize; + /* border in this location is not conformant */ + bh = ((kh - ss - ps) / 2); + by = (b->fx.y + b->h); } - bx = kx; - by = (ky + ss); - bw = kw; - bh = (kh - ss - ps); - if (il_cfg->policy.mode.dual) + else { - E_Border *b; - - if (il_cfg->policy.mode.side == 0) /* top/bottom */ + /* border there is conformant */ + if (conform) { - bh = (bh / 2); - b = illume_border_at_xy_get(bx, by); - if ((b) && (bd != b)) - by = (by + bh); - else if (b) - by = bd->fx.y; + /* if current border is conformant, divide zone in half */ + bh = ((bd->zone->h - ss) / 2); + by = by + bh; } - else if (il_cfg->policy.mode.side == 1) /* left/right */ + else { - bw = (bw / 2); - b = illume_border_at_xy_get(kx, by); - if ((b) && (bd != b)) - bx = (bx + bw); - else if (b) - bx = bd->x; + /* current border is not conformant */ + by = (b->fx.y + b->h); + bh = (kh - by - ps); } } - if ((bd->w != bw) || (bd->h != bh)) - e_border_resize(bd, bw, bh); - if ((bd->x != bx) || (bd->y != by)) - e_border_fx_offset(bd, bx, by); } + else if (b) + { + /* border at this location and it's the current border */ + by = bd->fx.y; + if (conform) + bh = ((kh - ss - ps) / 2); + else + bh = ((kh - ss - ps) / 2); + } + else + { + /* no border at this location */ + b = illume_border_valid_border_get(); + if (conform) + by = ky; + else + by = (ky + ss); + bh = (kh - b->h); + } + _border_resize_fx(bd, kx, by, kw, bh); } } -static void -_zone_move_resize(E_Zone *z) -{ // the zone was moved or resized - re-configure all windows in this zone - _zone_layout(z); -} - static void -_border_activate(E_Border *bd) +_zone_layout_dual_left(E_Border *bd) { - if ((bd) && (!bd->focused)) + int kx, ky, kw, kh, ss, ps; + int count, conform; + + /* get count of valid borders */ + count = illume_border_valid_count_get(); + + /* fetch if this border is conformant */ + conform = illume_border_is_conformant(bd); + + /* grab the 'safe' region. Safe region is space not occupied by keyboard */ + e_kbd_safe_app_region_get(bd->zone, &kx, &ky, &kw, &kh); + if (!conform) { - if ((e_config->focus_setting == E_FOCUS_NEW_WINDOW) || - ((bd->parent) && - ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) || - ((bd->parent->focused) && - (e_config->focus_setting == E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED))))) + /* if the border is not conformant and doesn't need fullscreen, then + * we account for shelf & panel sizes */ + if (!((bd->need_fullscreen) || (bd->fullscreen))) { - if (bd->iconic) + if (kh >= bd->zone->h) ps = panelsize; + ss = shelfsize; + } + } + + /* if there are no other borders, than give this one all available space */ + if (count < 2) + _border_resize_fx(bd, kx, (ky + ss), kw, (kh - ss - ps)); + else + { + E_Border *b; + int bx, by, bw, bh; + + /* more than one valid border */ + bx = kx; + by = (ky + ss); + bw = kw; + bh = (kh - ss - ps); + /* grab the border at this location */ + b = illume_border_at_xy_get(kx, shelfsize); + + if ((b) && (bd != b)) + { + /* we have a border there, and it's not the current one */ + if (!illume_border_is_conformant(b)) { - if (!bd->lock_user_iconify) e_border_uniconify(bd); + /* border in this location is not conformant */ + bw = (kw / 2); + bx = (b->fx.x + b->w); } - if (!bd->lock_user_stacking) e_border_raise(bd); - if (!bd->lock_focus_out) e_border_focus_set(bd, 1, 1); + else + { + /* border there is conformant */ + if (conform) + { + /* if current border is conformant, divide zone in half */ + bw = (bd->zone->w / 2); + bx = bx + bw; + } + else + { + /* current border is not conformant */ + bx = (b->fx.x + b->w); + bw = (kw - bx); + } + } } + else if (b) + { + /* border at this location and it's the current border */ + bx = bd->fx.x; + bw = (kw / 2); + } + else + { + /* no border at this location */ + b = illume_border_valid_border_get(); + bx = kx; + bw = (kw - b->w); + } + _border_resize_fx(bd, bx, by, bw, bh); } } -////////////////////////////////////////////////////////////////////////////// -const Illume_Layout_Mode laymode = +static void +_zone_move_resize(E_Zone *z) { - "illume", "Illume", // FIXME: translatable? - _border_add, - _border_del, - _border_focus_in, - _border_focus_out, - _zone_layout, - _zone_move_resize, - _border_activate -}; - -void -illume_layout_illume_init(void) -{ - illume_layout_mode_register(&laymode); + /* the zone was moved or resized - re-configure all windows in this zone */ + _zone_layout(z); } - -void -illume_layout_illume_shutdown(void) -{ - illume_layout_mode_unregister(&laymode); -} |
From: Enlightenment S. <no-...@en...> - 2009-12-15 00:39:52
|
Log: Don't focus activated if focus is locked out. Author: devilhorns Date: 2009-12-14 16:12:26 -0800 (Mon, 14 Dec 2009) New Revision: 44456 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-14 23:56:56 UTC (rev 44455) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 00:12:26 UTC (rev 44456) @@ -163,8 +163,9 @@ { /* HANDLE A BORDER BEING ACTIVATED */ - /* only set focus if border accepts it */ - if ((!bd->client.icccm.accepts_focus) && (!bd->client.icccm.take_focus)) + /* only set focus if border accepts it and it's not locked out */ + if (((!bd->client.icccm.accepts_focus) && (!bd->client.icccm.take_focus)) || + (bd->lock_focus_out)) return; /* if the border is not focused, check focus settings */ |
From: Enlightenment S. <no-...@en...> - 2009-12-15 01:51:32
|
Log: More appropriate place for border layers on fullscreen & conformant. Author: devilhorns Date: 2009-12-14 17:51:19 -0800 (Mon, 14 Dec 2009) New Revision: 44458 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 01:35:09 UTC (rev 44457) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 01:51:19 UTC (rev 44458) @@ -96,6 +96,8 @@ { E_Border *b; + if (bd->layer != 115) e_border_layer_set(bd, 115); + /* we lock stacking so that the keyboard does not get put * under the window (if it's needed) */ bd->lock_user_stacking = 1; @@ -112,6 +114,10 @@ if (b) e_border_fx_offset(b, 0, -shelfsize); } } + if (conform) + { + if (bd->layer != 110) e_border_layer_set(bd, 110); + } /* we lock stacking so that the keyboard does not get put * under the window (if it's needed) */ @@ -221,10 +227,6 @@ { if (kbdsize < mh) kbdsize = mh; } - else if (illume_border_is_conformant(bd)) - { - if (bd->layer != 110) e_border_layer_set(bd, 110); - } } /* grab list of borders */ |
From: Enlightenment S. <no-...@en...> - 2009-12-15 01:54:50
|
Log: Reenable layering of dialogs. Author: devilhorns Date: 2009-12-14 17:35:09 -0800 (Mon, 14 Dec 2009) New Revision: 44457 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 00:12:26 UTC (rev 44456) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 01:35:09 UTC (rev 44457) @@ -221,6 +221,10 @@ { if (kbdsize < mh) kbdsize = mh; } + else if (illume_border_is_conformant(bd)) + { + if (bd->layer != 110) e_border_layer_set(bd, 110); + } } /* grab list of borders */ @@ -235,18 +239,21 @@ { _border_resize_fx(bd, z->x, z->y, z->w, shelfsize); e_border_stick(bd); + if (bd->layer != 200) e_border_layer_set(bd, 200); } else if (illume_border_is_bottom_panel(bd)) { _border_resize_fx(bd, z->x, (z->y + z->h - panelsize), z->w, panelsize); e_border_stick(bd); + if (bd->layer != 100) e_border_layer_set(bd, 100); } else if (illume_border_is_keyboard(bd)) { _border_resize_fx(bd, z->x, (z->y + z->h - kbdsize), z->w, kbdsize); e_border_stick(bd); + if (bd->layer != 150) e_border_layer_set(bd, 150); } else if (illume_border_is_dialog(bd)) { @@ -256,6 +263,7 @@ if (mh > z->h) mh = z->h; _border_resize_fx(bd, z->x, (z->y + ((z->h - mh) / 2)), z->w, mh); + if (bd->layer != 120) e_border_layer_set(bd, 120); } else { |
From: Enlightenment S. <no-...@en...> - 2009-12-15 02:11:47
|
Log: Better placement of 'dialog' types for portrait mode. Author: devilhorns Date: 2009-12-14 18:11:32 -0800 (Mon, 14 Dec 2009) New Revision: 44459 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 01:51:19 UTC (rev 44458) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-15 02:11:32 UTC (rev 44459) @@ -259,12 +259,13 @@ } else if (illume_border_is_dialog(bd)) { - int mh; + int mw, mh; - illume_border_min_get(bd, NULL, &mh); + illume_border_min_get(bd, &mw, &mh); if (mh > z->h) mh = z->h; - _border_resize_fx(bd, z->x, (z->y + ((z->h - mh) / 2)), - z->w, mh); + if (mw > z->w) mw = z->w; + _border_resize_fx(bd, (z->x + ((z->w - mw) / 2)), + (z->y + ((z->h - mh) / 2)), mw, mh); if (bd->layer != 120) e_border_layer_set(bd, 120); } else |
From: Enlightenment S. <no-...@en...> - 2009-12-15 06:55:49
|
Log: Start of dnd code for dragging indicator bars. Author: devilhorns Date: 2009-12-14 22:55:37 -0800 (Mon, 14 Dec 2009) New Revision: 44472 Added: trunk/e/src/modules/illume2/e_mod_dnd.c trunk/e/src/modules/illume2/e_mod_dnd.h Modified: trunk/e/src/modules/illume2/Makefile.am trunk/e/src/modules/illume2/e_mod_main.c Modified: trunk/e/src/modules/illume2/Makefile.am =================================================================== --- trunk/e/src/modules/illume2/Makefile.am 2009-12-15 06:38:32 UTC (rev 44471) +++ trunk/e/src/modules/illume2/Makefile.am 2009-12-15 06:55:37 UTC (rev 44472) @@ -40,7 +40,9 @@ e_mod_policy_settings.h \ e_mod_policy_settings.c \ e_mod_gadcon.h \ - e_mod_gadcon.c + e_mod_gadcon.c \ + e_mod_dnd.h \ + e_mod_dnd.c module_la_LIBADD = @e_libs@ @dlopen_libs@ module_la_LDFLAGS = -module -avoid-version Modified: trunk/e/src/modules/illume2/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_main.c 2009-12-15 06:38:32 UTC (rev 44471) +++ trunk/e/src/modules/illume2/e_mod_main.c 2009-12-15 06:55:37 UTC (rev 44472) @@ -4,7 +4,9 @@ #include "e_mod_layout.h" #include "e_kbd.h" #include "e_mod_gadcon.h" +#include "e_mod_dnd.h" +/* local variables */ static E_Kbd *kbd = NULL; /* this is needed to advertise a label for the module IN the code (not just @@ -17,9 +19,16 @@ EAPI void * e_modapi_init(E_Module *m) { - /* init the config system */ + /* init the config subsystem */ if (!il_config_init(m)) return NULL; + /* init the drag-n-drop subsystem */ + if (!e_mod_dnd_init()) + { + il_config_shutdown(); + return NULL; + } + /* init the gadcon subsystem for adding a "button" to any gadget container * which will allow easy switching between policy app modes */ e_mod_gadcon_init(); @@ -27,17 +36,16 @@ /* set up the virtual keyboard */ e_kbd_init(m); - /* init the layout system */ + /* init the layout subsystem */ e_mod_layout_init(m); /* create a new keyboard */ - kbd = e_kbd_new(e_util_container_zone_number_get(0, 0), - m->dir, m->dir, m->dir); + kbd = + e_kbd_new(e_util_container_zone_number_get(0, 0), m->dir, m->dir, m->dir); /* show the keyboard if needed */ e_kbd_show(kbd); - /* return NULL on failure, anything else on success. the pointer * returned will be set as m->data for convenience tracking */ return m; @@ -60,6 +68,9 @@ /* shutdown the gadget subsystem */ e_mod_gadcon_shutdown(); + /* shutdown the dnd subsystem */ + e_mod_dnd_shutdown(); + /* shutdown the config subsystem */ il_config_shutdown(); @@ -73,3 +84,22 @@ { return il_config_save(); } + +/* local functions */ +static int +_cb_event_dnd_drop(void *data, int type, void *event) +{ + return 1; +} + +static int +_cb_event_dnd_position(void *data, int type, void *event) +{ + return 1; +} + +static int +_cb_event_dnd_selection(void *data, int type, void *event) +{ + return 1; +} |
From: Enlightenment S. <no-...@en...> - 2009-12-15 08:24:53
|
Log: More work on dnd for indicator bar (not complete yet). Author: devilhorns Date: 2009-12-15 00:24:40 -0800 (Tue, 15 Dec 2009) New Revision: 44474 Modified: trunk/e/src/modules/illume2/e_mod_dnd.c Modified: trunk/e/src/modules/illume2/e_mod_dnd.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_dnd.c 2009-12-15 07:53:35 UTC (rev 44473) +++ trunk/e/src/modules/illume2/e_mod_dnd.c 2009-12-15 08:24:40 UTC (rev 44474) @@ -7,24 +7,32 @@ static void _cb_dnd_move(void *data, const char *type, void *event); static void _cb_dnd_leave(void *data, const char *type, void *event); static void _cb_dnd_drop(void *data, const char *type, void *event); +static int _cb_zone_move_resize(void *data, int type, void *event); /* local variables */ static E_Drop_Handler *drop_handler = NULL; static const char *drop_types[] = { "illume/indicator" }; +static Ecore_Event_Handler *handler = NULL; /* public functions */ EAPI int e_mod_dnd_init(void) { - E_Container *con; + E_Zone *z; - con = e_container_current_get(e_manager_current_get()); + z = e_util_container_zone_number_get(0, 0); + e_drop_xdnd_register_set(z->container->bg_win, 1); + + handler = + ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, + _cb_zone_move_resize, z); + drop_handler = - e_drop_handler_add(E_OBJECT(con), NULL, + e_drop_handler_add(E_OBJECT(z), z, _cb_dnd_enter, _cb_dnd_move, _cb_dnd_leave, _cb_dnd_drop, - drop_types, 1, con->x, con->y, con->w, con->h); - if (!drop_handler) return 0; + drop_types, 1, z->x, z->y, z->w, z->h); + e_drop_handler_responsive_set(drop_handler); return 1; } @@ -32,6 +40,8 @@ EAPI int e_mod_dnd_shutdown(void) { + if (handler) ecore_event_handler_del(handler); + handler = NULL; if (drop_handler) e_drop_handler_del(drop_handler); drop_handler = NULL; return 1; @@ -44,7 +54,9 @@ E_Event_Dnd_Enter *ev; ev = event; + printf("Dnd Enter\n"); if (strcmp(type, drop_types[0])) return; + e_drop_handler_action_set(ev->action); } static void @@ -53,7 +65,9 @@ E_Event_Dnd_Move *ev; ev = event; + printf("Dnd Move\n"); if (strcmp(type, drop_types[0])) return; + e_drop_handler_action_set(ev->action); } static void @@ -62,6 +76,7 @@ E_Event_Dnd_Leave *ev; ev = event; + printf("Dnd Leave\n"); if (strcmp(type, drop_types[0])) return; } @@ -71,5 +86,19 @@ E_Event_Dnd_Drop *ev; ev = event; + printf("Dnd Drop\n"); if (strcmp(type, drop_types[0])) return; } + +static int +_cb_zone_move_resize(void *data, int type, void *event) +{ + E_Event_Zone_Move_Resize *ev; + E_Zone *z; + + if (!(z = data)) return 1; + ev = event; + if ((ev->zone != z)) return 1; + e_drop_handler_geometry_set(drop_handler, z->x, z->y, z->w, z->h); + return 1; +} |
From: Enlightenment S. <no-...@en...> - 2009-12-16 02:21:43
|
Log: Add drag_start and drag_end to policy. Remove old dead code. Author: devilhorns Date: 2009-12-15 18:21:28 -0800 (Tue, 15 Dec 2009) New Revision: 44493 Modified: trunk/e/src/modules/illume2/e_mod_dnd.c trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_layout.h trunk/e/src/modules/illume2/e_mod_layout_illume.c trunk/e/src/modules/illume2/e_mod_main.c Modified: trunk/e/src/modules/illume2/e_mod_dnd.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_dnd.c 2009-12-16 02:20:38 UTC (rev 44492) +++ trunk/e/src/modules/illume2/e_mod_dnd.c 2009-12-16 02:21:28 UTC (rev 44493) @@ -3,16 +3,9 @@ #include "e_mod_dnd.h" /* local function prototypes */ -static void _cb_dnd_enter(void *data, const char *type, void *event); -static void _cb_dnd_move(void *data, const char *type, void *event); -static void _cb_dnd_leave(void *data, const char *type, void *event); -static void _cb_dnd_drop(void *data, const char *type, void *event); -static int _cb_zone_move_resize(void *data, int type, void *event); /* local variables */ -static E_Drop_Handler *drop_handler = NULL; -static const char *drop_types[] = { "illume/indicator" }; -static Ecore_Event_Handler *handler = NULL; +static Eina_List *handlers = NULL; /* public functions */ EAPI int @@ -21,84 +14,14 @@ E_Zone *z; z = e_util_container_zone_number_get(0, 0); - e_drop_xdnd_register_set(z->container->bg_win, 1); - handler = - ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, - _cb_zone_move_resize, z); - - drop_handler = - e_drop_handler_add(E_OBJECT(z), z, - _cb_dnd_enter, _cb_dnd_move, - _cb_dnd_leave, _cb_dnd_drop, - drop_types, 1, z->x, z->y, z->w, z->h); - e_drop_handler_responsive_set(drop_handler); - return 1; } EAPI int e_mod_dnd_shutdown(void) { - if (handler) ecore_event_handler_del(handler); - handler = NULL; - if (drop_handler) e_drop_handler_del(drop_handler); - drop_handler = NULL; return 1; } /* local functions */ -static void -_cb_dnd_enter(void *data, const char *type, void *event) -{ - E_Event_Dnd_Enter *ev; - - ev = event; - printf("Dnd Enter\n"); - if (strcmp(type, drop_types[0])) return; - e_drop_handler_action_set(ev->action); -} - -static void -_cb_dnd_move(void *data, const char *type, void *event) -{ - E_Event_Dnd_Move *ev; - - ev = event; - printf("Dnd Move\n"); - if (strcmp(type, drop_types[0])) return; - e_drop_handler_action_set(ev->action); -} - -static void -_cb_dnd_leave(void *data, const char *type, void *event) -{ - E_Event_Dnd_Leave *ev; - - ev = event; - printf("Dnd Leave\n"); - if (strcmp(type, drop_types[0])) return; -} - -static void -_cb_dnd_drop(void *data, const char *type, void *event) -{ - E_Event_Dnd_Drop *ev; - - ev = event; - printf("Dnd Drop\n"); - if (strcmp(type, drop_types[0])) return; -} - -static int -_cb_zone_move_resize(void *data, int type, void *event) -{ - E_Event_Zone_Move_Resize *ev; - E_Zone *z; - - if (!(z = data)) return 1; - ev = event; - if ((ev->zone != z)) return 1; - e_drop_handler_geometry_set(drop_handler, z->x, z->y, z->w, z->h); - return 1; -} Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-16 02:20:38 UTC (rev 44492) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-16 02:21:28 UTC (rev 44493) @@ -723,5 +723,23 @@ if (!(bd = e_border_focused_get())) return 1; e_border_act_close_begin(bd); } + else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_DRAG_START) + { + E_Border *bd; + + bd = e_border_find_by_client_window(ev->win); + if (bd->stolen) return 1; + if ((mode) && (mode->funcs.drag_start)) + mode->funcs.drag_start(bd); + } + else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_DRAG_END) + { + E_Border *bd; + + bd = e_border_find_by_client_window(ev->win); + if (bd->stolen) return 1; + if ((mode) && (mode->funcs.drag_end)) + mode->funcs.drag_end(bd); + } return 1; } Modified: trunk/e/src/modules/illume2/e_mod_layout.h =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-16 02:20:38 UTC (rev 44492) +++ trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-16 02:21:28 UTC (rev 44493) @@ -30,6 +30,8 @@ void (*zone_move_resize) (E_Zone *zone); // --- add more below (activate callback, and more) void (*border_activate) (E_Border *bd); + void (*drag_start) (E_Border *bd); + void (*drag_end) (E_Border *bd); } funcs; }; Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-16 02:20:38 UTC (rev 44492) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-16 02:21:28 UTC (rev 44493) @@ -12,17 +12,24 @@ static void _border_focus_in(E_Border *bd); static void _border_focus_out(E_Border *bd); static void _border_activate(E_Border *bd); +static void _drag_start(E_Border *bd); +static void _drag_end(E_Border *bd); static void _zone_layout(E_Zone *z); static void _zone_layout_single(E_Border *bd); static void _zone_layout_dual(E_Border *bd); static void _zone_layout_dual_top(E_Border *bd); static void _zone_layout_dual_left(E_Border *bd); static void _zone_move_resize(E_Zone *z); +static int _cb_mouse_up(void *data, int type, void *event); +static int _cb_mouse_move(void *data, int type, void *event); /* local variables */ static int shelfsize = 0; static int kbdsize = 0; static int panelsize = 0; +static Ecore_X_Window _drag_win = 0; +static Eina_List *handlers = NULL; +static E_Border *_drag_border = NULL; const Illume_Layout_Mode laymode = { @@ -30,7 +37,8 @@ _border_add, _border_del, _border_focus_in, _border_focus_out, _zone_layout, _zone_move_resize, - _border_activate + _border_activate, + _drag_start, _drag_end }; /* public functions */ @@ -38,11 +46,24 @@ illume_layout_illume_init(void) { illume_layout_mode_register(&laymode); + handlers = + eina_list_append(handlers, + ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, + _cb_mouse_up, NULL)); + handlers = + eina_list_append(handlers, + ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, + _cb_mouse_move, NULL)); } void illume_layout_illume_shutdown(void) { + Ecore_Event_Handler *handler; + + EINA_LIST_FREE(handlers, handler) + ecore_event_handler_del(handler); + illume_layout_mode_unregister(&laymode); } @@ -197,6 +218,34 @@ } static void +_drag_start(E_Border *bd) +{ + E_Container *con; + + /* HANDLE A BORDER DRAG BEING STARTED */ + + if (_drag_win) return; + con = bd->zone->container; + _drag_win = + ecore_x_window_input_new(con->win, con->x, con->y, con->w, con->h); + ecore_x_window_show(_drag_win); + if (!e_grabinput_get(_drag_win, 1, _drag_win)) + { + ecore_x_window_free(_drag_win); + return; + } + _drag_border = bd; +} + +static void +_drag_end(E_Border *bd) +{ + /* HANDLE A BORDER DRAG BEING ENDED */ + ecore_x_e_illume_drag_set(bd->client.win, 0); + _drag_border = NULL; +} + +static void _zone_layout(E_Zone *z) { Eina_List *l, *borders; @@ -241,7 +290,7 @@ { _border_resize_fx(bd, z->x, z->y, z->w, shelfsize); e_border_stick(bd); - if (bd->layer != 200) e_border_layer_set(bd, 200); + if (bd->layer != 100) e_border_layer_set(bd, 100); } else if (illume_border_is_bottom_panel(bd)) { @@ -481,3 +530,31 @@ /* the zone was moved or resized - re-configure all windows in this zone */ _zone_layout(z); } + +static int +_cb_mouse_up(void *data, int type, void *event) +{ + Ecore_Event_Mouse_Button *ev; + + ev = event; + if (ev->window != _drag_win) return 1; + e_grabinput_release(_drag_win, _drag_win); + ecore_x_window_free(_drag_win); + _drag_win = 0; + ecore_x_e_illume_drag_end_send(_drag_border->client.win); + return 1; +} + +static int +_cb_mouse_move(void *data, int type, void *event) +{ + Ecore_Event_Mouse_Move *ev; + + ev = event; + if (ev->window != _drag_win) return 1; + if ((ev->y + _drag_border->h) >= _drag_border->zone->h) return 1; + if ((ev->y + _drag_border->h) >= (_drag_border->zone->h - panelsize)) return 1; + if ((_drag_border->y != ev->y)) + e_border_move(_drag_border, _drag_border->x, ev->y); + return 1; +} Modified: trunk/e/src/modules/illume2/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_main.c 2009-12-16 02:20:38 UTC (rev 44492) +++ trunk/e/src/modules/illume2/e_mod_main.c 2009-12-16 02:21:28 UTC (rev 44493) @@ -84,22 +84,3 @@ { return il_config_save(); } - -/* local functions */ -static int -_cb_event_dnd_drop(void *data, int type, void *event) -{ - return 1; -} - -static int -_cb_event_dnd_position(void *data, int type, void *event) -{ - return 1; -} - -static int -_cb_event_dnd_selection(void *data, int type, void *event) -{ - return 1; -} |
From: Enlightenment S. <no-...@en...> - 2009-12-16 02:22:47
|
Log: Remove dnd files. Handled it differently. Author: devilhorns Date: 2009-12-15 18:22:34 -0800 (Tue, 15 Dec 2009) New Revision: 44495 Removed: trunk/e/src/modules/illume2/e_mod_dnd.c trunk/e/src/modules/illume2/e_mod_dnd.h Modified: trunk/e/src/modules/illume2/Makefile.am trunk/e/src/modules/illume2/e_mod_main.c Modified: trunk/e/src/modules/illume2/Makefile.am =================================================================== --- trunk/e/src/modules/illume2/Makefile.am 2009-12-16 02:21:47 UTC (rev 44494) +++ trunk/e/src/modules/illume2/Makefile.am 2009-12-16 02:22:34 UTC (rev 44495) @@ -40,9 +40,7 @@ e_mod_policy_settings.h \ e_mod_policy_settings.c \ e_mod_gadcon.h \ - e_mod_gadcon.c \ - e_mod_dnd.h \ - e_mod_dnd.c + e_mod_gadcon.c module_la_LIBADD = @e_libs@ @dlopen_libs@ module_la_LDFLAGS = -module -avoid-version Modified: trunk/e/src/modules/illume2/e_mod_main.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_main.c 2009-12-16 02:21:47 UTC (rev 44494) +++ trunk/e/src/modules/illume2/e_mod_main.c 2009-12-16 02:22:34 UTC (rev 44495) @@ -4,7 +4,6 @@ #include "e_mod_layout.h" #include "e_kbd.h" #include "e_mod_gadcon.h" -#include "e_mod_dnd.h" /* local variables */ static E_Kbd *kbd = NULL; @@ -22,13 +21,6 @@ /* init the config subsystem */ if (!il_config_init(m)) return NULL; - /* init the drag-n-drop subsystem */ - if (!e_mod_dnd_init()) - { - il_config_shutdown(); - return NULL; - } - /* init the gadcon subsystem for adding a "button" to any gadget container * which will allow easy switching between policy app modes */ e_mod_gadcon_init(); @@ -68,9 +60,6 @@ /* shutdown the gadget subsystem */ e_mod_gadcon_shutdown(); - /* shutdown the dnd subsystem */ - e_mod_dnd_shutdown(); - /* shutdown the config subsystem */ il_config_shutdown(); |
From: Enlightenment S. <no-...@en...> - 2009-12-16 20:12:59
|
Log: Add config options to lock dragables. Cleanup some code. Author: devilhorns Date: 2009-12-16 12:12:49 -0800 (Wed, 16 Dec 2009) New Revision: 44515 Modified: trunk/e/src/modules/illume2/e_mod_config.c trunk/e/src/modules/illume2/e_mod_config.h trunk/e/src/modules/illume2/e_mod_layout_illume.c trunk/e/src/modules/illume2/e_mod_policy_settings.c Modified: trunk/e/src/modules/illume2/e_mod_config.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_config.c 2009-12-16 20:10:09 UTC (rev 44514) +++ trunk/e/src/modules/illume2/e_mod_config.c 2009-12-16 20:12:49 UTC (rev 44515) @@ -41,6 +41,7 @@ E_CONFIG_VAL(D, T, policy.softkey.match.name, INT); E_CONFIG_VAL(D, T, policy.softkey.match.title, INT); E_CONFIG_VAL(D, T, policy.softkey.match.win_type, INT); + E_CONFIG_VAL(D, T, policy.softkey.locked, INT); E_CONFIG_VAL(D, T, policy.home.class, STR); E_CONFIG_VAL(D, T, policy.home.name, STR); E_CONFIG_VAL(D, T, policy.home.title, STR); @@ -57,6 +58,7 @@ E_CONFIG_VAL(D, T, policy.indicator.match.name, INT); E_CONFIG_VAL(D, T, policy.indicator.match.title, INT); E_CONFIG_VAL(D, T, policy.indicator.match.win_type, INT); + E_CONFIG_VAL(D, T, policy.indicator.locked, INT); il_cfg = e_config_domain_load("module.illume2", conf_edd); if ((il_cfg) && @@ -128,6 +130,11 @@ il_cfg->policy.mode.dual = 0; il_cfg->policy.mode.side = 0; } + if ((il_cfg->version & 0xffff) < 3) + { + il_cfg->policy.softkey.locked = 1; + il_cfg->policy.indicator.locked = 1; + } il_cfg->version = (IL_CONFIG_MAJ << 16) | IL_CONFIG_MIN; } il_cfg->mod_dir = eina_stringshare_add(m->dir); Modified: trunk/e/src/modules/illume2/e_mod_config.h =================================================================== --- trunk/e/src/modules/illume2/e_mod_config.h 2009-12-16 20:10:09 UTC (rev 44514) +++ trunk/e/src/modules/illume2/e_mod_config.h 2009-12-16 20:12:49 UTC (rev 44515) @@ -1,7 +1,7 @@ #ifndef E_MOD_CONFIG_H # define E_MOD_CONFIG_H -# define IL_CONFIG_MIN 2 +# define IL_CONFIG_MIN 3 # define IL_CONFIG_MAJ 0 typedef struct _Il_Config Il_Config; @@ -26,7 +26,7 @@ const char *class; const char *name; const char *title; - int win_type; + int win_type, locked; struct { int class, name, title, win_type; Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-16 20:10:09 UTC (rev 44514) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-16 20:12:49 UTC (rev 44515) @@ -46,6 +46,7 @@ illume_layout_illume_init(void) { illume_layout_mode_register(&laymode); + handlers = eina_list_append(handlers, ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, @@ -231,7 +232,9 @@ ecore_x_window_show(_drag_win); if (!e_grabinput_get(_drag_win, 1, _drag_win)) { + printf("Grab Input Failed\n"); ecore_x_window_free(_drag_win); + _drag_win = 0; return; } _drag_border = bd; @@ -241,6 +244,11 @@ _drag_end(E_Border *bd) { /* HANDLE A BORDER DRAG BEING ENDED */ + + e_grabinput_release(_drag_win, _drag_win); + ecore_x_window_free(_drag_win); + _drag_win = 0; + ecore_x_e_illume_drag_set(bd->client.win, 0); _drag_border = NULL; } @@ -538,9 +546,6 @@ ev = event; if (ev->window != _drag_win) return 1; - e_grabinput_release(_drag_win, _drag_win); - ecore_x_window_free(_drag_win); - _drag_win = 0; ecore_x_e_illume_drag_end_send(_drag_border->client.win); return 1; } Modified: trunk/e/src/modules/illume2/e_mod_policy_settings.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_policy_settings.c 2009-12-16 20:10:09 UTC (rev 44514) +++ trunk/e/src/modules/illume2/e_mod_policy_settings.c 2009-12-16 20:12:49 UTC (rev 44515) @@ -1,5 +1,6 @@ #include "e.h" #include "e_mod_config.h" +#include "e_mod_layout.h" #include "e_mod_policy_settings.h" /* local function prototypes */ @@ -77,6 +78,19 @@ _il_config_policy_settings_changed, NULL); e_widget_list_object_append(list, of, 1, 0, 0.0); + of = e_widget_framelist_add(evas, _("Drag"), 0); + ow = e_widget_check_add(evas, _("Lock Top Shelf Position"), + &(il_cfg->policy.indicator.locked)); + evas_object_smart_callback_add(ow, "changed", + _il_config_policy_settings_changed, NULL); + e_widget_framelist_object_append(of, ow); + ow = e_widget_check_add(evas, _("Lock Bottom Panel Position"), + &(il_cfg->policy.softkey.locked)); + evas_object_smart_callback_add(ow, "changed", + _il_config_policy_settings_changed, NULL); + e_widget_framelist_object_append(of, ow); + e_widget_list_object_append(list, of, 1, 0, 0.0); + e_widget_disabled_set(o_top, !il_cfg->policy.mode.dual); e_widget_disabled_set(o_left, !il_cfg->policy.mode.dual); @@ -86,6 +100,15 @@ static void _il_config_policy_settings_changed(void *data, Evas_Object *obj, void *event) { + E_Border *bd; + + bd = illume_border_top_shelf_get(); + if (bd) ecore_x_e_illume_drag_locked_set(bd->client.win, + il_cfg->policy.indicator.locked); + bd = illume_border_bottom_panel_get(); + if (bd) ecore_x_e_illume_drag_locked_set(bd->client.win, + il_cfg->policy.softkey.locked); + e_widget_disabled_set(o_top, !il_cfg->policy.mode.dual); e_widget_disabled_set(o_left, !il_cfg->policy.mode.dual); if (_ps_change_timer) ecore_timer_del(_ps_change_timer); |
From: Enlightenment S. <no-...@en...> - 2009-12-16 21:13:56
|
Log: Handle dragables a bit better. This also removes the config option from the config dialog for locking. Author: devilhorns Date: 2009-12-16 13:13:48 -0800 (Wed, 16 Dec 2009) New Revision: 44517 Modified: trunk/e/src/modules/illume2/e_mod_gadcon.c trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_policy_settings.c Modified: trunk/e/src/modules/illume2/e_mod_gadcon.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_gadcon.c 2009-12-16 20:13:57 UTC (rev 44516) +++ trunk/e/src/modules/illume2/e_mod_gadcon.c 2009-12-16 21:13:48 UTC (rev 44517) @@ -103,11 +103,17 @@ static void _btn_cb_click(void *data, void *data2) { - if (il_cfg->policy.mode.dual) - il_cfg->policy.mode.dual = 0; + Ecore_X_Window xwin; + Ecore_X_Illume_Mode mode; + + if (il_cfg->policy.mode.dual) + mode = ECORE_X_ILLUME_MODE_SINGLE; else - il_cfg->policy.mode.dual = 1; - e_config_save_queue(); + mode = ECORE_X_ILLUME_MODE_DUAL; + + xwin = ecore_x_window_root_first_get(); + ecore_x_e_illume_mode_set(xwin, mode); + ecore_x_e_illume_mode_send(xwin, mode); } /* public functions */ Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-16 20:13:57 UTC (rev 44516) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-16 21:13:48 UTC (rev 44517) @@ -678,6 +678,8 @@ else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_MODE) { Ecore_X_Illume_Mode mode; + E_Border *bd; + int lock = 1; mode = ecore_x_e_illume_mode_get(ev->win); if (mode == ECORE_X_ILLUME_MODE_SINGLE) @@ -687,6 +689,17 @@ else /* unknown */ il_cfg->policy.mode.dual = 0; e_config_save_queue(); + + if (mode == ECORE_X_ILLUME_MODE_DUAL) + { + if (il_cfg->policy.mode.side == 0) lock = 0; + } + bd = illume_border_top_shelf_get(); + if (bd) + ecore_x_e_illume_drag_locked_set(bd->client.win, lock); + bd = illume_border_bottom_panel_get(); + if (bd) + ecore_x_e_illume_drag_locked_set(bd->client.win, lock); } else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_BACK) { Modified: trunk/e/src/modules/illume2/e_mod_policy_settings.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_policy_settings.c 2009-12-16 20:13:57 UTC (rev 44516) +++ trunk/e/src/modules/illume2/e_mod_policy_settings.c 2009-12-16 21:13:48 UTC (rev 44517) @@ -78,19 +78,6 @@ _il_config_policy_settings_changed, NULL); e_widget_list_object_append(list, of, 1, 0, 0.0); - of = e_widget_framelist_add(evas, _("Drag"), 0); - ow = e_widget_check_add(evas, _("Lock Top Shelf Position"), - &(il_cfg->policy.indicator.locked)); - evas_object_smart_callback_add(ow, "changed", - _il_config_policy_settings_changed, NULL); - e_widget_framelist_object_append(of, ow); - ow = e_widget_check_add(evas, _("Lock Bottom Panel Position"), - &(il_cfg->policy.softkey.locked)); - evas_object_smart_callback_add(ow, "changed", - _il_config_policy_settings_changed, NULL); - e_widget_framelist_object_append(of, ow); - e_widget_list_object_append(list, of, 1, 0, 0.0); - e_widget_disabled_set(o_top, !il_cfg->policy.mode.dual); e_widget_disabled_set(o_left, !il_cfg->policy.mode.dual); @@ -100,17 +87,9 @@ static void _il_config_policy_settings_changed(void *data, Evas_Object *obj, void *event) { - E_Border *bd; - - bd = illume_border_top_shelf_get(); - if (bd) ecore_x_e_illume_drag_locked_set(bd->client.win, - il_cfg->policy.indicator.locked); - bd = illume_border_bottom_panel_get(); - if (bd) ecore_x_e_illume_drag_locked_set(bd->client.win, - il_cfg->policy.softkey.locked); - e_widget_disabled_set(o_top, !il_cfg->policy.mode.dual); e_widget_disabled_set(o_left, !il_cfg->policy.mode.dual); + if (_ps_change_timer) ecore_timer_del(_ps_change_timer); _ps_change_timer = ecore_timer_add(0.5, _il_config_policy_settings_change_timeout, data); @@ -119,7 +98,18 @@ static int _il_config_policy_settings_change_timeout(void *data) { + Ecore_X_Illume_Mode mode; + e_config_save_queue(); _ps_change_timer = NULL; + + if (il_cfg->policy.mode.dual) + mode = ECORE_X_ILLUME_MODE_DUAL; + else + mode = ECORE_X_ILLUME_MODE_SINGLE; + + ecore_x_e_illume_mode_set(ecore_x_window_root_first_get(), mode); + ecore_x_e_illume_mode_send(ecore_x_window_root_first_get(), mode); + return 0; } |
From: Enlightenment S. <no-...@en...> - 2009-12-16 21:39:14
|
Log: Remove config variables for locking. Send mode to root window so we can lock/unlock indicator window on startup. Author: devilhorns Date: 2009-12-16 13:39:04 -0800 (Wed, 16 Dec 2009) New Revision: 44518 Modified: trunk/e/src/modules/illume2/e_mod_config.c trunk/e/src/modules/illume2/e_mod_config.h trunk/e/src/modules/illume2/e_mod_layout_illume.c trunk/e/src/modules/illume2/e_mod_policy_settings.c Modified: trunk/e/src/modules/illume2/e_mod_config.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_config.c 2009-12-16 21:13:48 UTC (rev 44517) +++ trunk/e/src/modules/illume2/e_mod_config.c 2009-12-16 21:39:04 UTC (rev 44518) @@ -41,7 +41,6 @@ E_CONFIG_VAL(D, T, policy.softkey.match.name, INT); E_CONFIG_VAL(D, T, policy.softkey.match.title, INT); E_CONFIG_VAL(D, T, policy.softkey.match.win_type, INT); - E_CONFIG_VAL(D, T, policy.softkey.locked, INT); E_CONFIG_VAL(D, T, policy.home.class, STR); E_CONFIG_VAL(D, T, policy.home.name, STR); E_CONFIG_VAL(D, T, policy.home.title, STR); @@ -58,7 +57,6 @@ E_CONFIG_VAL(D, T, policy.indicator.match.name, INT); E_CONFIG_VAL(D, T, policy.indicator.match.title, INT); E_CONFIG_VAL(D, T, policy.indicator.match.win_type, INT); - E_CONFIG_VAL(D, T, policy.indicator.locked, INT); il_cfg = e_config_domain_load("module.illume2", conf_edd); if ((il_cfg) && @@ -130,11 +128,6 @@ il_cfg->policy.mode.dual = 0; il_cfg->policy.mode.side = 0; } - if ((il_cfg->version & 0xffff) < 3) - { - il_cfg->policy.softkey.locked = 1; - il_cfg->policy.indicator.locked = 1; - } il_cfg->version = (IL_CONFIG_MAJ << 16) | IL_CONFIG_MIN; } il_cfg->mod_dir = eina_stringshare_add(m->dir); @@ -154,6 +147,7 @@ _("Policy Settings"), NULL, "enlightenment/policy", il_config_policy_settings_show); + return 1; } Modified: trunk/e/src/modules/illume2/e_mod_config.h =================================================================== --- trunk/e/src/modules/illume2/e_mod_config.h 2009-12-16 21:13:48 UTC (rev 44517) +++ trunk/e/src/modules/illume2/e_mod_config.h 2009-12-16 21:39:04 UTC (rev 44518) @@ -1,7 +1,7 @@ #ifndef E_MOD_CONFIG_H # define E_MOD_CONFIG_H -# define IL_CONFIG_MIN 3 +# define IL_CONFIG_MIN 2 # define IL_CONFIG_MAJ 0 typedef struct _Il_Config Il_Config; @@ -26,7 +26,7 @@ const char *class; const char *name; const char *title; - int win_type, locked; + int win_type; struct { int class, name, title, win_type; Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-16 21:13:48 UTC (rev 44517) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-16 21:39:04 UTC (rev 44518) @@ -149,6 +149,16 @@ if ((bd->client.icccm.accepts_focus) && (bd->client.icccm.take_focus) && (!bd->lock_focus_out)) e_border_focus_set(bd, 1, 1); + + if (bd == illume_border_top_shelf_get()) + { + Ecore_X_Window xwin; + Ecore_X_Illume_Mode mode; + + xwin = ecore_x_window_root_first_get(); + mode = ecore_x_e_illume_mode_get(xwin); + ecore_x_e_illume_mode_send(xwin, mode); + } } static void Modified: trunk/e/src/modules/illume2/e_mod_policy_settings.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_policy_settings.c 2009-12-16 21:13:48 UTC (rev 44517) +++ trunk/e/src/modules/illume2/e_mod_policy_settings.c 2009-12-16 21:39:04 UTC (rev 44518) @@ -98,6 +98,7 @@ static int _il_config_policy_settings_change_timeout(void *data) { + Ecore_X_Window xwin; Ecore_X_Illume_Mode mode; e_config_save_queue(); @@ -108,8 +109,9 @@ else mode = ECORE_X_ILLUME_MODE_SINGLE; - ecore_x_e_illume_mode_set(ecore_x_window_root_first_get(), mode); - ecore_x_e_illume_mode_send(ecore_x_window_root_first_get(), mode); + xwin = ecore_x_window_root_first_get(); + ecore_x_e_illume_mode_set(xwin, mode); + ecore_x_e_illume_mode_send(xwin, mode); return 0; } |
From: Enlightenment S. <no-...@en...> - 2009-12-17 23:47:59
|
Log: Add some handy functions for getting top_shelf/bottom_panel position and size. Author: devilhorns Date: 2009-12-17 15:47:48 -0800 (Thu, 17 Dec 2009) New Revision: 44530 Modified: trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_layout.h Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-17 23:42:12 UTC (rev 44529) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-17 23:47:48 UTC (rev 44530) @@ -429,6 +429,46 @@ return b; } +void +illume_border_top_shelf_pos_get(int *x, int *y) +{ + E_Border *bd; + + if (!(bd = illume_border_top_shelf_get())) return; + if (x) *x = bd->x; + if (y) *y = bd->y; +} + +void +illume_border_top_shelf_size_get(int *w, int *h) +{ + E_Border *bd; + + if (!(bd = illume_border_top_shelf_get())) return; + if (w) *w = bd->w; + if (h) *h = bd->h; +} + +void +illume_border_bottom_panel_pos_get(int *x, int *y) +{ + E_Border *bd; + + if (!(bd = illume_border_bottom_panel_get())) return; + if (x) *x = bd->x; + if (y) *y = bd->y; +} + +void +illume_border_bottom_panel_size_get(int *w, int *h) +{ + E_Border *bd; + + if (!(bd = illume_border_bottom_panel_get())) return; + if (w) *w = bd->w; + if (h) *h = bd->h; +} + void illume_border_slide_to(E_Border *bd, int x, int y, Illume_Anim_Class aclass) { Modified: trunk/e/src/modules/illume2/e_mod_layout.h =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-17 23:42:12 UTC (rev 44529) +++ trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-17 23:47:48 UTC (rev 44530) @@ -64,7 +64,8 @@ E_Border *illume_border_bottom_panel_get(void); void illume_border_top_shelf_pos_get(int *x, int *y); void illume_border_top_shelf_size_get(int *w, int *h); -void illume_border_top_shelf_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h); +void illume_border_bottom_panel_pos_get(int *x, int *y); +void illume_border_bottom_panel_size_get(int *w, int *h); void illume_border_slide_to(E_Border *bd, int x, int y, Illume_Anim_Class aclass); void illume_border_min_get(E_Border *bd, int *mw, int *mh); |
From: Enlightenment S. <no-...@en...> - 2009-12-18 05:17:20
|
Log: Some safety checks to make sure we return a border, else calls to policy are useless. Author: devilhorns Date: 2009-12-17 21:17:03 -0800 (Thu, 17 Dec 2009) New Revision: 44535 Modified: trunk/e/src/modules/illume2/e_mod_layout.c Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-18 03:25:18 UTC (rev 44534) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-18 05:17:03 UTC (rev 44535) @@ -711,7 +711,7 @@ E_Border *bd; bd = e_border_find_by_client_window(ev->win); - if (bd->stolen) return 1; + if ((!bd) || (bd->stolen)) return 1; if ((mode) && (mode->funcs.border_activate)) mode->funcs.border_activate(bd); } @@ -781,7 +781,7 @@ E_Border *bd; bd = e_border_find_by_client_window(ev->win); - if (bd->stolen) return 1; + if ((!bd) || (bd->stolen)) return 1; if ((mode) && (mode->funcs.drag_start)) mode->funcs.drag_start(bd); } @@ -790,7 +790,7 @@ E_Border *bd; bd = e_border_find_by_client_window(ev->win); - if (bd->stolen) return 1; + if ((!bd) || (bd->stolen)) return 1; if ((mode) && (mode->funcs.drag_end)) mode->funcs.drag_end(bd); } |
From: Enlightenment S. <no-...@en...> - 2009-12-18 17:51:47
|
Log: Traps for landscape mode when moving top_shelf or bottom_panel (so we don't move the panel(s) if it's in a custom location). Author: devilhorns Date: 2009-12-18 09:51:35 -0800 (Fri, 18 Dec 2009) New Revision: 44550 Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c Modified: trunk/e/src/modules/illume2/e_mod_layout_illume.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-18 17:45:47 UTC (rev 44549) +++ trunk/e/src/modules/illume2/e_mod_layout_illume.c 2009-12-18 17:51:35 UTC (rev 44550) @@ -268,19 +268,42 @@ /* trap 'special' windows as they need special treatment */ if (illume_border_is_top_shelf(bd)) { + /* make sure we are not dragging the shelf */ if (!ecore_x_e_illume_drag_get(bd->client.win)) { - _border_resize_fx(bd, z->x, z->y, z->w, shelfsize); + /* if we are not in dual mode, then set shelf to top */ + if (!il_cfg->policy.mode.dual) + _border_resize_fx(bd, z->x, z->y, z->w, shelfsize); + else + { + /* make sure we are in landscape mode */ + if (il_cfg->policy.mode.side == 0) + _border_resize_fx(bd, z->x, bd->y, z->w, shelfsize); + else + _border_resize_fx(bd, z->x, z->y, z->w, shelfsize); + } e_border_stick(bd); if (bd->layer != 100) e_border_layer_set(bd, 100); } } else if (illume_border_is_bottom_panel(bd)) { + /* make sure we are not dragging the shelf */ if (!ecore_x_e_illume_drag_get(bd->client.win)) { - _border_resize_fx(bd, z->x, (z->y + z->h - panelsize), - z->w, panelsize); + /* if we are not in dual mode, then set shelf to top */ + if (!il_cfg->policy.mode.dual) + _border_resize_fx(bd, z->x, (z->y + z->h - panelsize), + z->w, panelsize); + else + { + /* make sure we are in landscape mode */ + if (il_cfg->policy.mode.side == 0) + _border_resize_fx(bd, z->x, bd->y, z->w, panelsize); + else + _border_resize_fx(bd, z->x, (z->y + z->h - panelsize), + z->w, panelsize); + } e_border_stick(bd); if (bd->layer != 100) e_border_layer_set(bd, 100); } @@ -370,10 +393,13 @@ else { E_Border *b; - int bh, by; + int bh, by, ty; /* more than one valid border */ + /* grab location of top shelf */ + illume_border_top_shelf_pos_get(NULL, &ty); + /* grab the border at this location */ b = illume_border_at_xy_get(kx, shelfsize); |
From: Enlightenment S. <no-...@en...> - 2009-12-18 23:52:05
|
Log: Add handy functions for getting dual-app mode safe regions (safe regions being space that is available to place a window). Author: devilhorns Date: 2009-12-18 15:51:54 -0800 (Fri, 18 Dec 2009) New Revision: 44557 Modified: trunk/e/src/modules/illume2/e_mod_layout.c trunk/e/src/modules/illume2/e_mod_layout.h Modified: trunk/e/src/modules/illume2/e_mod_layout.c =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-18 22:20:08 UTC (rev 44556) +++ trunk/e/src/modules/illume2/e_mod_layout.c 2009-12-18 23:51:54 UTC (rev 44557) @@ -3,6 +3,7 @@ #include "e_mod_layout.h" #include "e_mod_layout_illume.h" #include "e_mod_config.h" +#include "e_kbd.h" // internal calls static void _e_mod_layout_cb_hook_container_layout(void *data, void *data2); @@ -495,6 +496,49 @@ } } +void +illume_border_app1_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h) +{ + int ty, th; + int kx, ky, kw, kh; + int nx, ny, nw, nh; + + if (!zone) return; + e_kbd_safe_app_region_get(zone, &kx, &ky, &kw, &kh); + nx = kx; + ny = ky; + nw = kw; + illume_border_top_shelf_pos_get(NULL, &ty); + illume_border_top_shelf_size_get(NULL, &th); + nh = (ky + ty); + if (x) *x = nx; + if (y) *y = ny; + if (w) *w = nw; + if (h) *h = nh; +} + +void +illume_border_app2_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h) +{ + int ty, th, bh; + int kx, ky, kw, kh; + int nx, ny, nw, nh; + + if (!zone) return; + e_kbd_safe_app_region_get(zone, &kx, &ky, &kw, &kh); + nx = kx; + nw = kw; + illume_border_top_shelf_pos_get(NULL, &ty); + illume_border_top_shelf_size_get(NULL, &th); + illume_border_bottom_panel_size_get(NULL, &bh); + ny = (ty + th); + nh = (kh - ny - bh); + if (x) *x = nx; + if (y) *y = ny; + if (w) *w = nw; + if (h) *h = nh; +} + static void _e_mod_layout_cb_hook_container_layout(void *data, void *data2) { Modified: trunk/e/src/modules/illume2/e_mod_layout.h =================================================================== --- trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-18 22:20:08 UTC (rev 44556) +++ trunk/e/src/modules/illume2/e_mod_layout.h 2009-12-18 23:51:54 UTC (rev 44557) @@ -69,4 +69,7 @@ void illume_border_slide_to(E_Border *bd, int x, int y, Illume_Anim_Class aclass); void illume_border_min_get(E_Border *bd, int *mw, int *mh); +void illume_border_app1_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h); +void illume_border_app2_safe_region_get(E_Zone *zone, int *x, int *y, int *w, int *h); + #endif |