ecore_evas_x - fix maximize/unmaximize request corner case
state was not managed well.. this will fix that. also a test in elementary for it to you can test it out. @fix
This commit is contained in:
parent
09df69a3eb
commit
bf2538897b
|
@ -226,6 +226,22 @@ _bt_win_center_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
|||
elm_win_center(data, EINA_TRUE, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_bt_win_maximize(void *data, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
printf("Maximize\n");
|
||||
elm_win_maximized_set(data, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_bt_win_unmaximize(void *data, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
printf("Unmaximize\n");
|
||||
elm_win_maximized_set(data, EINA_FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
_win_state_print_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
|
@ -414,7 +430,7 @@ test_win_state(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Iconify and Activate");
|
||||
elm_object_text_set(bt, "Iconify + Act");
|
||||
evas_object_smart_callback_add(bt, "clicked",
|
||||
_bt_win_iconify_and_activate, win);
|
||||
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
@ -423,7 +439,7 @@ test_win_state(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(bx2);
|
||||
elm_object_text_set(bt, "Iconify and Deiconify");
|
||||
elm_object_text_set(bt, "Iconify + De");
|
||||
evas_object_smart_callback_add(bt, "clicked",
|
||||
_bt_win_iconify_and_deiconify, win);
|
||||
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
|
@ -431,6 +447,24 @@ test_win_state(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(bx2);
|
||||
elm_object_text_set(bt, "Maximize");
|
||||
evas_object_smart_callback_add(bt, "clicked",
|
||||
_bt_win_maximize, win);
|
||||
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(bx2);
|
||||
elm_object_text_set(bt, "Unmaximize");
|
||||
evas_object_smart_callback_add(bt, "clicked",
|
||||
_bt_win_unmaximize, win);
|
||||
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Center");
|
||||
evas_object_smart_callback_add(bt, "clicked",
|
||||
|
|
|
@ -3303,20 +3303,21 @@ _ecore_evas_x_maximized_set(Ecore_Evas *ee, Eina_Bool on)
|
|||
{
|
||||
Ecore_Evas_Engine_Data_X11 *edata = ee->engine.data;
|
||||
|
||||
if (ee->prop.maximized == on) return;
|
||||
ee->prop.maximized = 1;
|
||||
edata->state.maximized_h = 1;
|
||||
edata->state.maximized_v = 1;
|
||||
// ee->prop.maximized = on;
|
||||
if (ee->should_be_visible)
|
||||
{
|
||||
ecore_x_netwm_state_request_send(ee->prop.window, edata->win_root,
|
||||
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT, -1, on);
|
||||
ecore_x_netwm_state_request_send(ee->prop.window, edata->win_root,
|
||||
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ, -1, on);
|
||||
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
|
||||
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
|
||||
on);
|
||||
}
|
||||
else
|
||||
_ecore_evas_x_state_update(ee);
|
||||
{
|
||||
if (ee->prop.maximized == on) return;
|
||||
ee->prop.maximized = on;
|
||||
edata->state.maximized_h = on;
|
||||
edata->state.maximized_v = on;
|
||||
_ecore_evas_x_state_update(ee);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue