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
This commit is contained in:
Mike Blumenkrantz 2015-09-07 13:05:08 -04:00
parent 72d214a21f
commit 2198490c61
1 changed files with 55 additions and 45 deletions

View File

@ -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);
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);
}
if (type != ELM_WIN_FAKE)
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,7 +3779,8 @@ _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;
if (type != ELM_WIN_FAKE)
{
_elm_win_list = eina_list_append(_elm_win_list, obj);
_elm_win_count++;
@ -3799,6 +3798,7 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_
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,6 +3811,8 @@ _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 (type != ELM_WIN_FAKE)
{
if ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_ON) ||
((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_AUTO) &&
((engine) &&
@ -3834,6 +3836,7 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_
{
// do nothing
}
}
sd->edje = edje_object_add(sd->evas);
_elm_win_theme_internal(obj, sd);
@ -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);
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;
}