From 9632650b16a377f80d107aaa9c7f06677799da32 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 11 Sep 2012 00:48:35 +0900 Subject: [PATCH] [ILLUME2] Fix bug for handling child window --- illume2-slp/src/policies/illume/policy.c | 40 +++++++++++++++++++++----------- illume2-slp/src/policies/illume/policy.h | 1 + 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/illume2-slp/src/policies/illume/policy.c b/illume2-slp/src/policies/illume/policy.c index 3d9666d..0dc3732 100644 --- a/illume2-slp/src/policies/illume/policy.c +++ b/illume2-slp/src/policies/illume/policy.c @@ -864,16 +864,17 @@ _policy_border_post_new_border(E_Border *bd) if (bd->new_client) { - if (e_illume_border_is_notification (bd)) - { - // create border_info - bd_info = _policy_get_border_info(bd); - if (bd_info == NULL) - bd_info = _policy_add_border_info_list (bd); + bd_info = _policy_get_border_info(bd); + if (bd_info == NULL) + bd_info = _policy_add_border_info_list(bd); + + bd_info->win_type = bd->client.netwm.type; - level = _policy_border_get_notification_level (bd->client.win); + if (e_illume_border_is_notification(bd)) + { + level = _policy_border_get_notification_level(bd->client.win); L (LT_NOTIFICATION, "[ILLUME2][NOTIFICATION] %s(%d)... win (0x%07x) is notification window... level = %d\n", __func__, __LINE__, bd->client.win, level); - _policy_border_update_notification_stack (bd, level, EINA_TRUE); + _policy_border_update_notification_stack(bd, level, EINA_TRUE); } } } @@ -1846,11 +1847,19 @@ static void _policy_property_win_type_change (Ecore_X_Event_Window_Property *eve { E_Border *bd; E_Border *indi_bd; + E_Illume_Border_Info* bd_info = NULL; int level; if (!(bd = e_border_find_by_client_window(event->win))) return; + bd_info = _policy_get_border_info(bd); + if (!bd_info) return; + e_hints_window_type_get (bd); + + if (bd_info->win_type == bd->client.netwm.type) return; + bd_info->win_type = bd->client.netwm.type; + if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_NOTIFICATION) { ILLUME2_TRACE ("[ILLUME2-NEW] %s(%d)... WINDOW TYPE is CHANGED to NOTIFICATION!!!!! win = 0x%07x\n", __func__, __LINE__, bd->client.win); @@ -1914,11 +1923,8 @@ static void _policy_property_rotate_root_angle_change (Ecore_X_Event_Window_Prop if (prop_data) free (prop_data); - L (LT_ANGLE, "[ILLUME2][ANGLE] %s(%d).. ROOT ANGLE CHANGED... angle = %d\n", __func__, __LINE__, angle); - Ecore_X_Window active_win; - active_win = _policy_active_window_get(event->win); - - bd = e_border_find_by_client_window(active_win); + L (LT_ANGLE, "[ILLUME2][ANGLE] %s(%d).. ROOT ANGLE CHANGED... angle = %d. control_win:0x%07x\n", __func__, __LINE__, angle, g_indi_control_win); + bd = e_border_find_by_client_window(g_indi_control_win); if (bd) zone = bd->zone; else zone = e_util_container_zone_number_get (0, 0); @@ -1948,7 +1954,7 @@ static void _policy_property_rotate_root_angle_change (Ecore_X_Event_Window_Prop L (LT_ANGLE, "[ILLUME2][ANGLE] %s(%d)... win = 0x%07x.. SEND client Event with angle = %d\n", __func__, __LINE__, bd_temp->client.win, angle); ecore_x_client_message32_send (bd_temp->client.win, ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE, - ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, angle, g_active_win, 0, 0, 0); + ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, angle, g_indi_control_win, 0, 0, 0); } e_illume_util_hdmi_rotation (event->win, angle); @@ -4366,6 +4372,12 @@ _policy_xwin_info_delete (Ecore_X_Window win) void _policy_window_create (Ecore_X_Event_Window_Create *event) { + Ecore_X_Window parent; + + parent = ecore_x_window_parent_get(event->win); + if (parent != ecore_x_window_root_get(event->win)) + return; + L (LT_XWIN, "[ILLUME2][XWIN] %s(%d).. win:0x%07x...\n", __func__, __LINE__, event->win); _policy_xwin_info_add (event->win); diff --git a/illume2-slp/src/policies/illume/policy.h b/illume2-slp/src/policies/illume/policy.h index 620169a..814517a 100644 --- a/illume2-slp/src/policies/illume/policy.h +++ b/illume2-slp/src/policies/illume/policy.h @@ -62,6 +62,7 @@ struct _E_Illume_Border_Info int pid; int level; int opaque; + Ecore_X_Window_Type win_type; E_Border* border; }; -- 2.7.4