From d07c158e3ccf70a2132e916174c1233a2a85928d Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 14 Sep 2022 15:31:30 +0900 Subject: [PATCH] refactoring: use new API instead of exp_iconify.by_client Add new API for checking whether the window is iconified by client request or not. - e_client_is_iconified_by_client We replace code to use e_client_is_iconified_by_client() API instead of ec->exp_iconify.by_client directly. Change-Id: I823d3202d55dd8bc7ae220a016fafde544826487 --- src/bin/e_client.c | 46 +++++++++++++++++++++++++++++---------- src/bin/e_client.h | 1 + src/bin/e_comp_object.c | 8 +++---- src/bin/e_comp_wl_capture.c | 2 +- src/bin/e_comp_wl_rsm.c | 3 ++- src/bin/e_comp_wl_shell.c | 14 ++++++------ src/bin/e_info_server.c | 4 ++-- src/bin/e_policy.c | 7 +++--- src/bin/e_policy_stack.c | 2 +- src/bin/e_policy_visibility.c | 28 ++++++++++++------------ src/bin/e_policy_wl.c | 14 +++++++----- src/bin/e_test_helper.c | 4 ++-- src/bin/services/e_service_cbhm.c | 3 ++- 13 files changed, 84 insertions(+), 52 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 508f461..5240893 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -883,7 +883,7 @@ _e_client_check_really_iconified(E_Client *ec) if (!(e_policy_visibility_client_is_uniconic(ec) || e_policy_visibility_client_is_uniconify_render_running(ec))) return EINA_TRUE; - else if (ec->exp_iconify.by_client) + else if (e_client_is_iconified_by_client(ec)) return EINA_TRUE; } @@ -2525,7 +2525,7 @@ _e_client_cb_evas_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA /* Don't stack iconic transients. If the user wants these shown, * that's another option. */ - if (child->iconic && child->exp_iconify.by_client) continue; + if (child->iconic && e_client_is_iconified_by_client(child)) continue; transient_policy = e_client_transient_policy_get(child); if (transient_policy == E_TRANSIENT_ABOVE) @@ -3569,6 +3569,8 @@ _e_client_visibility_zone_calculate(E_Zone *zone) Eina_Bool touched_win_changed = EINA_FALSE; E_Client *touched_ec; + Eina_Bool iconified_by_client = EINA_FALSE; + if (!e_config->calc_vis_without_effect) { if (e_comp->animating) return; @@ -3639,6 +3641,7 @@ _e_client_visibility_zone_calculate(E_Zone *zone) skip_by_pending_show = 0; calc_region = EINA_TRUE; ec_frame_visible = evas_object_visible_get(ec->frame); + iconified_by_client = e_client_is_iconified_by_client(ec); if (!ec->visible) { @@ -3678,7 +3681,7 @@ _e_client_visibility_zone_calculate(E_Zone *zone) } else { - if (ec->exp_iconify.by_client) + if (iconified_by_client) { EC_IS_NOT_VISIBLE continue; calc_region = EINA_FALSE; @@ -3699,7 +3702,7 @@ _e_client_visibility_zone_calculate(E_Zone *zone) { if (calc_region && (!ec->visibility.force_obscured) && - (!ec->exp_iconify.by_client)) + (!iconified_by_client)) { it = eina_tiler_iterator_new(t); EINA_ITERATOR_FOREACH(it, _r) @@ -3770,7 +3773,7 @@ _e_client_visibility_zone_calculate(E_Zone *zone) if ((!skip_by_pending_show) || (ec->visibility.force_obscured) || (ec->bg_state) || - (ec->exp_iconify.by_client)) + (iconified_by_client)) { /* obscured case */ if (ec->visibility.obscured != E_VISIBILITY_FULLY_OBSCURED) @@ -4598,6 +4601,8 @@ e_client_new(E_Pixmap *cp, int first_map, int internal) else ec->exp_iconify.buffer_flush = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); + if (!_e_client_hook_call(E_CLIENT_HOOK_NEW_CLIENT, ec)) { /* delete the above allocated object */ @@ -5905,6 +5910,7 @@ e_client_activate(E_Client *ec, Eina_Bool just_do_it) } ELOGF("COMP", "Un-Set ICONIFY BY CLIENT", ec); ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); if ((!ec->iconic) && (!ec->sticky)) { @@ -6385,18 +6391,19 @@ e_client_iconify(E_Client *ec) E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); E_Comp_Wl_Client_Data *cdata = e_client_cdata_get(ec); + Eina_Bool iconified_by_client = e_client_is_iconified_by_client(ec); - ELOGF("TZVIS", "ICONIFY |iconic:%d |argb:%d |not_raise:%d |by_client:%d", + ELOGF("TZVIS", "ICONIFY |iconic:%d |argb:%d |not_raise:%d |by_client:%d, type:%d", ec, ec->iconic, ec->argb, (unsigned int)ec->exp_iconify.not_raise, - ec->exp_iconify.by_client); + ec->exp_iconify.by_client, ec->exp_iconify.type); if (!ec->zone) return; if (ec->shading || ec->iconic) return; - if (ec->exp_iconify.skip_iconify && !ec->exp_iconify.by_client) return; + if (ec->exp_iconify.skip_iconify && !iconified_by_client) return; if (ec->exp_iconify.skip_by_remote) return; if (!cdata || !cdata->mapped) { - if (!ec->exp_iconify.by_client) + if (!iconified_by_client) { ELOGF("TZVIS", "Not mapped.. So, don't iconify", ec); return; @@ -6447,9 +6454,9 @@ e_client_uniconify(E_Client *ec) E_Comp_Wl_Client_Data *cdata = e_client_cdata_get(ec); - ELOGF("TZVIS", "UNICONIFY|iconic:%d |argb:%d |not_raise:%d |by_client:%d |mapped:%d", + ELOGF("TZVIS", "UNICONIFY|iconic:%d |argb:%d |not_raise:%d |by_client:%d, type:%d |mapped:%d", ec, ec->iconic, ec->argb, (unsigned int)ec->exp_iconify.not_raise, - ec->exp_iconify.by_client, + ec->exp_iconify.by_client, ec->exp_iconify.type, cdata ? cdata->mapped : 0); if (!ec->zone) return; @@ -6543,6 +6550,7 @@ e_client_uniconify(E_Client *ec) ec->exp_iconify.not_raise = 0; ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); TRACE_DS_END(); } @@ -6561,6 +6569,22 @@ e_client_iconified_type_get(E_Client *ec) return ec->exp_iconify.type; } +E_API Eina_Bool e_client_is_iconified_by_client(E_Client *ec) +{ + if (!ec) return EINA_FALSE; + + if (ec->exp_iconify.type == E_ICONIFIED_TYPE_ICONIFY_BY_CLIENT) + return EINA_TRUE; + + if (ec->exp_iconify.by_client) + { + ELOGF("POL", "CHECK. mismatch value. by_client:%d, type:%d", ec, ec->exp_iconify.by_client, ec->exp_iconify.type); + return EINA_TRUE; + } + + return EINA_FALSE; +} + /////////////////////////////////////// E_API void diff --git a/src/bin/e_client.h b/src/bin/e_client.h index b900a3f..cf0286b 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -1168,6 +1168,7 @@ E_API void e_client_iconify(E_Client *ec); E_API void e_client_uniconify(E_Client *ec); E_API void e_client_iconified_type_set(E_Client *ec, E_Iconified_Type type); E_API E_Iconified_Type e_client_iconified_type_get(E_Client *ec); +E_API Eina_Bool e_client_is_iconified_by_client(E_Client *ec); E_API void e_client_urgent_set(E_Client *ec, Eina_Bool urgent); E_API void e_client_stick(E_Client *ec); E_API void e_client_unstick(E_Client *ec); diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 2fecfc4..059b01d 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -2408,9 +2408,9 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw) } #endif - ELOGF("COMP", "show_helper. cw(v:%d,a:%d,dh:%d,ct:%d,u:%p,s(%d,%d)), ec(i:%d(%d),o:%d,g:%d,n:%d)", ec, + ELOGF("COMP", "show_helper. cw(v:%d,a:%d,dh:%d,ct:%d,u:%p,s(%d,%d)), ec(i:%d(%d,%d),o:%d,g:%d,n:%d)", ec, cw->visible, cw->animating, cw->defer_hide, cw->content_type, cw->updates, cw->w, cw->h, - ec->iconic, ec->exp_iconify.by_client, ec->input_only, ec->ignored, ec->new_client); + ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type, ec->input_only, ec->ignored, ec->new_client); if (ec->sticky) e_comp_object_signal_emit(cw->smart_obj, "e,state,sticky", "e"); @@ -2534,7 +2534,7 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw) if (ec->internal) //internal clients render when they feel like it e_comp_object_damage(cw->smart_obj, 0, 0, cw->w, cw->h); - if (!ec->exp_iconify.by_client || + if (!e_client_is_iconified_by_client(ec)|| e_policy_visibility_client_is_uniconic(ec)) { ELOGF("COMP", "show_helper. evas_object_show!!!", ec); @@ -3322,7 +3322,7 @@ _e_comp_smart_show(Evas_Object *obj) } if (cw->ec->iconic && (!cw->ec->new_client)) { - if (cw->ec->exp_iconify.by_client) + if (e_client_is_iconified_by_client(cw->ec)) { ELOGF("COMP", "Set launching flag..", cw->ec); cw->ec->launching = EINA_TRUE; diff --git a/src/bin/e_comp_wl_capture.c b/src/bin/e_comp_wl_capture.c index a45c233..3f1560a 100644 --- a/src/bin/e_comp_wl_capture.c +++ b/src/bin/e_comp_wl_capture.c @@ -1300,7 +1300,7 @@ _e_capture_client_child_data_check(Thread_Data *td) if (!child_ec->comp_data) continue; if (!child_ec->comp_data->mapped) continue; - if (child_ec->iconic && child_ec->exp_iconify.by_client) + if (child_ec->iconic && e_client_is_iconified_by_client(child_ec)) continue; if (child_ec->bg_state) diff --git a/src/bin/e_comp_wl_rsm.c b/src/bin/e_comp_wl_rsm.c index de171da..cf68635 100644 --- a/src/bin/e_comp_wl_rsm.c +++ b/src/bin/e_comp_wl_rsm.c @@ -1250,7 +1250,7 @@ _remote_source_offscreen_set(E_Comp_Wl_Remote_Source *source, Eina_Bool set) _remote_surface_ignore_output_transform_send(&source->common); source->common.ec->exp_iconify.not_raise = 1; - if (!source->common.ec->exp_iconify.by_client) + if (!e_client_is_iconified_by_client(source->common.ec)) e_policy_wl_iconify_state_change_send(source->common.ec, 0); RSMINF("Un-Set ICONIFY BY Remote_Surface", source->common.ec, @@ -1258,6 +1258,7 @@ _remote_source_offscreen_set(E_Comp_Wl_Remote_Source *source, Eina_Bool set) e_client_uniconify(source->common.ec); source->common.ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(source->common.ec, E_ICONIFIED_TYPE_NONE); source->common.ec->exp_iconify.skip_by_remote = 1; EC_CHANGED(source->common.ec); diff --git a/src/bin/e_comp_wl_shell.c b/src/bin/e_comp_wl_shell.c index 0a75979..87d2d65 100644 --- a/src/bin/e_comp_wl_shell.c +++ b/src/bin/e_comp_wl_shell.c @@ -767,7 +767,7 @@ _e_shell_client_map_common_post(E_Client *ec) ec->first_mapped = 1; e_policy_visibility_client_hide_job_cancel(ec); - if (!(ec->iconic && ec->exp_iconify.by_client) && !ec->bg_state && (ec->show_pending.count == 0)) + if (!(ec->iconic && e_client_is_iconified_by_client(ec)) && !ec->bg_state && (ec->show_pending.count == 0)) e_vis_client_check_send_pre_visibility_event(ec, EINA_FALSE); ELOGF("COMP", "Un-Set launching flag", ec); @@ -805,9 +805,9 @@ _e_shell_surface_map(struct wl_resource *resource) ec->w, ec->h, ec->netwm.pid, ec->icccm.title, ec->netwm.name); ELOGF("SHELL", - "spash:%d, first_mapped:%d, iconic:%d(client:%d), raise:%d, lower:%d, ignore:%d, override:%d, input_only:%d", + "spash:%d, first_mapped:%d, iconic:%d(client:%d, type:%d), raise:%d, lower:%d, ignore:%d, override:%d, input_only:%d", ec, - ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, + ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type, ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only); _e_shell_client_map_common_pre(ec); @@ -1313,9 +1313,9 @@ _e_xdg_shell_surface_map_cb_timer(void *data) ec->w, ec->h, ec->netwm.pid, ec->icccm.title, ec->netwm.name); ELOGF("SHELL", - "spash:%d, first_mapped:%d, iconic:%d(client:%d), raise:%d, lower:%d, ignore:%d, override:%d, input_only:%d", + "spash:%d, first_mapped:%d, iconic:%d(client:%d, type:%d), raise:%d, lower:%d, ignore:%d, override:%d, input_only:%d", ec, - ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, + ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type, ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only); _e_shell_client_map_common_pre(ec); @@ -1394,9 +1394,9 @@ e_shell_e_client_map(E_Client *ec) ec->w, ec->h, ec->netwm.pid, ec->icccm.title, ec->netwm.name); ELOGF("SHELL", - "spash:%d, first_mapped:%d, iconic:%d(client:%d), raise:%d, lower:%d, ignore:%d, override:%d, input_only:%d", + "spash:%d, first_mapped:%d, iconic:%d(client:%d, type:%d), raise:%d, lower:%d, ignore:%d, override:%d, input_only:%d", ec, - ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, + ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type, ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only); _e_shell_client_map_common_pre(ec); diff --git a/src/bin/e_info_server.c b/src/bin/e_info_server.c index ce4f864..4bd48cb 100644 --- a/src/bin/e_info_server.c +++ b/src/bin/e_info_server.c @@ -319,7 +319,7 @@ _msg_ecs_append(Eldbus_Message_Iter *iter, Eina_Bool is_visible) if (ec->iconic) { - if (ec->exp_iconify.by_client) + if (e_client_is_iconified_by_client(ec)) iconified = 2; else iconified = 1; @@ -415,7 +415,7 @@ _msg_clients_append(Eldbus_Message_Iter *iter, Eina_Bool is_visible) if (ec->iconic) { - if (ec->exp_iconify.by_client) + if (e_client_is_iconified_by_client(ec)) iconified = 2; else iconified = 1; diff --git a/src/bin/e_policy.c b/src/bin/e_policy.c index 7941f64..f87d1d2 100644 --- a/src/bin/e_policy.c +++ b/src/bin/e_policy.c @@ -889,7 +889,7 @@ _e_policy_cb_hook_client_visibility(void *d EINA_UNUSED, E_Client *ec) if (e_client_util_ignored_get(above_ec)) continue; if (!above_ec->visible) continue; - if (above_ec->exp_iconify.by_client) continue; + if (e_client_is_iconified_by_client(above_ec)) continue; if (above_ec->exp_iconify.skip_by_remote) continue; if (above_ec->bg_state) continue; @@ -933,7 +933,7 @@ _e_policy_cb_hook_client_visibility(void *d EINA_UNUSED, E_Client *ec) else if (ec->zone->display_state == E_ZONE_DISPLAY_STATE_OFF) { if (e_client_util_ignored_get(ec)) return; - if (ec->exp_iconify.by_client) return; + if (e_client_is_iconified_by_client(ec)) return; if (ec->bg_state) return; if (ec->exp_iconify.skip_iconify) return; if (ec->exp_iconify.skip_by_remote) return; @@ -979,7 +979,7 @@ _e_policy_cb_hook_pixmap_unusable(void *data EINA_UNUSED, E_Pixmap *cp) if (!ec) return; if (!ec->iconic) return; - if (ec->exp_iconify.by_client) return; + if (e_client_is_iconified_by_client(ec)) return; if (ec->exp_iconify.skip_iconify) return; if (ec->exp_iconify.skip_by_remote) return; if (ec->remote_surface.bind_ref > 0) return; @@ -1569,6 +1569,7 @@ e_policy_client_unmap(E_Client *ec) ec->iconic = 0; ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); ec->exp_iconify.not_raise = 0; ec->exp_iconify.skip_iconify = 0; diff --git a/src/bin/e_policy_stack.c b/src/bin/e_policy_stack.c index 23036a7..8385bf9 100644 --- a/src/bin/e_policy_stack.c +++ b/src/bin/e_policy_stack.c @@ -614,7 +614,7 @@ e_policy_stack_clients_restack_above_lockscreen(E_Client *ec_lock, Eina_Bool sho } if (!passed_new_lock) continue; if (e_policy_client_is_lockscreen(ec)) continue; - if (ec->exp_iconify.by_client) continue; + if (e_client_is_iconified_by_client(ec)) continue; if (ec->bg_state) continue; if (ec->changable_layer[E_CHANGABLE_LAYER_TYPE_ABOVE_NOTIFICATION].set) diff --git a/src/bin/e_policy_visibility.c b/src/bin/e_policy_visibility.c index f80b7b6..26e7640 100644 --- a/src/bin/e_policy_visibility.c +++ b/src/bin/e_policy_visibility.c @@ -284,7 +284,7 @@ _e_policy_client_iconify_by_visibility(E_Client *ec) if (!ec) return; if (ec->iconic) return; - if (ec->exp_iconify.by_client) return; + if (e_client_is_iconified_by_client(ec)) return; if (ec->bg_state) return; if (ec->exp_iconify.skip_iconify) return; if (ec->exp_iconify.skip_by_remote) return; @@ -354,7 +354,7 @@ _e_policy_client_ancestor_uniconify(E_Client *ec) if (!ec) return; if (e_object_is_del(E_OBJECT(ec))) return; if (!ec->iconic) return; - if (ec->exp_iconify.by_client) return; + if (e_client_is_iconified_by_client(ec)) return; if (ec->bg_state) return; if (ec->exp_iconify.skip_iconify) return; if (ec->exp_iconify.skip_by_remote) return; @@ -371,7 +371,7 @@ _e_policy_client_ancestor_uniconify(E_Client *ec) if (e_object_is_del(E_OBJECT(parent))) break; if (!parent->iconic) break; - if (parent->exp_iconify.by_client) break; + if (e_client_is_iconified_by_client(parent)) break; if (parent->bg_state) break; if (parent->exp_iconify.skip_iconify) break; if (parent->exp_iconify.skip_by_remote) break; @@ -442,7 +442,7 @@ _e_policy_client_uniconify_by_visibility(E_Client *ec) if (!ec) return; if (e_object_is_del(E_OBJECT(ec))) return; if (!ec->iconic) return; - if (ec->exp_iconify.by_client) return; + if (e_client_is_iconified_by_client(ec)) return; if (ec->bg_state) return; if (ec->exp_iconify.skip_iconify) return; if (ec->exp_iconify.skip_by_remote) return; @@ -1352,7 +1352,7 @@ _e_vis_client_check_obscured_by_same_layer(E_Client *ec) if (above->layer > ec->layer) break; if (e_client_util_ignored_get(above)) continue; if (e_object_is_del(E_OBJECT(above))) continue; - if (above->iconic && above->exp_iconify.by_client) continue; + if (above->iconic && e_client_is_iconified_by_client(above)) continue; if (above->bg_state) continue; if (above->comp_data && !above->comp_data->mapped) continue; @@ -1398,7 +1398,7 @@ _e_vis_client_check_obscured_by_above_layers(E_Client *ec) if (above->layer <= ec->layer) continue; if (e_client_util_ignored_get(above)) continue; if (e_object_is_del(E_OBJECT(above))) continue; - if (above->iconic && above->exp_iconify.by_client) continue; + if (above->iconic && e_client_is_iconified_by_client(above)) continue; if (above->bg_state) continue; if (above->comp_data && !above->comp_data->mapped) continue; @@ -1593,7 +1593,7 @@ _e_vis_ec_activity_check(E_Client *ec, Eina_Bool check_alpha, Eina_Bool check_fu /* check unmapped client */ if (check_mapped && ec->comp_data && !ec->comp_data->mapped) return EINA_FALSE; /* check iconify window by client */ - if ((ec->iconic) && (ec->exp_iconify.by_client)) return EINA_FALSE; + if ((ec->iconic) && (e_client_is_iconified_by_client(ec))) return EINA_FALSE; /* check background state */ if (ec->bg_state) return EINA_FALSE; /* check special client */ @@ -1742,7 +1742,7 @@ _e_vis_ec_above_visible_type(E_Client *ec, Eina_Bool check_child) continue; } - if (above->iconic && above->exp_iconify.by_client) + if (above->iconic && e_client_is_iconified_by_client(above)) continue; if (above->bg_state) @@ -1787,7 +1787,7 @@ _e_vis_client_check_obscure_below(E_Client *ec) if (e_client_util_ignored_get(ec)) return EINA_FALSE; if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; - if (ec->iconic && ec->exp_iconify.by_client) return EINA_FALSE; + if (ec->iconic && e_client_is_iconified_by_client(ec)) return EINA_FALSE; if (ec->bg_state) return EINA_FALSE; if (ec->comp_data && !ec->comp_data->mapped) return EINA_FALSE; if ((ec->argb) && (ec->visibility.opaque <= 0)) return EINA_FALSE; @@ -1940,7 +1940,7 @@ _e_vis_ec_below_uniconify(E_Client *ec, E_Pol_Vis_Type above_vis_type) if (!job_added) { - if ((below_ec->iconic) && (!below_ec->exp_iconify.by_client)) + if ((below_ec->iconic) && (!e_client_is_iconified_by_client(below_ec))) { // show evas obj if uniconify pending is not necessary ELOGF("POL_VIS", "Show below iconic client in advance", below_ec); @@ -2057,7 +2057,7 @@ _e_vis_transient_group_make(E_Client *ec, Eina_List **list) EINA_LIST_FOREACH(ec->transients, l, child) { if (!child) continue; - if (child->iconic && ec->exp_iconify.by_client) + if (child->iconic && e_client_is_iconified_by_client(ec)) continue; if (child->bg_state) continue; @@ -2403,7 +2403,7 @@ e_policy_visibility_client_raise(E_Client *ec) if (!ec->iconic && !ec->exp_iconify.deiconify_update) return EINA_FALSE; - if (ec->exp_iconify.by_client) + if (e_client_is_iconified_by_client(ec)) return EINA_FALSE; ret = _e_vis_client_add_uniconify_render_pending(vc, E_VIS_JOB_TYPE_UNICONIFY, 1, EINA_FALSE); @@ -2555,7 +2555,7 @@ e_policy_visibility_client_uniconify(E_Client *ec, Eina_Bool raise) EINA_LIST_FREE(l, child) { - if (child->exp_iconify.by_client) continue; + if (e_client_is_iconified_by_client(child)) continue; ret |= e_policy_visibility_client_uniconify(child, raise); } @@ -2601,7 +2601,7 @@ e_policy_visibility_client_activate(E_Client *ec) EINA_LIST_FREE(l, child) { - if (child->exp_iconify.by_client) continue; + if (e_client_is_iconified_by_client(child)) continue; pend = e_policy_visibility_client_uniconify(child, EINA_TRUE); if (pend) diff --git a/src/bin/e_policy_wl.c b/src/bin/e_policy_wl.c index 41d15ef..0ee0dfd 100644 --- a/src/bin/e_policy_wl.c +++ b/src/bin/e_policy_wl.c @@ -1180,7 +1180,7 @@ e_policy_wl_iconify_state_change_send(E_Client *ec, int iconic) EINA_LIST_FREE(list, child) { if ((child->iconic == ec->iconic) && - (child->exp_iconify.by_client == ec->exp_iconify.by_client)) + (e_client_is_iconified_by_client(child) == e_client_is_iconified_by_client(ec))) e_policy_wl_iconify_state_change_send(child, iconic); } @@ -1371,7 +1371,7 @@ e_policy_wl_activate(E_Client *ec) { if (!e_policy_visibility_client_activate(ec)) { - if ((ec->iconic) && (!ec->exp_iconify.by_client)) + if ((ec->iconic) && (!e_client_is_iconified_by_client(ec))) e_policy_wl_iconify_state_change_send(ec, 0); if (!ec->visibility.force_obscured) @@ -1515,7 +1515,7 @@ _tzpol_iface_cb_activate_below_by_res_id(struct wl_client *client EINA_UNUSED, s if ((!starting) && (!ec->focused)) { - if ((ec->iconic) && (!ec->exp_iconify.by_client)) + if ((ec->iconic) && (!e_client_is_iconified_by_client(ec))) e_policy_wl_iconify_state_change_send(ec, 0); e_client_uniconify(ec); @@ -1585,7 +1585,7 @@ _tzpol_iface_cb_activate_above_by_res_id(struct wl_client *client EINA_UNUSED, s if (!starting) { - if ((ec->iconic) && (!ec->exp_iconify.by_client)) + if ((ec->iconic) && (!e_client_is_iconified_by_client(ec))) e_policy_wl_iconify_state_change_send(ec, 0); e_client_uniconify(ec); @@ -2252,9 +2252,11 @@ e_policy_wl_iconify(E_Client *ec) if (e_policy_visibility_client_iconify(ec)) { ec->exp_iconify.by_client = 1; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_ICONIFY_BY_CLIENT); return; } ec->exp_iconify.by_client = 1; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_ICONIFY_BY_CLIENT); e_client_iconify(ec); @@ -2270,18 +2272,20 @@ e_policy_wl_uniconify(E_Client *ec) if (e_policy_visibility_client_uniconify(ec, 1)) return; - if ((ec->iconic) && (!ec->exp_iconify.by_client)) + if ((ec->iconic) && (!e_client_is_iconified_by_client(ec))) e_policy_wl_iconify_state_change_send(ec, 0); if (ec->visibility.force_obscured) { ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); return; } e_client_uniconify(ec); ELOGF("TZPOL", "Un-Set ICONIFY BY CLIENT", ec); ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); EC_CHANGED(ec); } diff --git a/src/bin/e_test_helper.c b/src/bin/e_test_helper.c index 5906daa..3646336 100644 --- a/src/bin/e_test_helper.c +++ b/src/bin/e_test_helper.c @@ -375,7 +375,7 @@ _e_test_helper_message_append_client(Eldbus_Message_Iter *iter, E_Client *ec) ec->visibility.opaque, ec->visibility.obscured, ec->visibility.skip, - ec->iconic ? (ec->exp_iconify.by_client ? 2 : 1) : 0, + ec->iconic ? (e_client_is_iconified_by_client(ec) ? 2 : 1) : 0, /* color depth */ ec->argb, @@ -1729,7 +1729,7 @@ _e_test_helper_cb_client_iconic_state_changed(void *data EINA_UNUSED, int type E if (!_e_test_helper_find_win_on_reg_list(win)) return ECORE_CALLBACK_PASS_ON; sig = eldbus_service_signal_new(th_data->iface, E_TEST_HELPER_SIGNAL_ICONIC_STATE_CHANGED); - eldbus_message_arguments_append(sig, "ubb", win, ec->iconic, ec->exp_iconify.by_client); + eldbus_message_arguments_append(sig, "ubb", win, ec->iconic, e_client_is_iconified_by_client(ec)); eldbus_service_signal_send(th_data->iface, sig); return ECORE_CALLBACK_PASS_ON; diff --git a/src/bin/services/e_service_cbhm.c b/src/bin/services/e_service_cbhm.c index 3f52d24..0a65065 100644 --- a/src/bin/services/e_service_cbhm.c +++ b/src/bin/services/e_service_cbhm.c @@ -114,7 +114,7 @@ _e_cbhm_vis_change(E_Policy_Cbhm *cbhm, Eina_Bool vis) if (ec->iconic) { ELOGF("CBHM", "Un-set ICONIFY BY CBHM", ec); - if ((ec->iconic) && (!ec->exp_iconify.by_client)) + if ((ec->iconic) && (!e_client_is_iconified_by_client(ec))) e_policy_wl_iconify_state_change_send(ec, 0); ec->exp_iconify.not_raise = 0; e_client_uniconify(ec); @@ -137,6 +137,7 @@ _e_cbhm_vis_change(E_Policy_Cbhm *cbhm, Eina_Bool vis) ELOGF("CBHM", "Set ICONIFY BY CBHM", ec); e_policy_wl_iconify_state_change_send(ec, 1); ec->exp_iconify.by_client = 0; + e_client_iconified_type_set(ec, E_ICONIFIED_TYPE_NONE); e_client_iconify(ec); e_client_lower(ec); } -- 2.7.4