From d30da0bf8e94a005816a6d46de3eba56fad61ecd Mon Sep 17 00:00:00 2001 From: sebastid Date: Fri, 2 Sep 2005 07:38:40 +0000 Subject: [PATCH] * Add options - e_config->transient.move - e_config->transient.resize - e_config->transient.raise - e_config->transient.lower - e_config->transient.layer - e_config->transient.desktop - e_config->transient.iconify * Implement - e_config->transient.raise - e_config->transient.lower - e_config->transient.layer - e_config->transient.desktop - e_config->transient.iconify * Show hide border in e_border_desk_set * Add e_border_layer_set() SVN revision: 16460 --- TODO | 6 +- src/bin/e_border.c | 127 ++++++++++++--- src/bin/e_border.h | 1 + src/bin/e_config.c | 16 +- src/bin/e_config.h | 11 +- src/bin/e_desk.c | 8 +- src/bin/e_hints.c | 40 ++--- src/bin/e_ipc_handlers.h | 280 +++++++++++++++++++++++++++++++++ src/bin/e_ipc_handlers_list.h | 22 +++ src/modules/pager/e_mod_main.c | 3 +- 10 files changed, 463 insertions(+), 51 deletions(-) diff --git a/TODO b/TODO index b401661e9..0052f1787 100644 --- a/TODO +++ b/TODO @@ -26,7 +26,10 @@ Some of the things (in very short form) that need to be done to E17... * desktopname could reaally be part of pager - and display a full pager layout of all desktops and whihc one of them just got selected +* some sort of gui display of a desktop name (in the pager?) * if a parent window is "on top" child dialog windows should also be "on top" +* transients should have option to always follow parent + (move/resize/raise/lower) (and remember this). * in addition to smart place should add manual placement and place at pointer and maybe a few others. * emit signal to submenu entries if they have a submenu shown for them or not @@ -64,11 +67,8 @@ Some of the things (in very short form) that need to be done to E17... to properly choose the border based on client window properties. * do something with the icccm urgency field hint * different borders for non-resizable windows, shaped windows etc. -* some sort of gui display of a desktop name (in the pager?) * window icons should be able to be chosen if e eapp icon overrides netwm icon or the other way around (and remember this). -* transients should have option to always follow parent - (move/resize/raise/lower) (and remember this). * actions to make current zone different (warp mouse to there) * actions to make the current container different * titlebar/border expansion/gadget panel for modules to put window widgets in diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 20101415f..5381c7c1d 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -528,6 +528,23 @@ e_border_desk_set(E_Border *bd, E_Desk *desk) ev->desk = desk; e_object_ref(E_OBJECT(desk)); ecore_event_add(E_EVENT_BORDER_DESK_SET, ev, _e_border_event_border_desk_set_free, NULL); + + if (bd->desk->visible) + e_border_show(bd); + else + e_border_hide(bd, 1); + + if (e_config->transient.desktop) + { + Evas_List *l; + for (l = bd->children; l; l = l->next) + { + E_Border *child; + + child = l->data; + e_border_desk_set(child, bd->desk); + } + } } void @@ -778,11 +795,43 @@ e_border_move_resize(E_Border *bd, int x, int y, int w, int h) _e_border_zone_update(bd); } +void +e_border_layer_set(E_Border *bd, int layer) +{ + int raise; + + E_OBJECT_CHECK(bd); + E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); + + raise = e_config->transient.raise; + + bd->layer = layer; + if (e_config->transient.layer) + { + Evas_List *l; + + /* We need to set raise to one, else the child wont + * follow to the new layer. It should be like this, + * even if the user usually doesn't want to raise + * the children. + */ + e_config->transient.raise = 1; + for (l = bd->children; l; l = l->next) + { + E_Border *child; + + child = l->data; + child->layer = layer; + } + } + e_border_raise(bd); + e_config->transient.raise = raise; +} + void e_border_raise(E_Border *bd) { E_Border *above; - Evas_List *l; E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); @@ -808,12 +857,21 @@ e_border_raise(E_Border *bd) ev->below = NULL; ecore_event_add(E_EVENT_BORDER_LOWER, ev, _e_border_event_border_lower_free, NULL); } - for (l = bd->children; l; l = l->next) - { - E_Border *child; - child = l->data; - e_border_stack_above(child, bd); + if (e_config->transient.raise) + { + Evas_List *l; + for (l = bd->children; l; l = l->next) + { + E_Border *child; + + child = l->data; + /* Don't raise iconic children. If the user wants these shown, + * thats another option. + */ + if (!child->iconic) + e_border_stack_above(child, bd); + } } } @@ -846,6 +904,17 @@ e_border_lower(E_Border *bd) ev->above = NULL; ecore_event_add(E_EVENT_BORDER_RAISE, ev, _e_border_event_border_raise_free, NULL); } + if (e_config->transient.lower) + { + Evas_List *l; + for (l = bd->children; l; l = l->next) + { + E_Border *child; + + child = l->data; + e_border_stack_above(child, bd); + } + } } void @@ -1411,8 +1480,7 @@ e_border_fullscreen(E_Border *bd) e_zone_fullscreen_set(bd->zone, 1); - bd->layer = 200; - e_border_raise(bd); + e_border_layer_set(bd, 200); x = bd->zone->x; y = bd->zone->y; w = bd->zone->w; @@ -1453,8 +1521,7 @@ e_border_unfullscreen(E_Border *bd) ecore_evas_show(bd->bg_ecore_evas); /* FIXME: Find right layer */ - bd->layer = 100; - e_border_raise(bd); + e_border_layer_set(bd, 100); e_hints_window_fullscreen_set(bd, 0); edje_object_signal_emit(bd->bg_object, "unfullscreen", ""); @@ -1485,6 +1552,19 @@ e_border_iconify(E_Border *bd) e_object_ref(E_OBJECT(bd)); // e_object_breadcrumb_add(E_OBJECT(bd), "border_iconify_event"); ecore_event_add(E_EVENT_BORDER_ICONIFY, ev, _e_border_event_border_iconify_free, NULL); + + if (e_config->transient.iconify) + { + Evas_List *l; + + for (l = bd->children; l; l = l->next) + { + E_Border *child; + + child = l->data; + e_border_iconify(child); + } + } } void @@ -1499,10 +1579,9 @@ e_border_uniconify(E_Border *bd) if ((bd->fullscreen) || (bd->shading)) return; if (bd->iconic) { + bd->iconic = 0; desk = e_desk_current_get(bd->desk->zone); e_border_desk_set(bd, desk); - bd->iconic = 0; - e_border_show(bd); e_border_raise(bd); edje_object_signal_emit(bd->bg_object, "uniconify", ""); } @@ -1515,6 +1594,18 @@ e_border_uniconify(E_Border *bd) // e_object_breadcrumb_add(E_OBJECT(bd), "border_uniconify_event"); ecore_event_add(E_EVENT_BORDER_UNICONIFY, ev, _e_border_event_border_uniconify_free, NULL); + if (e_config->transient.iconify) + { + Evas_List *l; + + for (l = bd->children; l; l = l->next) + { + E_Border *child; + + child = l->data; + e_border_uniconify(child); + } + } } void @@ -6373,10 +6464,9 @@ _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi) bd = data; if (bd->layer != 150) { - bd->layer = 150; + e_border_layer_set(bd, 150); e_hints_window_stacking_set(bd, E_STACKING_ABOVE); } - e_border_raise(bd); } static void @@ -6387,10 +6477,9 @@ _e_border_menu_cb_below(void *data, E_Menu *m, E_Menu_Item *mi) bd = data; if (bd->layer != 50) { - bd->layer = 50; + e_border_layer_set(bd, 50); e_hints_window_stacking_set(bd, E_STACKING_BELOW); } - e_border_raise(bd); } static void @@ -6401,10 +6490,9 @@ _e_border_menu_cb_normal(void *data, E_Menu *m, E_Menu_Item *mi) bd = data; if (bd->layer != 100) { - bd->layer = 100; + e_border_layer_set(bd, 100); e_hints_window_stacking_set(bd, E_STACKING_NONE); } - e_border_raise(bd); } static void @@ -6497,10 +6585,9 @@ _e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi) desk = data; bd = e_object_data_get(E_OBJECT(m)); - if ((bd) && (desk) && (bd->desk != desk)) + if ((bd) && (desk)) { e_border_desk_set(bd, desk); - e_border_hide(bd, 1); } } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index aafc285c8..46352eb22 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -488,6 +488,7 @@ EAPI void e_border_hide(E_Border *bd, int manage); EAPI void e_border_move(E_Border *bd, int x, int y); EAPI void e_border_resize(E_Border *bd, int w, int h); EAPI void e_border_move_resize(E_Border *bd, int x, int y, int w, int h); +EAPI void e_border_layer_set(E_Border *bd, int layer); EAPI void e_border_raise(E_Border *bd); EAPI void e_border_lower(E_Border *bd); EAPI void e_border_stack_above(E_Border *bd, E_Border *above); diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 053900665..be258421f 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -301,7 +301,14 @@ e_config_init(void) E_CONFIG_VAL(D, T, cursor_size, INT); /**/ E_CONFIG_VAL(D, T, menu_autoscroll_margin, INT); /**/ E_CONFIG_VAL(D, T, menu_autoscroll_cursor_margin, INT); /**/ - + E_CONFIG_VAL(D, T, transient.move, INT); /* FIXME: implement */ + E_CONFIG_VAL(D, T, transient.resize, INT); /* FIXME: implement */ + E_CONFIG_VAL(D, T, transient.raise, INT); /**/ + E_CONFIG_VAL(D, T, transient.lower, INT); /**/ + E_CONFIG_VAL(D, T, transient.layer, INT); /**/ + E_CONFIG_VAL(D, T, transient.desktop, INT); /**/ + E_CONFIG_VAL(D, T, transient.iconify, INT); /**/ + e_config = e_config_domain_load("e", _e_config_edd); if (e_config) { @@ -409,6 +416,13 @@ e_config_init(void) e_config->cursor_size = 32; e_config->menu_autoscroll_margin = 0; e_config->menu_autoscroll_cursor_margin = 1; + e_config->transient.move = 1; + e_config->transient.resize = 0; + e_config->transient.raise = 1; + e_config->transient.lower = 1; + e_config->transient.layer = 1; + e_config->transient.desktop = 1; + e_config->transient.iconify = 1; { E_Config_Module *em; diff --git a/src/bin/e_config.h b/src/bin/e_config.h index bb65575b6..7a9866c7c 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -48,7 +48,7 @@ typedef Eet_Data_Descriptor E_Config_DD; * defaults for e to work - started at 100 when we introduced this config * versioning feature */ -#define E_CONFIG_FILE_VERSION 123 +#define E_CONFIG_FILE_VERSION 124 #define E_EVAS_ENGINE_DEFAULT 0 #define E_EVAS_ENGINE_SOFTWARE_X11 1 @@ -145,6 +145,15 @@ struct _E_Config int cursor_size; int menu_autoscroll_margin; int menu_autoscroll_cursor_margin; + struct { + int move; + int resize; + int raise; + int lower; + int layer; + int desktop; + int iconify; + } transient; }; struct _E_Config_Module diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index af1cae452..25cb4a8a8 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -194,6 +194,10 @@ e_desk_show(E_Desk *desk) } } + desk->zone->desk_x_current = desk->x; + desk->zone->desk_y_current = desk->y; + desk->visible = 1; + bl = e_container_border_list_first(desk->zone->container); if (desk->zone->bg_object) was_zone = 1; while ((bd = e_container_border_list_next(bl))) @@ -227,10 +231,6 @@ e_desk_show(E_Desk *desk) if (e_config->focus_last_focused_per_desktop) e_desk_last_focused_focus(desk); - desk->zone->desk_x_current = desk->x; - desk->zone->desk_y_current = desk->y; - desk->visible = 1; - if (was_zone) e_bg_zone_update(desk->zone, E_BG_TRANSITION_DESK); else diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index 21c8995ff..a7443a189 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -349,17 +349,21 @@ e_hints_window_init(E_Border *bd) if (!bd->lock_client_stacking) { if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DESKTOP) - bd->layer = 0; + e_border_layer_set(bd, 0); else if (bd->client.netwm.state.stacking == E_STACKING_BELOW) - bd->layer = 50; + e_border_layer_set(bd, 50); else if (bd->client.netwm.state.stacking == E_STACKING_ABOVE) - bd->layer = 150; + e_border_layer_set(bd, 150); else if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK) - bd->layer = 150; + e_border_layer_set(bd, 150); else - bd->layer = 100; + e_border_layer_set(bd, 100); } - e_border_raise(bd); + else + e_border_raise(bd); + + if ((bd->parent) && (e_config->transient.layer)) + e_border_layer_set(bd, bd->parent->layer); #if 0 /* Ignore this, E has incompatible desktop setup */ @@ -438,6 +442,8 @@ e_hints_window_init(E_Border *bd) else e_hints_window_visible_set(bd); } + else if ((bd->parent) && (e_config->transient.iconify) && (bd->parent->iconic)) + e_border_iconify(bd); /* If a window isn't iconic, and is one the current desk, * show it! */ else if (bd->desk == e_desk_current_get(bd->zone)) @@ -742,19 +748,16 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state, switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: - bd->layer = 100; - e_border_raise(bd); + e_border_layer_set(bd, 100); break; case ECORE_X_WINDOW_STATE_ACTION_ADD: - bd->layer = 150; - e_border_raise(bd); + e_border_layer_set(bd, 150); break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: if (bd->layer == 150) - bd->layer = 100; + e_border_layer_set(bd, 100); else - bd->layer = 150; - e_border_raise(bd); + e_border_layer_set(bd, 150); break; } break; @@ -765,19 +768,16 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state, switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: - bd->layer = 100; - e_border_raise(bd); + e_border_layer_set(bd, 100); break; case ECORE_X_WINDOW_STATE_ACTION_ADD: - bd->layer = 50; - e_border_raise(bd); + e_border_layer_set(bd, 50); break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: if (bd->layer == 50) - bd->layer = 100; + e_border_layer_set(bd, 100); else - bd->layer = 50; - e_border_raise(bd); + e_border_layer_set(bd, 50); break; } break; diff --git a/src/bin/e_ipc_handlers.h b/src/bin/e_ipc_handlers.h index 05c930d10..0db94d7be 100644 --- a/src/bin/e_ipc_handlers.h +++ b/src/bin/e_ipc_handlers.h @@ -4703,3 +4703,283 @@ break; END_INT; #endif #undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_MOVE_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-move-set", 1, "Set if transients should move with it's parent", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.move = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_MOVE_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-move-get", 0, "Get if transients should move with it's parent", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.move, E_IPC_OP_TRANSIENT_MOVE_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_MOVE_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_RESIZE_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-resize-set", 1, "Set if transients should move when it's parent resizes", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.resize = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_RESIZE_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-resize-get", 0, "Get if transients should move when it's parent resizes", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.resize, E_IPC_OP_TRANSIENT_RESIZE_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_RESIZE_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_RAISE_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-raise-set", 1, "Set if transients should raise with it's parent", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.raise = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_RAISE_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-raise-get", 0, "Get if transients should raise with it's parent", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.raise, E_IPC_OP_TRANSIENT_RAISE_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_RAISE_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_LOWER_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-lower-set", 1, "Set if transients should lower with it's parent", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.lower = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_LOWER_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-lower-get", 0, "Get if transients should lower with it's parent", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.lower, E_IPC_OP_TRANSIENT_LOWER_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_LOWER_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_LAYER_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-layer-set", 1, "Set if transients should change layer with it's parent", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.layer = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_LAYER_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-layer-get", 0, "Get if transients should change layer with it's parent", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.layer, E_IPC_OP_TRANSIENT_LAYER_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_LAYER_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_DESKTOP_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-desktop-set", 1, "Set if transients should change desktop with it's parent", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.desktop = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_DESKTOP_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-desktop-get", 0, "Get if transients should change desktop with it's parent", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.desktop, E_IPC_OP_TRANSIENT_DESKTOP_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_DESKTOP_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_ICONIFY_SET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-iconify-set", 1, "Set if transients should iconify with it's parent", 0, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_INT(atoi(params[0]), HDL); +#elif (TYPE == E_WM_IN) + START_INT(val, HDL); + e_config->transient.iconify = val; + /* TODO: Activate changes! */ + SAVE; + END_INT; +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_ICONIFY_GET +#if (TYPE == E_REMOTE_OPTIONS) + OP("-transient-iconify-get", 0, "Get if transients should iconify with it's parent", 1, HDL) +#elif (TYPE == E_REMOTE_OUT) + REQ_NULL(HDL); +#elif (TYPE == E_WM_IN) + SEND_INT(e_config->transient.iconify, E_IPC_OP_TRANSIENT_ICONIFY_GET_REPLY, HDL); +#elif (TYPE == E_REMOTE_IN) +#endif +#undef HDL + +/****************************************************************************/ +#define HDL E_IPC_OP_TRANSIENT_ICONIFY_GET_REPLY +#if (TYPE == E_REMOTE_OPTIONS) +#elif (TYPE == E_REMOTE_OUT) +#elif (TYPE == E_WM_IN) +#elif (TYPE == E_REMOTE_IN) + START_INT(val, HDL); + printf("REPLY: %d\n", val); + END_INT; +#endif +#undef HDL diff --git a/src/bin/e_ipc_handlers_list.h b/src/bin/e_ipc_handlers_list.h index 8287b6fcd..345144201 100644 --- a/src/bin/e_ipc_handlers_list.h +++ b/src/bin/e_ipc_handlers_list.h @@ -231,3 +231,25 @@ #define E_IPC_OP_MENU_AUTOSCROLL_CURSOR_MARGIN_SET 231 #define E_IPC_OP_MENU_AUTOSCROLL_CURSOR_MARGIN_GET 232 #define E_IPC_OP_MENU_AUTOSCROLL_CURSOR_MARGIN_GET_REPLY 233 + +#define E_IPC_OP_TRANSIENT_MOVE_SET 234 +#define E_IPC_OP_TRANSIENT_MOVE_GET 235 +#define E_IPC_OP_TRANSIENT_MOVE_GET_REPLY 236 +#define E_IPC_OP_TRANSIENT_RESIZE_SET 237 +#define E_IPC_OP_TRANSIENT_RESIZE_GET 238 +#define E_IPC_OP_TRANSIENT_RESIZE_GET_REPLY 239 +#define E_IPC_OP_TRANSIENT_RAISE_SET 240 +#define E_IPC_OP_TRANSIENT_RAISE_GET 241 +#define E_IPC_OP_TRANSIENT_RAISE_GET_REPLY 242 +#define E_IPC_OP_TRANSIENT_LOWER_SET 243 +#define E_IPC_OP_TRANSIENT_LOWER_GET 244 +#define E_IPC_OP_TRANSIENT_LOWER_GET_REPLY 245 +#define E_IPC_OP_TRANSIENT_LAYER_SET 246 +#define E_IPC_OP_TRANSIENT_LAYER_GET 247 +#define E_IPC_OP_TRANSIENT_LAYER_GET_REPLY 248 +#define E_IPC_OP_TRANSIENT_DESKTOP_SET 249 +#define E_IPC_OP_TRANSIENT_DESKTOP_GET 250 +#define E_IPC_OP_TRANSIENT_DESKTOP_GET_REPLY 251 +#define E_IPC_OP_TRANSIENT_ICONIFY_SET 252 +#define E_IPC_OP_TRANSIENT_ICONIFY_GET 253 +#define E_IPC_OP_TRANSIENT_ICONIFY_GET_REPLY 254 diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index 753306132..0a279e105 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -1476,10 +1476,9 @@ _pager_face_cb_drop(void *data, const char *type, void *event_info) desk = e_desk_at_xy_get(face->zone, x, y); bd = ev->data; - if ((bd) && (desk) && (bd->desk != desk)) + if ((bd) && (desk)) { e_border_desk_set(bd, desk); - e_border_hide(bd, 1); } for (l = face->desks; l; l = l->next)