From a9d3c5449d205ec05eaedc48a21d59724d299721 Mon Sep 17 00:00:00 2001 From: Igor Olshevskyi Date: Fri, 9 Dec 2016 15:14:35 +0200 Subject: [PATCH] TSAM-11367 [SE][Ref.App][Tizen_3.0_Public_Final_RC5][Mobile][Phone][EXPL] Pop-up incoming call display wrongly when tap on reject call Change-Id: I3008c36eb4b1707278c6e3052bbf481f0367d649 --- inc/callui.h | 2 ++ src/callui-view-incoming-call-noti.c | 10 +++++---- src/callui-window.c | 43 ++++++++++++++++++++++++++++-------- src/callui.c | 13 ++++++++++- 4 files changed, 54 insertions(+), 14 deletions(-) diff --git a/inc/callui.h b/inc/callui.h index 7a6bf98..f075c71 100755 --- a/inc/callui.h +++ b/inc/callui.h @@ -80,6 +80,8 @@ struct appdata { Ecore_Timer *media_key_longpress_timer; bool is_media_key_longpressed; + + bool is_app_terminating; }; #endif// __CALLUI_H__ diff --git a/src/callui-view-incoming-call-noti.c b/src/callui-view-incoming-call-noti.c index bc9aa81..da0575e 100644 --- a/src/callui-view-incoming-call-noti.c +++ b/src/callui-view-incoming-call-noti.c @@ -254,10 +254,12 @@ static callui_result_e __callui_view_incoming_call_noti_ondestroy(call_view_data DELETE_EVAS_OBJECT(vd->main_ly); DELETE_EVAS_OBJECT(vd->rm_scroller_stroke); - _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN); - _callui_window_set_rotation_locked(ad->window, true); - _callui_window_set_top_level_priority(ad->window, false); - _callui_window_set_indicator_visible(ad->window, true); + if (!ad->is_app_terminating) { + _callui_window_set_size_type(ad->window, CALLUI_WIN_SIZE_FULLSCREEN); + _callui_window_set_rotation_locked(ad->window, true); + _callui_window_set_top_level_priority(ad->window, false); + _callui_window_set_indicator_visible(ad->window, true); + } _callui_window_unset_keygrab_mode(ad->window, CALLUI_KEY_HOME); diff --git a/src/callui-window.c b/src/callui-window.c index d68caba..a8d2d75 100644 --- a/src/callui-window.c +++ b/src/callui-window.c @@ -51,6 +51,7 @@ static Evas_Object *__create_eo_window(callui_window_h window_h); static Evas_Object *__create_eo_conformant(Evas_Object *win); static void __eo_win_rotation_changed_cb(void *data, Evas_Object *obj, void *event_info); +static void __eo_win_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void __eo_win_update_size(callui_window_h window_h, callui_win_size_type_e size_type); static callui_result_e __eo_win_set_rotation_locked(callui_window_h window_h, bool is_locked); @@ -89,10 +90,10 @@ static Evas_Object *__create_eo_conformant(Evas_Object *win) static void __eo_win_move_and_resize(callui_window_h window_h, bool force_resize) { - callui_app_data_t *ad = window_h->ad; + debug_enter(); int angle = elm_win_rotation_get(window_h->win); - dbg("Window orientation changed [%d]", angle); + dbg("Window orientation angle [%d]", angle); int win_h = window_h->win_h; int win_w = window_h->win_w; @@ -107,6 +108,8 @@ static void __eo_win_move_and_resize(callui_window_h window_h, bool force_resize if (force_resize) { evas_object_resize(window_h->win, 0, 0); } + + dbg("Resize window w[%d] h[%d]", win_w, win_h); evas_object_resize(window_h->win, win_w, win_h); int move_x = 0; @@ -116,34 +119,52 @@ static void __eo_win_move_and_resize(callui_window_h window_h, bool force_resize switch (angle) { case 90: if (_callui_common_is_mirrored_mode_on()) { - move_y = ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD; + move_y = window_h->ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD; } else { move_y = ACTIVE_NOTI_LANDSCAPE_L_PAD; } break; case 180: - move_y = ad->root_h - win_h; + move_y = window_h->ad->root_h - win_h; break; case 270: - move_x = ad->root_w - win_h; + move_x = window_h->ad->root_w - win_h; if (_callui_common_is_mirrored_mode_on()) { move_y = ACTIVE_NOTI_LANDSCAPE_L_PAD; } else { - move_y = ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD; + move_y = window_h->ad->root_h - win_w - ACTIVE_NOTI_LANDSCAPE_L_PAD; } break; default: break; } } + dbg("Move window to position x[%d] y[%d]", move_x, move_y); evas_object_move(window_h->win, move_x, move_y); + + debug_leave(); } static void __eo_win_rotation_changed_cb(void *data, Evas_Object *obj, void *event_info) { + debug_enter(); + CALLUI_RETURN_IF_FAIL(data); __eo_win_move_and_resize(data, true); + + debug_leave(); +} + +static void __eo_win_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + debug_enter(); + + int x, y; + elm_win_screen_position_get(obj, &x, &y); + dbg("Window position x[%d] y[%d]", x, y); + + debug_leave(); } static Evas_Object *__create_eo_window(callui_window_h window_h) @@ -157,6 +178,7 @@ static Evas_Object *__create_eo_window(callui_window_h window_h) elm_win_title_set(eo, _("IDS_CALL_BODY_CALL_M_APPLICATION_NAME")); evas_object_smart_callback_add(eo, "wm,rotation,changed", __eo_win_rotation_changed_cb, window_h); + evas_object_event_callback_add(eo, EVAS_CALLBACK_MOVE, __eo_win_move_cb, NULL); elm_win_center(eo, EINA_FALSE, EINA_FALSE); elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW); @@ -193,6 +215,7 @@ callui_result_e __callui_window_init(callui_window_h window_h, callui_app_data_t void __callui_window_deinit(callui_window_h window_h) { window_h->conformant = NULL; + evas_object_event_callback_del_full(window_h->win, EVAS_CALLBACK_MOVE, __eo_win_move_cb, NULL); evas_object_smart_callback_del_full(window_h->win, "wm,rotation,changed", __eo_win_rotation_changed_cb, window_h); DELETE_EVAS_OBJECT(window_h->win); @@ -250,14 +273,14 @@ void _callui_window_set_content(callui_window_h window_h, Evas_Object *content) static void __eo_win_update_size(callui_window_h window_h, callui_win_size_type_e size_type) { - callui_app_data_t *ad = window_h->ad; + debug_enter(); window_h->size_type = size_type; - window_h->win_w = ad->root_w; + window_h->win_w = window_h->ad->root_w; switch (size_type) { case CALLUI_WIN_SIZE_FULLSCREEN: - window_h->win_h = ad->root_h; + window_h->win_h = window_h->ad->root_h; break; case CALLUI_WIN_SIZE_ACTIVE_NOTI: window_h->win_h = CALLUI_WIN_ACT_NOTI_HEIGHT; @@ -266,6 +289,8 @@ static void __eo_win_update_size(callui_window_h window_h, callui_win_size_type_ break; } __eo_win_move_and_resize(window_h, false); + + debug_leave(); } void _callui_window_set_size_type(callui_window_h window_h, callui_win_size_type_e size_type) diff --git a/src/callui.c b/src/callui.c index ea98825..7e115c4 100755 --- a/src/callui.c +++ b/src/callui.c @@ -606,7 +606,11 @@ static void __app_terminate(void *data) { debug_enter(); - __app_deinit(data); + CALLUI_RETURN_IF_FAIL(data); + + callui_app_data_t *ad = (callui_app_data_t *)data; + ad->is_app_terminating = true; + __app_deinit(ad); debug_leave(); } @@ -615,6 +619,8 @@ static void __app_pause(void *data) { dbg("****** PAUSE START ******"); + CALLUI_RETURN_IF_FAIL(data); + callui_app_data_t *ad = data; ad->on_background = true; @@ -633,6 +639,8 @@ static void __app_resume(void *data) { dbg("****** RESUME START ******"); + CALLUI_RETURN_IF_FAIL(data); + callui_app_data_t *ad = data; DELETE_ECORE_TIMER(ad->app_state_check_timer); @@ -657,6 +665,9 @@ static void __app_resume(void *data) static void __app_service(app_control_h app_control, void *data) { + CALLUI_RETURN_IF_FAIL(data); + CALLUI_RETURN_IF_FAIL(app_control); + dbg(".."); callui_app_data_t *ad = data; char *tmp = NULL; -- 2.7.4