Add KeyAction::Left/RightMouseButton (it's quite experimental at the moment)

This commit is contained in:
David Capello 2014-11-08 21:09:29 -03:00
parent 8716214718
commit b96d615d6c
3 changed files with 31 additions and 0 deletions

View File

@ -38,6 +38,7 @@
#include "raster/sprite.h"
#include "ui/accelerator.h"
#include "ui/message.h"
#include "ui/system.h"
#include "ui/view.h"
namespace app {
@ -109,6 +110,32 @@ public:
return isKeyActionPressed(KeyAction::SubtractSelection);
}
protected:
bool onProcessMessage(Message* msg) override {
switch (msg->type()) {
case kKeyDownMessage:
case kKeyUpMessage:
if (static_cast<KeyMessage*>(msg)->repeat() == 0) {
Key* lmb = KeyboardShortcuts::instance()->action(KeyAction::LeftMouseButton);
Key* rmb = KeyboardShortcuts::instance()->action(KeyAction::RightMouseButton);
// Convert action keys into mouse messages.
if (lmb->isPressed(msg) || rmb->isPressed(msg)) {
MouseMessage mouseMsg(
(msg->type() == kKeyDownMessage ? kMouseDownMessage: kMouseUpMessage),
(lmb->isPressed(msg) ? kButtonLeft: kButtonRight),
gfx::Point(jmouse_x(0), jmouse_y(0)));
sendMessage(&mouseMsg);
return true;
}
}
break;
}
return Editor::onProcessMessage(msg);
}
private:
bool isKeyActionPressed(KeyAction action) {
if (Key* key = KeyboardShortcuts::instance()->action(action))

View File

@ -57,6 +57,8 @@ namespace {
{ "LockAxis" , "Lock Axis" , app::KeyAction::LockAxis },
{ "AddSelection" , "Add Selection" , app::KeyAction::AddSelection },
{ "SubtractSelection" , "Subtract Selection" , app::KeyAction::SubtractSelection },
{ "LeftMouseButton" , "Trigger Left Mouse Button" , app::KeyAction::LeftMouseButton },
{ "RightMouseButton" , "Trigger Right Mouse Button" , app::KeyAction::RightMouseButton },
{ NULL , NULL , app::KeyAction::None }
};

View File

@ -67,6 +67,8 @@ namespace app {
LockAxis,
AddSelection,
SubtractSelection,
LeftMouseButton,
RightMouseButton
};
class Key {