diff options
author | Doyoun Kang <doyoun.kang@samsung.com> | 2012-09-11 00:48:35 +0900 |
---|---|---|
committer | Doyoun Kang <doyoun.kang@samsung.com> | 2012-09-11 00:48:35 +0900 |
commit | 9632650b16a377f80d107aaa9c7f06677799da32 (patch) | |
tree | ec8ab943a4c35f5f65d30daf6928ae08363d8791 | |
parent | 3254493d7f8a1e53fcecf4e1e3c7fbd587d724dc (diff) | |
download | e17-extra-modules-2.0alpha.tar.gz e17-extra-modules-2.0alpha.tar.bz2 e17-extra-modules-2.0alpha.zip |
[ILLUME2] Fix bug for handling child windowsubmit/tizen/20130517.015933submit/master/20120920.151120accepted/tizen/20130520.1030352.0_alphamaster2.0alpha
-rw-r--r-- | illume2-slp/src/policies/illume/policy.c | 40 | ||||
-rw-r--r-- | 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; }; |