From e1070cc33809a64d16a590dece68158b20e4dba9 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 27 Mar 2011 02:24:19 +0000 Subject: [PATCH] first step in removing container win (compositor can replace it al with its own objects directly and expose comp canvas to gadgets/fm and so on just like container canvas does now. a lot of e's code can be simplified if we went totally compositing... worry about that for e18, but for now put in hooks). SVN revision: 58112 --- src/bin/e_config.c | 4 ++++ src/bin/e_config.h | 2 ++ src/bin/e_container.c | 18 ++++++++++++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 6341f92bf..a624d5641 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -891,6 +891,8 @@ e_config_init(void) E_CONFIG_VAL(D, T, exec.show_run_dialog, UCHAR); E_CONFIG_VAL(D, T, exec.show_exit_dialog, UCHAR); + E_CONFIG_VAL(D, T, null_container_win, UCHAR); + e_config_load(); e_config_save_queue(); @@ -1298,6 +1300,8 @@ e_config_load(void) E_CONFIG_LIMIT(e_config->exec.show_run_dialog, 0, 1); E_CONFIG_LIMIT(e_config->exec.show_exit_dialog, 0, 1); + E_CONFIG_LIMIT(e_config->null_container_win, 0, 1); + /* FIXME: disabled auto apply because it causes problems */ e_config->cfgdlg_auto_apply = 0; /* FIXME: desklock personalized password id disabled for security reasons */ diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 45819e6ae..a44feb4d8 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -338,6 +338,8 @@ struct _E_Config Eina_Bool show_run_dialog; Eina_Bool show_exit_dialog; } exec; + + unsigned char null_container_win; }; struct _E_Config_Syscon_Action diff --git a/src/bin/e_container.c b/src/bin/e_container.c index f07126633..0b05de810 100644 --- a/src/bin/e_container.c +++ b/src/bin/e_container.c @@ -83,7 +83,7 @@ e_container_new(E_Manager *man) 0, 0, con->w, con->h, 1, 1, &(con->bg_win)); e_canvas_add(con->bg_ecore_evas); - con->event_win = ecore_x_window_input_new(con->bg_win, 0, 0, con->w, con->h); + con->event_win = ecore_x_window_input_new(con->win, 0, 0, con->w, con->h); ecore_x_window_show(con->event_win); con->bg_evas = ecore_evas_get(con->bg_ecore_evas); ecore_evas_name_class_set(con->bg_ecore_evas, "E", "Background_Window"); @@ -189,12 +189,18 @@ e_container_show(E_Container *con) E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE); if (con->visible) return; - ecore_evas_show(con->bg_ecore_evas); + if (!e_config->null_container_win) + ecore_evas_show(con->bg_ecore_evas); ecore_x_window_configure(con->bg_win, ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, 0, 0, 0, 0, 0, con->layers[0].win, ECORE_X_WINDOW_STACK_BELOW); + ecore_x_window_configure(con->event_win, + ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | + ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, + 0, 0, 0, 0, 0, + con->layers[0].win, ECORE_X_WINDOW_STACK_BELOW); if (con->win != con->manager->win) ecore_x_window_show(con->win); ecore_x_icccm_state_set(con->bg_win, ECORE_X_WINDOW_STATE_HINT_NORMAL); @@ -272,7 +278,9 @@ e_container_resize(E_Container *con, int w, int h) con->h = h; if (con->win != con->manager->win) ecore_x_window_resize(con->win, con->w, con->h); - ecore_evas_resize(con->bg_ecore_evas, con->w, con->h); + ecore_x_window_resize(con->event_win, con->w, con->h); + if (!e_config->null_container_win) + ecore_evas_resize(con->bg_ecore_evas, con->w, con->h); evas_object_resize(con->bg_blank_object, con->w, con->h); _e_container_resize_handle(con); } @@ -289,7 +297,9 @@ e_container_move_resize(E_Container *con, int x, int y, int w, int h) con->h = h; if (con->win != con->manager->win) ecore_x_window_move_resize(con->win, con->x, con->y, con->w, con->h); - ecore_evas_resize(con->bg_ecore_evas, con->w, con->h); + ecore_x_window_move_resize(con->event_win, con->x, con->y, con->w, con->h); + if (!e_config->null_container_win) + ecore_evas_resize(con->bg_ecore_evas, con->w, con->h); evas_object_move(con->bg_blank_object, con->x, con->y); evas_object_resize(con->bg_blank_object, con->w, con->h); _e_container_resize_handle(con);