mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
103 lines
2.7 KiB
C++
103 lines
2.7 KiB
C++
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "ui/base/accelerators/accelerator.h"
|
|
|
|
#include "base/i18n/rtl.h"
|
|
#include "base/logging.h"
|
|
#include "base/strings/string_util.h"
|
|
#include "base/strings/utf_string_conversions.h"
|
|
|
|
#if defined(USE_AURA)
|
|
#include "ui/events/keycodes/keyboard_code_conversion.h"
|
|
#endif
|
|
|
|
namespace ui {
|
|
|
|
Accelerator::Accelerator()
|
|
: key_code_(ui::VKEY_UNKNOWN),
|
|
type_(ui::ET_KEY_PRESSED),
|
|
modifiers_(0),
|
|
is_repeat_(false) {
|
|
}
|
|
|
|
Accelerator::Accelerator(KeyboardCode keycode, int modifiers)
|
|
: key_code_(keycode),
|
|
type_(ui::ET_KEY_PRESSED),
|
|
modifiers_(modifiers),
|
|
is_repeat_(false) {
|
|
}
|
|
|
|
Accelerator::Accelerator(const Accelerator& accelerator) {
|
|
key_code_ = accelerator.key_code_;
|
|
type_ = accelerator.type_;
|
|
modifiers_ = accelerator.modifiers_;
|
|
is_repeat_ = accelerator.is_repeat_;
|
|
if (accelerator.platform_accelerator_.get())
|
|
platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy();
|
|
}
|
|
|
|
Accelerator::~Accelerator() {
|
|
}
|
|
|
|
Accelerator& Accelerator::operator=(const Accelerator& accelerator) {
|
|
if (this != &accelerator) {
|
|
key_code_ = accelerator.key_code_;
|
|
type_ = accelerator.type_;
|
|
modifiers_ = accelerator.modifiers_;
|
|
is_repeat_ = accelerator.is_repeat_;
|
|
if (accelerator.platform_accelerator_.get())
|
|
platform_accelerator_ = accelerator.platform_accelerator_->CreateCopy();
|
|
else
|
|
platform_accelerator_.reset();
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
bool Accelerator::operator <(const Accelerator& rhs) const {
|
|
if (key_code_ != rhs.key_code_)
|
|
return key_code_ < rhs.key_code_;
|
|
if (type_ != rhs.type_)
|
|
return type_ < rhs.type_;
|
|
return modifiers_ < rhs.modifiers_;
|
|
}
|
|
|
|
bool Accelerator::operator ==(const Accelerator& rhs) const {
|
|
if ((key_code_ == rhs.key_code_) && (type_ == rhs.type_) &&
|
|
(modifiers_ == rhs.modifiers_))
|
|
return true;
|
|
|
|
bool platform_equal =
|
|
platform_accelerator_.get() && rhs.platform_accelerator_.get() &&
|
|
platform_accelerator_.get() == rhs.platform_accelerator_.get();
|
|
|
|
return platform_equal;
|
|
}
|
|
|
|
bool Accelerator::operator !=(const Accelerator& rhs) const {
|
|
return !(*this == rhs);
|
|
}
|
|
|
|
bool Accelerator::IsShiftDown() const {
|
|
return (modifiers_ & EF_SHIFT_DOWN) != 0;
|
|
}
|
|
|
|
bool Accelerator::IsCtrlDown() const {
|
|
return (modifiers_ & EF_CONTROL_DOWN) != 0;
|
|
}
|
|
|
|
bool Accelerator::IsAltDown() const {
|
|
return (modifiers_ & EF_ALT_DOWN) != 0;
|
|
}
|
|
|
|
bool Accelerator::IsCmdDown() const {
|
|
return (modifiers_ & EF_COMMAND_DOWN) != 0;
|
|
}
|
|
|
|
bool Accelerator::IsRepeat() const {
|
|
return is_repeat_;
|
|
}
|
|
|
|
} // namespace ui
|