break out client frame setting into helper function

This commit is contained in:
Mike Blumenkrantz 2014-01-20 00:00:45 -05:00
parent 04f7b59e11
commit bcee2e34aa
1 changed files with 59 additions and 54 deletions

View File

@ -1979,6 +1979,64 @@ _e_client_eval(E_Client *ec)
_e_client_hook_call(E_CLIENT_HOOK_EVAL_END, ec);
}
static void
_e_client_frame_update(E_Client *ec)
{
const char *bordername;
Eina_Stringshare *pborder;
if (ec->fullscreen || ec->borderless)
bordername = "borderless";
else if (ec->bordername)
bordername = ec->bordername;
else if ((ec->mwm.borderless) || (ec->borderless))
bordername = "borderless";
else if (((ec->icccm.transient_for != 0) ||
(ec->dialog)) &&
(ec->icccm.min_w == ec->icccm.max_w) &&
(ec->icccm.min_h == ec->icccm.max_h))
bordername = "noresize_dialog";
else if ((ec->icccm.min_w == ec->icccm.max_w) &&
(ec->icccm.min_h == ec->icccm.max_h))
bordername = "noresize";
else if (ec->shaped)
bordername = "shaped";
else if (e_pixmap_is_x(ec->pixmap) &&
((!ec->icccm.accepts_focus) &&
(!ec->icccm.take_focus)))
bordername = "nofocus";
else if (ec->icccm.urgent)
bordername = "urgent";
else if ((ec->icccm.transient_for != 0) ||
(ec->dialog))
bordername = "dialog";
else if (ec->netwm.state.modal)
bordername = "modal";
else if ((ec->netwm.state.skip_taskbar) ||
(ec->netwm.state.skip_pager))
bordername = "skipped";
/*
else if ((ec->internal) && (ec->icccm.class) &&
(!strncmp(ec->icccm.class, "e_fwin", 6)))
bordername = "internal_fileman";
*/
else
bordername = e_config->theme_default_border_style;
if (!bordername) bordername = "default";
if (e_util_strcmp(ec->border.name, bordername))
{
pborder = ec->border.name;
ec->border.name = eina_stringshare_add(bordername);
if (e_comp_object_frame_theme_set(ec->frame, bordername))
eina_stringshare_del(pborder);
else
{
eina_stringshare_del(ec->border.name);
ec->border.name = pborder;
}
}
}
////////////////////////////////////////////////
EINTERN void
@ -2016,60 +2074,7 @@ e_client_idler_before(void)
if ((ec->border.changed) && (!ec->shaded) &&
(!(((ec->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN))))
{
const char *bordername;
Eina_Stringshare *pborder;
if (ec->fullscreen || ec->borderless)
bordername = "borderless";
else if (ec->bordername)
bordername = ec->bordername;
else if ((ec->mwm.borderless) || (ec->borderless))
bordername = "borderless";
else if (((ec->icccm.transient_for != 0) ||
(ec->dialog)) &&
(ec->icccm.min_w == ec->icccm.max_w) &&
(ec->icccm.min_h == ec->icccm.max_h))
bordername = "noresize_dialog";
else if ((ec->icccm.min_w == ec->icccm.max_w) &&
(ec->icccm.min_h == ec->icccm.max_h))
bordername = "noresize";
else if (ec->shaped)
bordername = "shaped";
else if (e_pixmap_is_x(ec->pixmap) &&
((!ec->icccm.accepts_focus) &&
(!ec->icccm.take_focus)))
bordername = "nofocus";
else if (ec->icccm.urgent)
bordername = "urgent";
else if ((ec->icccm.transient_for != 0) ||
(ec->dialog))
bordername = "dialog";
else if (ec->netwm.state.modal)
bordername = "modal";
else if ((ec->netwm.state.skip_taskbar) ||
(ec->netwm.state.skip_pager))
bordername = "skipped";
/*
else if ((ec->internal) && (ec->icccm.class) &&
(!strncmp(ec->icccm.class, "e_fwin", 6)))
bordername = "internal_fileman";
*/
else
bordername = e_config->theme_default_border_style;
if (!bordername) bordername = "default";
if (e_util_strcmp(ec->border.name, bordername))
{
pborder = ec->border.name;
ec->border.name = eina_stringshare_add(bordername);
if (e_comp_object_frame_theme_set(ec->frame, bordername))
eina_stringshare_del(pborder);
else
{
eina_stringshare_del(ec->border.name);
ec->border.name = pborder;
}
}
_e_client_frame_update(ec);
ec->border.changed = 0;
}
if (urgent != ec->icccm.urgent)