/* note: this is here as it seems there are enough apps that do not even
* expect us to emulate a look of focus but not actually set x input
* focus as we do - so simply abort any focuse set on such windows */
- if (e_pixmap_is_x(ec->pixmap))
- {
- /* be strict about accepting focus hint */
- if ((!ec->icccm.accepts_focus) &&
- (!ec->icccm.take_focus)) return;
- }
+ /* be strict about accepting focus hint */
+ if ((!ec->icccm.accepts_focus) &&
+ (!ec->icccm.take_focus)) return;
if (ec->lock_focus_out) return;
if (ec == focused) return;
evas_object_focus_set(ec->frame, 1);
* expect us to emulate a look of focus but not actually set x input
* focus as we do - so simply abort any focuse set on such windows */
/* be strict about accepting focus hint */
- if (e_pixmap_is_x(ec->pixmap))
- {
- /* be strict about accepting focus hint */
- if ((!ec->icccm.accepts_focus) &&
- (!ec->icccm.take_focus)) return;
- }
+ /* be strict about accepting focus hint */
+ if ((!ec->icccm.accepts_focus) &&
+ (!ec->icccm.take_focus)) return;
if (focus && ec->lock_focus_out) return;
if (e_object_is_del(E_OBJECT(ec)) && focus)
CRI("CAN'T FOCUS DELETED CLIENT!");
ec->comp_data->scaler.buffer_viewport.buffer.src_width = wl_fixed_from_int(-1);
ec->comp_data->scaler.buffer_viewport.surface.width = -1;
+ E_Comp_Client_Data *p_cdata = e_pixmap_cdata_get(ec->pixmap);
+ EINA_SAFETY_ON_NULL_RETURN(p_cdata);
+ ec->comp_data->accepts_focus = p_cdata->accepts_focus;
+
/* add this client to the hash */
/* eina_hash_add(clients_win_hash, &win, ec); */
e_hints_client_list_set();
Eina_Bool set_win_type : 1;
Eina_Bool frame_update : 1;
Eina_Bool focus_update : 1;
+ unsigned char accepts_focus : 1;
};
struct _E_Comp_Wl_Output
cp->cdata->pending.buffer_viewport.buffer.src_width = wl_fixed_from_int(-1);
cp->cdata->pending.buffer_viewport.surface.width = -1;
cp->cdata->pending.buffer_viewport.changed = 0;
+ cp->cdata->accepts_focus = 1;
#endif
return cp;
}
ec->border.changed = ec->changes.border = !ec->borderless;
ec->netwm.type = E_WINDOW_TYPE_NORMAL;
ec->comp_data->set_win_type = EINA_TRUE;
+
+ E_Comp_Client_Data *p_cdata = e_pixmap_cdata_get(ep);
+ EINA_SAFETY_ON_NULL_RETURN(p_cdata);
+ ec->icccm.accepts_focus = ec->icccm.take_focus = p_cdata->accepts_focus;
}
static void