forked from enlightenment/efl
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);
|
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
|
static void
|
||||||
_win_state_print_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_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);
|
evas_object_show(bt);
|
||||||
|
|
||||||
bt = elm_button_add(win);
|
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",
|
evas_object_smart_callback_add(bt, "clicked",
|
||||||
_bt_win_iconify_and_activate, win);
|
_bt_win_iconify_and_activate, win);
|
||||||
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
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);
|
evas_object_show(bt);
|
||||||
|
|
||||||
bt = elm_button_add(bx2);
|
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",
|
evas_object_smart_callback_add(bt, "clicked",
|
||||||
_bt_win_iconify_and_deiconify, win);
|
_bt_win_iconify_and_deiconify, win);
|
||||||
evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
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);
|
elm_box_pack_end(bx2, bt);
|
||||||
evas_object_show(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);
|
bt = elm_button_add(win);
|
||||||
elm_object_text_set(bt, "Center");
|
elm_object_text_set(bt, "Center");
|
||||||
evas_object_smart_callback_add(bt, "clicked",
|
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;
|
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)
|
if (ee->should_be_visible)
|
||||||
{
|
{
|
||||||
ecore_x_netwm_state_request_send(ee->prop.window, edata->win_root,
|
ecore_x_netwm_state_request_send(ee->prop.window, edata->win_root,
|
||||||
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT, -1, on);
|
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
|
||||||
ecore_x_netwm_state_request_send(ee->prop.window, edata->win_root,
|
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
|
||||||
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ, -1, on);
|
on);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
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);
|
_ecore_evas_x_state_update(ee);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue