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
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;
}
/* 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)
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;
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)
{
}
else
{
- if (ec->exp_iconify.by_client)
+ if (iconified_by_client)
{
EC_IS_NOT_VISIBLE continue;
calc_region = EINA_FALSE;
{
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)
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)
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 */
}
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))
{
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;
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;
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();
}
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
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);
}
#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");
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);
}
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;
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)
_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,
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);
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);
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);
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);
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);
if (ec->iconic)
{
- if (ec->exp_iconify.by_client)
+ if (e_client_is_iconified_by_client(ec))
iconified = 2;
else
iconified = 1;
if (ec->iconic)
{
- if (ec->exp_iconify.by_client)
+ if (e_client_is_iconified_by_client(ec))
iconified = 2;
else
iconified = 1;
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;
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;
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;
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;
}
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)
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;
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;
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;
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;
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;
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;
/* 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 */
continue;
}
- if (above->iconic && above->exp_iconify.by_client)
+ if (above->iconic && e_client_is_iconified_by_client(above))
continue;
if (above->bg_state)
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;
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);
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;
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);
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);
}
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)
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);
}
{
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)
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);
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);
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);
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);
}
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,
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;
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);
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);
}