From 2198490c616a367be772c9b6317939d059774d1b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 7 Sep 2015 13:05:08 -0400 Subject: [PATCH] win: fix FAKE window geometry updating + resize object adding users of this will want the win to automatically match the geometry of the ee in all cases fix T2692 --- legacy/elementary/src/lib/elm_win.c | 100 +++++++++++++++------------- 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index 225ce6d3d3..e75ee1d02c 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -3751,12 +3751,10 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_ ecore_evas_callback_state_change_set(sd->ee, _elm_win_state_change); ecore_evas_callback_focus_in_set(sd->ee, _elm_win_focus_in); ecore_evas_callback_focus_out_set(sd->ee, _elm_win_focus_out); + ecore_evas_callback_resize_set(sd->ee, _elm_win_resize); + ecore_evas_callback_move_set(sd->ee, _elm_win_move); if (type != ELM_WIN_FAKE) - { - ecore_evas_callback_resize_set(sd->ee, _elm_win_resize); - ecore_evas_callback_mouse_in_set(sd->ee, _elm_win_mouse_in); - ecore_evas_callback_move_set(sd->ee, _elm_win_move); - } + ecore_evas_callback_mouse_in_set(sd->ee, _elm_win_mouse_in); evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _elm_win_cb_hide, NULL); evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _elm_win_cb_show, NULL); @@ -3781,24 +3779,26 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_ #endif /* do not append to list; all windows render as black rects */ - if (type == ELM_WIN_FAKE) return obj; - _elm_win_list = eina_list_append(_elm_win_list, obj); - _elm_win_count++; - - if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)))) + if (type != ELM_WIN_FAKE) { - TRAP(sd, fullscreen_set, 1); - } - else if ((type != ELM_WIN_INLINED_IMAGE) && - ((engine) && - ((!strcmp(engine, ELM_WAYLAND_SHM) || - (!strcmp(engine, ELM_WAYLAND_EGL)))))) - _elm_win_frame_add(sd, "default"); + _elm_win_list = eina_list_append(_elm_win_list, obj); + _elm_win_count++; - if (_elm_config->focus_highlight_enable) - elm_win_focus_highlight_enabled_set(obj, EINA_TRUE); - if (_elm_config->focus_highlight_animate) - elm_win_focus_highlight_animate_set(obj, EINA_TRUE); + if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)))) + { + TRAP(sd, fullscreen_set, 1); + } + else if ((type != ELM_WIN_INLINED_IMAGE) && + ((engine) && + ((!strcmp(engine, ELM_WAYLAND_SHM) || + (!strcmp(engine, ELM_WAYLAND_EGL)))))) + _elm_win_frame_add(sd, "default"); + + if (_elm_config->focus_highlight_enable) + elm_win_focus_highlight_enabled_set(obj, EINA_TRUE); + if (_elm_config->focus_highlight_animate) + elm_win_focus_highlight_animate_set(obj, EINA_TRUE); + } #ifdef ELM_DEBUG Evas_Modifier_Mask mask = evas_key_modifier_mask_get(sd->evas, "Control"); @@ -3811,28 +3811,31 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_ ERR("failed to grab F12 key to elm widgets (dot) tree generation"); #endif - if ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_ON) || - ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_AUTO) && - ((engine) && - ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)))))) + if (type != ELM_WIN_FAKE) { - Evas_Object *o; - Evas_Coord mw = 1, mh = 1, hx = 0, hy = 0; + if ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_ON) || + ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_AUTO) && + ((engine) && + ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)))))) + { + Evas_Object *o; + Evas_Coord mw = 1, mh = 1, hx = 0, hy = 0; - sd->pointer.obj = o = edje_object_add(ecore_evas_get(tmp_sd.ee)); - _elm_theme_object_set(obj, o, "pointer", "base", "default"); - edje_object_size_min_calc(o, &mw, &mh); - evas_object_resize(o, mw, mh); - edje_object_part_geometry_get(o, "elm.swallow.hotspot", - &hx, &hy, NULL, NULL); - sd->pointer.hot_x = hx; - sd->pointer.hot_y = hy; - evas_object_show(o); - ecore_evas_object_cursor_set(tmp_sd.ee, o, EVAS_LAYER_MAX, hx, hy); - } - else if (_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_OFF) - { - // do nothing + sd->pointer.obj = o = edje_object_add(ecore_evas_get(tmp_sd.ee)); + _elm_theme_object_set(obj, o, "pointer", "base", "default"); + edje_object_size_min_calc(o, &mw, &mh); + evas_object_resize(o, mw, mh); + edje_object_part_geometry_get(o, "elm.swallow.hotspot", + &hx, &hy, NULL, NULL); + sd->pointer.hot_x = hx; + sd->pointer.hot_y = hy; + evas_object_show(o); + ecore_evas_object_cursor_set(tmp_sd.ee, o, EVAS_LAYER_MAX, hx, hy); + } + else if (_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_OFF) + { + // do nothing + } } sd->edje = edje_object_add(sd->evas); @@ -3843,9 +3846,12 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_ edje_object_part_swallow(sd->edje, "elm.swallow.contents", sd->box); evas_object_move(sd->edje, 0, 0); evas_object_resize(sd->edje, 1, 1); - edje_object_update_hints_set(sd->edje, EINA_TRUE); - evas_object_event_callback_add(sd->edje, EVAS_CALLBACK_CHANGED_SIZE_HINTS, - _elm_win_on_resize_obj_changed_size_hints, obj); + if (type != ELM_WIN_FAKE) + { + edje_object_update_hints_set(sd->edje, EINA_TRUE); + evas_object_event_callback_add(sd->edje, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _elm_win_on_resize_obj_changed_size_hints, obj); + } eo_do(obj, elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_WINDOW)); if (_elm_config->atspi_mode == ELM_ATSPI_MODE_ON) @@ -3855,7 +3861,11 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_ eo_do(obj, eo_event_callback_add(EO_EV_CALLBACK_ADD, _cb_added, sd), eo_event_callback_add(EO_EV_CALLBACK_DEL, _cb_deled, sd)); - + if (type == ELM_WIN_FAKE) + { + _elm_win_resize_job(obj); + _elm_win_move(sd->ee); + } return obj; }