static inline WebEvent::Modifiers modifiersForEvent(const Evas_Modifier* modifiers) { unsigned result = 0; if (evas_key_modifier_is_set(modifiers, "Shift")) result |= WebEvent::ShiftKey; if (evas_key_modifier_is_set(modifiers, "Control")) result |= WebEvent::ControlKey; if (evas_key_modifier_is_set(modifiers, "Alt")) result |= WebEvent::AltKey; if (evas_key_modifier_is_set(modifiers, "Meta")) result |= WebEvent::MetaKey; return static_cast<WebEvent::Modifiers>(result); }
PlatformKeyboardEvent::PlatformKeyboardEvent(const Evas_Event_Key_Up* ev) : m_type(KeyUp) , m_text(String::fromUTF8(ev->string)) , m_shiftKey(evas_key_modifier_is_set(ev->modifiers, "Shift")) , m_ctrlKey(evas_key_modifier_is_set(ev->modifiers, "Control")) , m_altKey(evas_key_modifier_is_set(ev->modifiers, "Alt")) , m_metaKey(evas_key_modifier_is_set(ev->modifiers, "Meta")) { String keyName = String(ev->key); m_keyIdentifier = keyIdentifierForEvasKeyName(keyName); m_windowsVirtualKeyCode = windowsKeyCodeForEvasKeyName(keyName); // FIXME: m_isKeypad = false; m_autoRepeat = false; }
static void _mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info) { smart_slider_t *priv = data; Evas_Event_Mouse_Wheel *ev = event_info; if(priv->disabled) return; float scale; if(priv->integer) { scale = priv->scale; } else { scale = evas_key_modifier_is_set(ev->modifiers, SMART_SLIDER_MODIFIER) ? 0.001 // 1000 steps : 0.01; // 100 steps } float rel = scale * ev->z; priv->drag += rel; if(priv->drag > 1.f) priv->drag = 1.f; else if(priv->drag < 0.f) priv->drag = 0.f; if(_smart_slider_value_flush(obj)) evas_object_smart_callback_call(obj, SMART_SLIDER_CHANGED, NULL); }
static void _mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info) { smart_slider_t *priv = data; Evas_Event_Mouse_Move *ev = event_info; if(priv->disabled) return; if(priv->grabbed) { float dx = ev->cur.output.x - ev->prev.output.x; float dy = ev->cur.output.y - ev->prev.output.y; float scale = evas_key_modifier_is_set(ev->modifiers, SMART_SLIDER_MODIFIER) ? 0.0001 // 10000 steps : 0.001; // 1000 steps float rel = (fabs(dx) > fabs(dy) ? dx : dy) * scale; priv->drag += rel; if(priv->drag > 1.f) priv->drag = 1.f; else if(priv->drag < 0.f) priv->drag = 0.f; if(_smart_slider_value_flush(obj)) evas_object_smart_callback_call(obj, SMART_SLIDER_CHANGED, NULL); } }
static void bg_mouse_down(void *data, Evas *_e, Evas_Object *_o, void *event_info) { Drawing *d; double x, y, _x, _y; Evas_Coord ex, ey, ew, eh; int shift_state, ctrl_state; int _b; Evas_Event_Mouse_Down * em = (Evas_Event_Mouse_Down*) event_info; if (!shell) return; if (!shell->evas) return; _b = em->button; shift_state = evas_key_modifier_is_set(em->modifiers, "Shift"); ctrl_state = evas_key_modifier_is_set(em->modifiers, "Control"); evas_output_viewport_get(shell->evas, &ex, &ey, &ew, &eh); d = drawing; if (!d) return; _x = em->canvas.x; _y = em->canvas.y; if (!ctrl_state && (_b == 1)) { x = _x / d->scale - d->x; y = -(_y - eh - ey) / d->scale - d->y; gra_pre_draw_mouse_click(x, y); } if (!shift_state && !ctrl_state && (_b == 3)) { menu_box_show(DUP("context.menu"), (double)_x + 1, (double)_y + 1, 1); } if (_b == 2) shell_drag_start(_x, _y); if (ctrl_state && (_b == 1)) shell_zoom(_x, _y); if (ctrl_state && (_b == 3)) shell_unzoom(_x, _y); }
static void _nav_refresh_cb(void *data, Evas_Object *obj, void *event_info) { App_Data *ad = data; const Evas_Modifier *mods = evas_key_modifier_get(evas_object_evas_get(obj)); if (evas_key_modifier_is_set(mods, "Shift")) elm_web_reload_full(ad->current_tab->web); else elm_web_reload(ad->current_tab->web); }
static Eina_Bool _mods_check(Shortcut *sc, Evas_Event_Key_Down *ev) { Eina_Bool meta; CHECK(sc->mods.ctrl, "Control"); CHECK(sc->mods.alt, "Alt"); CHECK(sc->mods.shift, "Shift"); CHECK(sc->mods.win, "Super"); CHECK(sc->mods.hyper, "hyper") meta = evas_key_modifier_is_set(ev->modifiers, "Meta") || evas_key_modifier_is_set(ev->modifiers, "AltGr") || evas_key_modifier_is_set(ev->modifiers, "ISO_Level3_Shift"); if (sc->mods.meta && !meta) return EINA_FALSE; return EINA_TRUE; }
PlatformKeyboardEvent::PlatformKeyboardEvent(const Evas_Event_Key_Up* event) : PlatformEvent(PlatformEvent::KeyUp, evas_key_modifier_is_set(event->modifiers, "Shift"), evas_key_modifier_is_set(event->modifiers, "Control"), evas_key_modifier_is_set(event->modifiers, "Alt"), evas_key_modifier_is_set(event->modifiers, "Meta"), currentTime()) , m_text(singleCharacterString(String::fromUTF8(event->string))) , m_unmodifiedText(singleCharacterString(String::fromUTF8(event->string))) , m_keyIdentifier(keyIdentifierForEvasKeyName(String(event->key))) , m_windowsVirtualKeyCode(windowsKeyCodeForEvasKeyName(String(event->key))) , m_nativeVirtualKeyCode(0) , m_macCharCode(0) , m_autoRepeat(false) , m_isKeypad(false) , m_isSystemKey(false) { }
/* Converts the Evas modifiers to Ecore_IMF keyboard modifiers */ static void _ecore_imf_evas_event_modifiers_wrap(Evas_Modifier *evas_modifiers, Ecore_IMF_Keyboard_Modifiers *imf_keyboard_modifiers) { if (!evas_modifiers || !imf_keyboard_modifiers) return; *imf_keyboard_modifiers = ECORE_IMF_KEYBOARD_MODIFIER_NONE; if (evas_key_modifier_is_set(evas_modifiers, "Control")) *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_CTRL; if (evas_key_modifier_is_set(evas_modifiers, "Alt")) *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_ALT; if (evas_key_modifier_is_set(evas_modifiers, "Shift")) *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_SHIFT; if (evas_key_modifier_is_set(evas_modifiers, "Super") || evas_key_modifier_is_set(evas_modifiers, "Hyper")) *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_WIN; if (evas_key_modifier_is_set(evas_modifiers, "AltGr")) *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_ALTGR; }
static void _win_search_trigger_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Key_Down *ev = event_info; App_Data *ad = data; Evas_Object *box, *box2, *entry, *btn, *ic; if (strcmp(ev->keyname, "f") || !evas_key_modifier_is_set(ev->modifiers, "Control")) return; if (ad->search_box || !ad->current_tab) return; box = elm_box_add(ad->win); elm_box_horizontal_set(box, EINA_TRUE); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_after(ad->main_box, box, ad->url); evas_object_show(box); evas_object_event_callback_add(box, EVAS_CALLBACK_DEL, _search_box_del_cb, ad); entry = elm_entry_add(ad->win); elm_entry_single_line_set(entry, EINA_TRUE); elm_entry_scrollable_set(entry, EINA_TRUE); evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, entry); evas_object_show(entry); evas_object_smart_callback_add(entry, "changed", _search_entry_changed_cb, ad); evas_object_smart_callback_add(entry, "activated", _search_entry_activate_cb, ad); box2 = elm_box_add(ad->win); elm_box_horizontal_set(box2, EINA_TRUE); elm_object_part_content_set(entry, "end", box2); btn = elm_button_add(ad->win); elm_box_pack_end(box2, btn); evas_object_show(btn); ic = elm_icon_add(ad->win); elm_icon_standard_set(ic, "arrow_up"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _search_prev_cb, ad); btn = elm_button_add(ad->win); elm_box_pack_end(box2, btn); evas_object_show(btn); ic = elm_icon_add(ad->win); elm_icon_standard_set(ic, "arrow_down"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _search_next_cb, ad); btn = elm_button_add(ad->win); elm_box_pack_end(box, btn); evas_object_show(btn); ic = elm_icon_add(ad->win); elm_icon_standard_set(ic, "close"); elm_object_part_content_set(btn, "icon", ic); evas_object_smart_callback_add(btn, "clicked", _search_close_cb, ad); ad->search_box = box; ad->search_entry = entry; elm_object_focus_set(entry, EINA_TRUE); }