#include using namespace tb; #include "../Core/Timer.h" #include "../Input/Input.h" #include "../Input/InputEvents.h" #include "UIView.h" namespace Atomic { static MODIFIER_KEYS GetModifierKeys(int qualifiers, bool superKey) { MODIFIER_KEYS code = TB_MODIFIER_NONE; if (qualifiers & QUAL_ALT) code |= TB_ALT; if (qualifiers & QUAL_CTRL) code |= TB_CTRL; if (qualifiers & QUAL_SHIFT) code |= TB_SHIFT; if (superKey) code |= TB_SUPER; return code; } // @return Return the upper case of a ascii charcter. Only for shortcut handling. static int toupr_ascii(int ascii) { if (ascii >= 'a' && ascii <= 'z') return ascii + 'A' - 'a'; return ascii; } void UIView::HandleMouseButtonDown(StringHash eventType, VariantMap& eventData) { if (inputDisabled_) return; using namespace MouseButtonDown; unsigned button = eventData[P_BUTTON].GetUInt(); IntVector2 pos; pos = GetSubsystem()->GetMousePosition(); Input* input = GetSubsystem(); int qualifiers = input->GetQualifiers(); #ifdef ATOMIC_PLATFORM_WINDOWS bool superdown = input->GetKeyDown(KEY_LCTRL) || input->GetKeyDown(KEY_RCTRL); #else bool superdown = input->GetKeyDown(KEY_LGUI) || input->GetKeyDown(KEY_RGUI); #endif MODIFIER_KEYS mod = GetModifierKeys(qualifiers, superdown); static double last_time = 0; static int counter = 1; Time* t = GetSubsystem