EAPI void e_focus_event_mouse_down(E_Border* bd) { if (e_config->focus_policy == E_FOCUS_CLICK) { e_border_focus_set(bd, 1, 1); if (!bd->lock_user_stacking) { if (e_config->border_raise_on_focus) e_border_raise(bd); } } else if (e_config->always_click_to_raise) { if (!bd->lock_user_stacking) { if (e_config->border_raise_on_focus) e_border_raise(bd); } } else if (e_config->always_click_to_focus) { e_border_focus_set(bd, 1, 1); } }
EAPI void e_focus_event_mouse_out(E_Border* bd) { if (e_config->focus_policy == E_FOCUS_MOUSE) { /* FIXME: this is such a hack. its a big hack around x's async events * as we dont know always exactly what action causes what event * so by waiting more than 0.2 secs before reverting focus to nothing * since we entered root, we are ignoring mouse in's on the root * container for a bit after the mosue may have entered it */ if ((ecore_loop_time_get() - e_grabinput_last_focus_time_get()) > 0.2) { if (!bd->lock_focus_in) { if (bd->focused) e_border_focus_set(bd, 0, 1); } } } if (bd->raise_timer) { ecore_timer_del(bd->raise_timer); bd->raise_timer = NULL; } }
EAPI void e_focus_event_mouse_down(E_Border *bd) { if (!bd->focused) { if (e_border_focus_policy_click(bd)) e_border_focus_set(bd, 1, 1); else if (e_config->always_click_to_focus) e_border_focus_set(bd, 1, 1); } if (e_config->always_click_to_raise) { if (!bd->lock_user_stacking) e_border_raise(bd); } }
static void _itask_item_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Mouse_Up *ev; Itask_Item *ic; E_Desk *current_desk; ev = event_info; ic = data; ic->drag.start = 0; if ((ev->button == 1) && (!ic->drag.dnd)) { if (ic->time_press + 0.3 < ecore_loop_time_get()) return; current_desk = e_desk_current_get(ic->border->zone); if ((ic->itask->ci->iconify_focused) && (ic->border == e_border_focused_get())) { e_border_iconify(ic->border); } else { if ((e_desk_current_get(ic->border->zone) != ic->border->desk) && (!ic->border->sticky)) e_desk_show(ic->border->desk); if (ic->border->shaded) e_border_unshade(ic->border, E_DIRECTION_UP); if (ic->border->iconic) e_border_uniconify(ic->border); else e_border_raise(ic->border); e_border_focus_set(ic->border, 1, 1); } } }
EAPI void e_focus_event_mouse_in(E_Border* bd) { if ((e_config->focus_policy == E_FOCUS_MOUSE) || (e_config->focus_policy == E_FOCUS_SLOPPY)) { e_border_focus_set(bd, 1, 1); } if (bd->raise_timer) ecore_timer_del(bd->raise_timer); bd->raise_timer = NULL; if (e_config->use_auto_raise) { if (e_config->auto_raise_delay == 0.0) { if (!bd->lock_user_stacking) { if (e_config->border_raise_on_focus) e_border_raise(bd); } } else bd->raise_timer = ecore_timer_add(e_config->auto_raise_delay, _e_focus_raise_timer, bd); } }