Replace all JM_ macros with ui::MessageType enum and add ui::RegisterMessage class to register new UI messages

This commit is contained in:
David Capello 2013-04-04 21:53:29 -03:00
parent 6e62bcb82f
commit 3dbf6518f9
55 changed files with 473 additions and 430 deletions

View File

@ -398,7 +398,7 @@ void PaletteEntryEditor::setColor(const app::Color& color)
bool PaletteEntryEditor::onProcessMessage(Message* msg)
{
if (msg->type == JM_TIMER &&
if (msg->type == kTimerMessage &&
msg->timer.timer == &m_redrawTimer) {
// Redraw all editors
if (m_redrawAll) {

View File

@ -187,7 +187,7 @@ void PreviewCommand::onExecute(Context* context)
if (keypressed()) {
int readkey_value = readkey();
Message* msg = jmessage_new_key_related(JM_KEYPRESSED, readkey_value);
Message* msg = jmessage_new_key_related(kKeyDownMessage, readkey_value);
Command* command = NULL;
get_command_from_key_message(msg, &command, NULL);
jmessage_free(msg);

View File

@ -100,7 +100,7 @@ bool ColorCurveEditor::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_KEYPRESSED: {
case kKeyDownMessage: {
switch (msg->key.scancode) {
case KEY_INSERT: {
@ -137,7 +137,7 @@ bool ColorCurveEditor::onProcessMessage(Message* msg)
return true;
}
case JM_DRAW: {
case kPaintMessage: {
BITMAP *bmp;
int x, y, u;
@ -189,7 +189,7 @@ bool ColorCurveEditor::onProcessMessage(Message* msg)
return true;
}
case JM_BUTTONPRESSED:
case kMouseDownMessage:
// Change scroll
if (msg->any.shifts & KB_SHIFT_FLAG) {
m_status = STATUS_SCROLLING;
@ -232,7 +232,7 @@ bool ColorCurveEditor::onProcessMessage(Message* msg)
captureMouse();
// continue in motion message...
case JM_MOTION:
case kMouseMoveMessage:
if (hasCapture()) {
switch (m_status) {
@ -276,7 +276,7 @@ bool ColorCurveEditor::onProcessMessage(Message* msg)
#endif
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();

View File

@ -63,19 +63,19 @@ bool FilterPreview::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_OPEN:
case kOpenMessage:
RenderEngine::setPreviewImage(m_filterMgr->getLayer(),
m_filterMgr->getDestinationImage());
break;
case JM_CLOSE:
case kCloseMessage:
RenderEngine::setPreviewImage(NULL, NULL);
// Stop the preview timer.
m_timer.stop();
break;
case JM_TIMER:
case kTimerMessage:
if (m_filterMgr) {
if (m_filterMgr->applyStep())
m_filterMgr->flush();

View File

@ -272,7 +272,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW: {
case kPaintMessage: {
JRect clip = &msg->draw.rect;
int layer, first_layer, last_layer;
FrameNumber frame, first_frame, last_frame;
@ -320,18 +320,18 @@ bool AnimationEditor::onProcessMessage(Message* msg)
return true;
}
case JM_TIMER:
case kTimerMessage:
break;
case JM_MOUSEENTER:
case kMouseEnterMessage:
if (key[KEY_SPACE]) m_space_pressed = true;
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
if (m_space_pressed) m_space_pressed = false;
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (msg->mouse.middle || m_space_pressed) {
captureMouse();
m_state = STATE_SCROLLING;
@ -432,7 +432,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
jmouse_show();
break;
case JM_MOTION: {
case kMouseMoveMessage: {
int hot_part = A_PART_NOTHING;
int hot_layer = -1;
FrameNumber hot_frame(-1);
@ -523,7 +523,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
return true;
}
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
@ -712,7 +712,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
}
break;
case JM_KEYPRESSED: {
case kKeyDownMessage: {
Command* command = NULL;
Params* params = NULL;
get_command_from_key_message(msg, &command, &params);
@ -779,7 +779,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
break;
}
case JM_KEYRELEASED:
case kKeyUpMessage:
switch (msg->key.scancode) {
case KEY_SPACE:
@ -795,7 +795,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
}
break;
case JM_WHEEL: {
case kMouseWheelMessage: {
int dz = jmouse_z(1) - jmouse_z(0);
int dx = 0;
int dy = 0;
@ -815,7 +815,7 @@ bool AnimationEditor::onProcessMessage(Message* msg)
break;
}
case JM_SETCURSOR:
case kSetCursorMessage:
setCursor(msg->mouse.x, msg->mouse.y);
return true;

View File

@ -735,7 +735,7 @@ bool CustomizedGuiManager::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_CLOSE_APP:
case kCloseAppMessage:
{
// Execute the "Exit" command.
Command* command = CommandsModule::instance()->getCommandByName(CommandId::Exit);
@ -743,14 +743,14 @@ bool CustomizedGuiManager::onProcessMessage(Message* msg)
}
break;
case JM_QUEUEPROCESSING:
case kQueueProcessingMessage:
gui_feedback();
// Open dropped files
check_for_dropped_files();
break;
case JM_KEYPRESSED: {
case kKeyDownMessage: {
Window* toplevel_window = getTopWindow();
// If there is a foreground window as top level...

View File

@ -72,22 +72,22 @@ protected:
bool onProcessMessage(Message* msg) OVERRIDE {
switch (msg->type) {
case JM_SETCURSOR:
case kSetCursorMessage:
jmouse_set_cursor(kArrowCursor);
return true;
case JM_DRAW:
case kPaintMessage:
static_cast<SkinTheme*>(getTheme())->drawWindowButton(this, &msg->draw.rect);
return true;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (msg->key.scancode == KEY_ESC) {
setSelected(true);
return true;
}
break;
case JM_KEYRELEASED:
case kKeyUpMessage:
if (msg->key.scancode == KEY_ESC) {
if (isSelected()) {
setSelected(false);

View File

@ -38,6 +38,7 @@ add_library(ui-lib
preferred_size_event.cpp
property.cpp
rect.cpp
register_message.cpp
scroll_bar.cpp
separator.cpp
slider.cpp

View File

@ -60,42 +60,6 @@ namespace ui {
#define JI_NOTEXT 0x0800 // The widget does not have text.
#define JI_DIRTY 0x1000 // The widget (or one child) is dirty (update_region != empty).
// JINETE Message types.
enum {
// General messages.
JM_OPEN, // Windows is open.
JM_CLOSE, // Windows is closed.
JM_CLOSE_APP, // The user wants to close the entire application.
JM_DRAW, // Widget needs be repainted.
JM_TIMER, // A timer timeout.
JM_SETPOS, // Set position.
JM_WINMOVE, // Window movement.
JM_QUEUEPROCESSING, // Only sent to manager which indicate
// the last message in the queue.
// Keyboard related messages.
JM_KEYPRESSED, // When a any key is pressed.
JM_KEYRELEASED, // When a any key is released.
JM_FOCUSENTER, // Widget gets the focus.
JM_FOCUSLEAVE, // Widget losts the focus.
// Mouse related messages.
JM_BUTTONPRESSED, // User makes click inside a widget.
JM_BUTTONRELEASED, // User releases mouse button in a widget.
JM_DOUBLECLICK, // User makes double click in some widget.
JM_MOUSEENTER, // A widget gets mouse pointer.
JM_MOUSELEAVE, // A widget losts mouse pointer.
JM_MOTION, // User moves the mouse on some widget.
JM_SETCURSOR, // A widget needs to setup the mouse cursor.
JM_WHEEL, // User moves the wheel.
// xxx drag'n'drop operation?.
// JM_DND_
// Other messages.
JM_REGISTERED_MESSAGES
};
typedef unsigned int JID;
typedef struct jrect* JRect;

View File

@ -30,7 +30,7 @@ bool Box::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
layoutBox(&msg->setpos.rect);
return true;

View File

@ -80,8 +80,8 @@ bool ButtonBase::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_FOCUSENTER:
case JM_FOCUSLEAVE:
case kFocusEnterMessage:
case kFocusLeaveMessage:
if (isEnabled()) {
if (m_behaviorType == kButtonWidget) {
// Deselect the widget (maybe the user press the key, but
@ -95,7 +95,7 @@ bool ButtonBase::onProcessMessage(Message* msg)
}
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
// If the button is enabled.
if (isEnabled()) {
// For kButtonWidget
@ -154,7 +154,7 @@ bool ButtonBase::onProcessMessage(Message* msg)
}
break;
case JM_KEYRELEASED:
case kKeyUpMessage:
if (isEnabled()) {
if (m_behaviorType == kButtonWidget) {
if (isSelected()) {
@ -165,7 +165,7 @@ bool ButtonBase::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
switch (m_behaviorType) {
case kButtonWidget:
@ -201,7 +201,7 @@ bool ButtonBase::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
@ -238,7 +238,7 @@ bool ButtonBase::onProcessMessage(Message* msg)
}
break;
case JM_MOTION:
case kMouseMoveMessage:
if (isEnabled() && hasCapture()) {
bool hasMouse = hasMouseOver();
@ -257,8 +257,8 @@ bool ButtonBase::onProcessMessage(Message* msg)
}
break;
case JM_MOUSEENTER:
case JM_MOUSELEAVE:
case kMouseEnterMessage:
case kMouseLeaveMessage:
// TODO theme stuff
if (isEnabled())
invalidate();

View File

@ -308,11 +308,11 @@ bool ComboBox::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_CLOSE:
case kCloseMessage:
closeListBox();
break;
case JM_SETPOS: {
case kResizeMessage: {
JRect cbox = jrect_new_copy(&msg->setpos.rect);
jrect_copy(this->rc, cbox);
@ -330,7 +330,7 @@ bool ComboBox::onProcessMessage(Message* msg)
return true;
}
case JM_WINMOVE:
case kWinMoveMessage:
if (m_window) {
JRect rc = getListBoxPos();
m_window->moveWindow(rc);
@ -338,7 +338,7 @@ bool ComboBox::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (m_window != NULL) {
if (!View::getView(m_listbox)->hasMouse()) {
closeListBox();
@ -381,7 +381,7 @@ bool ComboBoxEntry::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_KEYPRESSED:
case kKeyDownMessage:
if (hasFocus()) {
if (!m_comboBox->isEditable()) {
if (msg->key.scancode == KEY_SPACE ||
@ -401,7 +401,7 @@ bool ComboBoxEntry::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (m_comboBox->isClickOpen()) {
m_comboBox->switchListBox();
}
@ -413,7 +413,7 @@ bool ComboBoxEntry::onProcessMessage(Message* msg)
return true;
break;
case JM_DRAW:
case kPaintMessage:
getTheme()->draw_combobox_entry(this, &msg->draw.rect);
return true;
@ -426,7 +426,7 @@ bool ComboBoxListBox::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_BUTTONRELEASED:
case kMouseUpMessage:
{
int index = m_comboBox->getSelectedItemIndex();
if (isValidItem(index))
@ -436,7 +436,7 @@ bool ComboBoxListBox::onProcessMessage(Message* msg)
}
return true;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (hasFocus()) {
if (msg->key.scancode == KEY_SPACE ||
msg->key.scancode == KEY_ENTER ||
@ -495,7 +495,7 @@ void ComboBox::openListBox()
m_window->positionWindow(rc->x1, rc->y1);
jrect_free(rc);
getManager()->addMessageFilter(JM_BUTTONPRESSED, this);
getManager()->addMessageFilter(kMouseDownMessage, this);
m_window->openWindow();
getManager()->setFocus(m_listbox);
@ -511,7 +511,7 @@ void ComboBox::closeListBox()
delete m_window; // window, frame
m_window = NULL;
getManager()->removeMessageFilter(JM_BUTTONPRESSED, this);
getManager()->removeMessageFilter(kMouseDownMessage, this);
getManager()->setFocus(m_entry);
}
}

View File

@ -174,7 +174,7 @@ bool Entry::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_TIMER:
case kTimerMessage:
if (this->hasFocus() && msg->timer.timer == &m_timer) {
// Blinking caret
m_state = m_state ? false: true;
@ -182,7 +182,7 @@ bool Entry::onProcessMessage(Message* msg)
}
break;
case JM_FOCUSENTER:
case kFocusEnterMessage:
m_timer.start();
m_state = true;
@ -192,7 +192,7 @@ bool Entry::onProcessMessage(Message* msg)
m_recent_focused = true;
break;
case JM_FOCUSLEAVE:
case kFocusLeaveMessage:
invalidate();
m_timer.stop();
@ -201,7 +201,7 @@ bool Entry::onProcessMessage(Message* msg)
m_recent_focused = false;
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (this->hasFocus() && !isReadOnly()) {
// Command to execute
EntryCmd::Type cmd = EntryCmd::NoOp;
@ -279,10 +279,10 @@ bool Entry::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
this->captureMouse();
case JM_MOTION:
case kMouseMoveMessage:
if (this->hasCapture()) {
const char *text = this->getText();
bool move, is_dirty;
@ -338,7 +338,7 @@ bool Entry::onProcessMessage(Message* msg)
m_recent_focused = false;
m_select = m_caret;
}
else if (msg->type == JM_BUTTONPRESSED)
else if (msg->type == kMouseDownMessage)
m_select = m_caret;
// Show the caret
@ -351,20 +351,20 @@ bool Entry::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (this->hasCapture())
this->releaseMouse();
return true;
case JM_DOUBLECLICK:
case kDoubleClickMessage:
forwardWord();
m_select = m_caret;
backwardWord();
invalidate();
return true;
case JM_MOUSEENTER:
case JM_MOUSELEAVE:
case kMouseEnterMessage:
case kMouseLeaveMessage:
/* TODO theme stuff */
if (this->isEnabled())
invalidate();

View File

@ -98,7 +98,7 @@ bool Grid::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
setGridPosition(&msg->setpos.rect);
return true;

View File

@ -38,6 +38,7 @@
#include "ui/menu.h"
#include "ui/message.h"
#include "ui/message_loop.h"
#include "ui/message_type.h"
#include "ui/overlay.h"
#include "ui/overlay_manager.h"
#include "ui/paint_event.h"
@ -45,6 +46,7 @@
#include "ui/preferred_size_event.h"
#include "ui/property.h"
#include "ui/rect.h"
#include "ui/register_message.h"
#include "ui/save_layout_event.h"
#include "ui/scroll_bar.h"
#include "ui/separator.h"

View File

@ -60,16 +60,16 @@ bool IntEntry::onProcessMessage(Message* msg)
// When the mouse enter in this entry, it got the focus and the
// text is automatically selected.
case JM_MOUSEENTER:
case kMouseEnterMessage:
requestFocus();
selectText(0, -1);
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
openPopup();
break;
case JM_WHEEL:
case kMouseWheelMessage:
if (isEnabled()) {
int oldValue = getValue();
int newValue = oldValue + jmouse_z(0) - jmouse_z(1);

View File

@ -36,7 +36,7 @@ bool LinkLabel::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETCURSOR:
case kSetCursorMessage:
// TODO theme stuff
if (isEnabled()) {
jmouse_set_cursor(kHandCursor);
@ -44,14 +44,14 @@ bool LinkLabel::onProcessMessage(Message* msg)
}
break;
case JM_MOUSEENTER:
case JM_MOUSELEAVE:
case kMouseEnterMessage:
case kMouseLeaveMessage:
// TODO theme stuff
if (isEnabled())
invalidate();
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (isEnabled()) {
if (!m_url.empty())
Launcher::openUrl(m_url);

View File

@ -124,22 +124,22 @@ bool ListBox::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
layoutListBox(&msg->setpos.rect);
return true;
case JM_DRAW:
case kPaintMessage:
this->getTheme()->draw_listbox(this, &msg->draw.rect);
return true;
case JM_OPEN:
case kOpenMessage:
centerScroll();
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
captureMouse();
case JM_MOTION:
case kMouseMoveMessage:
if (hasCapture()) {
int select = getSelectedIndex();
View* view = View::getView(this);
@ -181,11 +181,11 @@ bool ListBox::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
releaseMouse();
break;
case JM_WHEEL: {
case kMouseWheelMessage: {
View* view = View::getView(this);
if (view) {
gfx::Point scroll = view->getViewScroll();
@ -195,7 +195,7 @@ bool ListBox::onProcessMessage(Message* msg)
break;
}
case JM_KEYPRESSED:
case kKeyDownMessage:
if (hasFocus() && !getChildren().empty()) {
int select = getSelectedIndex();
View* view = View::getView(this);
@ -251,7 +251,7 @@ bool ListBox::onProcessMessage(Message* msg)
}
break;
case JM_DOUBLECLICK:
case kDoubleClickMessage:
onDoubleClickItem();
return true;
}

View File

@ -29,7 +29,7 @@ bool ListItem::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS: {
case kResizeMessage: {
JRect crect;
jrect_copy(this->rc, &msg->setpos.rect);
@ -42,7 +42,7 @@ bool ListItem::onProcessMessage(Message* msg)
return true;
}
case JM_DRAW:
case kPaintMessage:
this->getTheme()->draw_listitem(this, &msg->draw.rect);
return true;
}

View File

@ -44,7 +44,7 @@ enum {
STAGE_CLOSE_ALL,
};
#define NFILTERS (JM_REGISTERED_MESSAGES+1)
static const int NFILTERS = (int)(kFirstRegisteredMessage+1);
struct Filter
{
@ -269,7 +269,7 @@ bool Manager::generateMessages()
dst = mouse_widget;
// Send the mouse movement message
msg = newMouseMessage(JM_MOTION, dst);
msg = newMouseMessage(kMouseMoveMessage, dst);
enqueueMessage(msg);
generateSetCursorMessage();
@ -278,7 +278,7 @@ bool Manager::generateMessages()
// Mouse wheel
if (jmouse_z(0) != jmouse_z(1)) {
msg = newMouseMessage(JM_WHEEL,
msg = newMouseMessage(kMouseWheelMessage,
capture_widget ? capture_widget:
mouse_widget);
enqueueMessage(msg);
@ -292,14 +292,14 @@ bool Manager::generateMessages()
((jmouse_b(1) & 2) == 0 && (jmouse_b(0) & 2) == 2) ||
((jmouse_b(1) & 4) == 0 && (jmouse_b(0) & 4) == 4);
msg = newMouseMessage(pressed ? JM_BUTTONPRESSED:
JM_BUTTONRELEASED,
msg = newMouseMessage(pressed ? kMouseDownMessage:
kMouseUpMessage,
capture_widget ? capture_widget:
mouse_widget);
//////////////////////////////////////////////////////////////////////
// Double Click
if (msg->type == JM_BUTTONPRESSED) {
if (msg->type == kMouseDownMessage) {
if (double_click_level != DOUBLE_CLICK_NONE) {
/* time out, back to NONE */
if (current_ticks - double_click_ticks > DOUBLE_CLICK_TIMEOUT_MSECS) {
@ -307,7 +307,7 @@ bool Manager::generateMessages()
}
else if (double_click_buttons == msg->mouse.flags) {
if (double_click_level == DOUBLE_CLICK_UP) {
msg->type = JM_DOUBLECLICK;
msg->type = kDoubleClickMessage;
}
else {
double_click_level = DOUBLE_CLICK_NONE;
@ -326,7 +326,7 @@ bool Manager::generateMessages()
double_click_ticks = current_ticks;
}
}
else if (msg->type == JM_BUTTONRELEASED) {
else if (msg->type == kMouseUpMessage) {
if (double_click_level != DOUBLE_CLICK_NONE) {
// Time out, back to NONE
if (current_ticks - double_click_ticks > DOUBLE_CLICK_TIMEOUT_MSECS) {
@ -347,7 +347,7 @@ bool Manager::generateMessages()
// Handle Z order: Send the window to top (only when you click in
// a window that aren't the desktop).
if (msg->type == JM_BUTTONPRESSED &&
if (msg->type == kMouseDownMessage &&
!capture_widget && mouse_widget) {
// The clicked window
Window* window = mouse_widget->getRoot();
@ -392,16 +392,16 @@ bool Manager::generateMessages()
if (want_close_stage == STAGE_WANT_CLOSE) {
want_close_stage = STAGE_NORMAL;
msg = jmessage_new(JM_CLOSE_APP);
msg = jmessage_new(kCloseAppMessage);
jmessage_broadcast_to_children(msg, this);
enqueueMessage(msg);
}
// Generate JM_CHAR/JM_KEYPRESSED messages.
// Generate kKeyDownMessage messages.
while (keypressed()) {
int readkey_value = readkey();
msg = jmessage_new_key_related(JM_KEYPRESSED, readkey_value);
msg = jmessage_new_key_related(kKeyDownMessage, readkey_value);
c = readkey_value >> 8;
if (c >= 0 && c < KEY_MAX) {
@ -415,11 +415,11 @@ bool Manager::generateMessages()
for (c=0; c<KEY_MAX; c++) {
if (old_readed_key[c] != key[c]) {
// Generate JM_KEYRELEASED messages (old key state is activated,
// Generate kKeyUpMessage messages (old key state is activated,
// the new one is deactivated).
if (old_readed_key[c]) {
// Press/release key interface
msg = jmessage_new_key_related(JM_KEYRELEASED,
msg = jmessage_new_key_related(kKeyUpMessage,
(c << 8) | scancode_to_ascii(c));
old_readed_key[c] = key[c];
key_repeated[c] = 0;
@ -427,10 +427,10 @@ bool Manager::generateMessages()
broadcastKeyMsg(msg);
enqueueMessage(msg);
}
/* generate JM_KEYPRESSED messages for modifiers */
/* generate kKeyDownMessage messages for modifiers */
else if (c >= KEY_MODIFIERS) {
/* press/release key interface */
msg = jmessage_new_key_related(JM_KEYPRESSED,
msg = jmessage_new_key_related(kKeyDownMessage,
(c << 8) | scancode_to_ascii(c));
old_readed_key[c] = key[c];
msg->key.repeat = key_repeated[c]++;
@ -456,7 +456,7 @@ bool Manager::generateMessages()
void Manager::dispatchMessages()
{
// Add the "Queue Processing" message for the manager.
Message* msg = newMouseMessage(JM_QUEUEPROCESSING, this);
Message* msg = newMouseMessage(kQueueProcessingMessage, this);
enqueueMessage(msg);
pumpQueue();
@ -480,8 +480,8 @@ void Manager::enqueueMessage(Message* msg)
// Check if this message must be filtered by some widget before
c = msg->type;
if (c >= JM_REGISTERED_MESSAGES)
c = JM_REGISTERED_MESSAGES;
if (c >= kFirstRegisteredMessage)
c = kFirstRegisteredMessage;
if (!msg_filters[c].empty()) { // OK, so are filters to add...
// Add all the filters in the destination list of the message
@ -550,7 +550,7 @@ void Manager::setFocus(Widget* widget)
if (focus_widget) {
WidgetsList focus_parents;
focus_widget->getParents(true, focus_parents);
msg = jmessage_new(JM_FOCUSLEAVE);
msg = jmessage_new(kFocusLeaveMessage);
UI_FOREACH_WIDGET(focus_parents, it) {
if (widget) {
@ -588,7 +588,7 @@ void Manager::setFocus(Widget* widget)
else
it = widget_parents.begin();
msg = jmessage_new(JM_FOCUSENTER);
msg = jmessage_new(kFocusEnterMessage);
for (; it != widget_parents.end(); ++it) {
Widget* w = *it;
@ -619,7 +619,7 @@ void Manager::setMouse(Widget* widget)
if (mouse_widget) {
WidgetsList mouse_parents;
mouse_widget->getParents(true, mouse_parents);
msg = jmessage_new(JM_MOUSELEAVE);
msg = jmessage_new(kMouseLeaveMessage);
UI_FOREACH_WIDGET(mouse_parents, it) {
if (widget) {
@ -657,7 +657,7 @@ void Manager::setMouse(Widget* widget)
else
it = widget_parents.begin();
msg = jmessage_new(JM_MOUSEENTER);
msg = jmessage_new(kMouseEnterMessage);
for (; it != widget_parents.end(); ++it) {
(*it)->flags |= JI_HASMOUSE;
@ -748,7 +748,7 @@ void Manager::removeMessagesForTimer(Timer* timer)
for (Messages::iterator it=msg_queue.begin(); it != msg_queue.end(); ) {
Message* message = *it;
if (!message->any.used &&
message->any.type == JM_TIMER &&
message->any.type == kTimerMessage &&
message->timer.timer == timer) {
jmessage_free(message);
it = msg_queue.erase(it);
@ -761,8 +761,8 @@ void Manager::removeMessagesForTimer(Timer* timer)
void Manager::addMessageFilter(int message, Widget* widget)
{
int c = message;
if (c >= JM_REGISTERED_MESSAGES)
c = JM_REGISTERED_MESSAGES;
if (c >= kFirstRegisteredMessage)
c = kFirstRegisteredMessage;
msg_filters[c].push_back(new Filter(message, widget));
}
@ -770,8 +770,8 @@ void Manager::addMessageFilter(int message, Widget* widget)
void Manager::removeMessageFilter(int message, Widget* widget)
{
int c = message;
if (c >= JM_REGISTERED_MESSAGES)
c = JM_REGISTERED_MESSAGES;
if (c >= kFirstRegisteredMessage)
c = kFirstRegisteredMessage;
for (Filters::iterator it=msg_filters[c].begin(); it != msg_filters[c].end(); ) {
Filter* filter = *it;
@ -813,7 +813,7 @@ void Manager::_openWindow(Window* window)
insertChild(0, window);
// Broadcast the open message.
Message* msg = jmessage_new(JM_OPEN);
Message* msg = jmessage_new(kOpenMessage);
jmessage_add_dest(msg, window);
enqueueMessage(msg);
@ -862,7 +862,7 @@ void Manager::_closeWindow(Window* window, bool redraw_background)
window->setVisible(false);
// Close message.
msg = jmessage_new(JM_CLOSE);
msg = jmessage_new(kCloseMessage);
jmessage_add_dest(msg, window);
enqueueMessage(msg);
@ -883,12 +883,12 @@ bool Manager::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
layoutManager(&msg->setpos.rect);
return true;
case JM_KEYPRESSED:
case JM_KEYRELEASED: {
case kKeyDownMessage:
case kKeyUpMessage: {
msg->key.propagate_to_children = true;
msg->key.propagate_to_parent = false;
@ -908,7 +908,7 @@ bool Manager::onProcessMessage(Message* msg)
}
// Check the focus movement.
if (msg->type == JM_KEYPRESSED)
if (msg->type == kKeyDownMessage)
move_focus(this, msg);
return true;
@ -1014,7 +1014,7 @@ void Manager::pumpQueue()
Message* first_msg = msg;
// Call Timer::tick() if this is a tick message.
if (msg->type == JM_TIMER) {
if (msg->type == kTimerMessage) {
ASSERT(msg->timer.timer != NULL);
msg->timer.timer->tick();
}
@ -1028,33 +1028,33 @@ void Manager::pumpQueue()
#ifdef REPORT_EVENTS
{
static char *msg_name[] = {
"JM_OPEN",
"JM_CLOSE",
"JM_CLOSE_APP",
"JM_DRAW",
"JM_TIMER",
"JM_SETPOS",
"JM_WINMOVE",
"JM_QUEUEPROCESSING",
"kOpenMessage",
"kCloseMessage",
"kCloseAppMessage",
"kPaintMessage",
"kTimerMessage",
"kResizeMessage",
"kWinMoveMessage",
"kQueueProcessingMessage",
"JM_KEYPRESSED",
"JM_KEYRELEASED",
"JM_FOCUSENTER",
"JM_FOCUSLEAVE",
"kKeyDownMessage",
"kKeyUpMessage",
"kFocusEnterMessage",
"kFocusLeaveMessage",
"JM_BUTTONPRESSED",
"JM_BUTTONRELEASED",
"JM_DOUBLECLICK",
"JM_MOUSEENTER",
"JM_MOUSELEAVE",
"JM_MOTION",
"JM_SETCURSOR",
"JM_WHEEL",
"kMouseDownMessage",
"kMouseUpMessage",
"kDoubleClickMessage",
"kMouseEnterMessage",
"kMouseLeaveMessage",
"kMouseMoveMessage",
"kSetCursorMessage",
"kMouseWheelMessage",
};
const char *string =
(msg->type >= JM_OPEN &&
msg->type <= JM_WHEEL) ? msg_name[msg->type]:
"Unknown";
(msg->type >= kOpenMessage &&
msg->type <= kMouseWheelMessage) ? msg_name[msg->type]:
"Unknown";
printf("Event #%d: %s (%d)\n", msg->type, string, widget->id);
fflush(stdout);
@ -1062,7 +1062,7 @@ void Manager::pumpQueue()
#endif
/* draw message? */
if (msg->type == JM_DRAW) {
if (msg->type == kPaintMessage) {
/* hidden? */
if (widget->flags & JI_HIDDEN)
continue;
@ -1089,7 +1089,7 @@ void Manager::pumpQueue()
done = widget->sendMessage(msg);
/* restore clip */
if (msg->type == JM_DRAW) {
if (msg->type == kPaintMessage) {
set_clip_rect(ji_screen, 0, 0, JI_SCREEN_W-1, JI_SCREEN_H-1);
release_bitmap(ji_screen);
@ -1174,7 +1174,7 @@ void Manager::generateSetCursorMessage()
dst = mouse_widget;
if (dst) {
msg = newMouseMessage(JM_SETCURSOR, dst);
msg = newMouseMessage(kSetCursorMessage, dst);
enqueueMessage(msg);
}
else
@ -1222,7 +1222,7 @@ Widget* Manager::findMagneticWidget(Widget* widget)
}
// static
Message* Manager::newMouseMessage(int type, Widget* widget)
Message* Manager::newMouseMessage(MessageType type, Widget* widget)
{
Message* msg = jmessage_new(type);
if (!msg)
@ -1230,8 +1230,8 @@ Message* Manager::newMouseMessage(int type, Widget* widget)
msg->mouse.x = jmouse_x(0);
msg->mouse.y = jmouse_y(0);
msg->mouse.flags = (type == JM_BUTTONRELEASED ? jmouse_b(1):
jmouse_b(0));
msg->mouse.flags = (type == kMouseUpMessage ? jmouse_b(1):
jmouse_b(0));
msg->mouse.left = ((jmouse_b(0) & 1) != (jmouse_b(1) & 1));
msg->mouse.right = ((jmouse_b(0) & 2) != (jmouse_b(1) & 2));
msg->mouse.middle = ((jmouse_b(0) & 4) != (jmouse_b(1) & 4));

View File

@ -8,6 +8,7 @@
#define UI_MANAGER_H_INCLUDED
#include "base/compiler_specific.h"
#include "ui/message_type.h"
#include "ui/widget.h"
namespace she { class Display; }
@ -85,7 +86,7 @@ namespace ui {
static void removeWidgetFromDests(Widget* widget, Message* msg);
static bool someParentIsFocusStop(Widget* widget);
static Widget* findMagneticWidget(Widget* widget);
static Message* newMouseMessage(int type, Widget* destination);
static Message* newMouseMessage(MessageType type, Widget* destination);
void broadcastKeyMsg(Message* msg);
static Manager* m_defaultManager;

View File

@ -23,28 +23,23 @@ namespace ui {
//////////////////////////////////////////////////////////////////////
// Internal messages: to move between menus
JM_MESSAGE(open_menuitem);
JM_MESSAGE(close_menuitem);
JM_MESSAGE(close_popup);
JM_MESSAGE(exe_menuitem);
// Extra fields for the JM_OPEN_MENUITEM message:
// Extra fields for the kOpenMenuItemMessage message:
// bool select_first = msg->user.a;
// If this value is true, it means that after opening the menu, we
// have to select the first item (i.e. highlighting it).
#define JM_OPEN_MENUITEM jm_open_menuitem()
RegisterMessage kOpenMenuItemMessage;
// Extra fields for the JM_CLOSE_MENUITEM message:
// Extra fields for the kCloseMenuItemMessage message:
// bool last_of_close_chain = msg->user.a;
// This fields is used to indicate the end of a sequence of
// JM_OPEN_MENU and JM_CLOSE_MENUITEM messages. If it is true
// kOpenMenuItemMessage and kCloseMenuItemMessage messages. If it is true
// the message is the last one of the chain, which means that no
// more JM_OPEN_MENU or JM_CLOSE_MENUITEM messages are in the queue.
#define JM_CLOSE_MENUITEM jm_close_menuitem()
// more kOpenMenuItemMessage or kCloseMenuItemMessage messages are in the queue.
RegisterMessage kCloseMenuItemMessage;
#define JM_CLOSE_POPUP jm_close_popup()
RegisterMessage kClosePopupMessage;
#define JM_EXE_MENUITEM jm_exe_menuitem()
RegisterMessage kExecuteMenuItemMessage;
// Data for the main jmenubar or the first popuped-jmenubox
struct MenuBaseData
@ -52,12 +47,12 @@ struct MenuBaseData
// True when the menu-items must be opened with the cursor movement
bool was_clicked : 1;
// True when there's JM_OPEN/CLOSE_MENUITEM messages in queue, to
// True when there's kOpen/CloseMenuItemMessage messages in queue, to
// avoid start processing another menuitem-request when we're
// already working in one
bool is_processing : 1;
// True when the JM_BUTTONPRESSED is being filtered
// True when the kMouseDownMessage is being filtered
bool is_filtering : 1;
bool close_all : 1;
@ -88,7 +83,7 @@ protected:
{
switch (msg->type) {
case JM_CLOSE:
case kCloseMessage:
// Delete this window automatically
deferDelete();
break;
@ -140,7 +135,7 @@ MenuBox::~MenuBox()
{
if (m_base && m_base->is_filtering) {
m_base->is_filtering = false;
Manager::getDefault()->removeMessageFilter(JM_BUTTONPRESSED, this);
Manager::getDefault()->removeMessageFilter(kMouseDownMessage, this);
}
delete m_base;
@ -264,7 +259,7 @@ void Menu::showPopup(int x, int y)
MenuBaseData* base = menubox->createBase();
base->was_clicked = true;
base->is_filtering = true;
Manager::getDefault()->addMessageFilter(JM_BUTTONPRESSED, menubox);
Manager::getDefault()->addMessageFilter(kMouseDownMessage, menubox);
window->setMoveable(false); // Can't move the window
@ -299,11 +294,11 @@ bool Menu::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
set_position(&msg->setpos.rect);
return true;
case JM_DRAW:
case kPaintMessage:
getTheme()->draw_menu(this, &msg->draw.rect);
return true;
@ -372,18 +367,18 @@ bool MenuBox::onProcessMessage(Message* msg)
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
set_position(&msg->setpos.rect);
return true;
case JM_MOTION:
case kMouseMoveMessage:
/* isn't pressing a button? */
if (!msg->mouse.flags && !get_base(this)->was_clicked)
break;
// Fall though
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (menu) {
if (get_base(this)->is_processing)
break;
@ -391,7 +386,7 @@ bool MenuBox::onProcessMessage(Message* msg)
// Here we catch the filtered messages (menu-bar or the
// popuped menu-box) to detect if the user press outside of
// the widget
if (msg->type == JM_BUTTONPRESSED && m_base != NULL) {
if (msg->type == kMouseDownMessage && m_base != NULL) {
Widget* picked = getManager()->pick(msg->mouse.x, msg->mouse.y);
// If one of these conditions are accomplished we have to
@ -425,14 +420,14 @@ bool MenuBox::onProcessMessage(Message* msg)
// open the submenu only if the user does click
bool open_submenu =
(this->type == kMenuBarWidget) ||
(msg->type == JM_BUTTONPRESSED);
(msg->type == kMouseDownMessage);
menu->highlightItem(static_cast<MenuItem*>(picked), false, open_submenu, false);
}
// If the user pressed in a highlighted menu-item (maybe
// the user was waiting for the timer to open the
// submenu...)
else if (msg->type == JM_BUTTONPRESSED &&
else if (msg->type == kMouseDownMessage &&
static_cast<MenuItem*>(picked)->hasSubmenu()) {
static_cast<MenuItem*>(picked)->stopTimer();
@ -448,7 +443,7 @@ bool MenuBox::onProcessMessage(Message* msg)
}
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
if (menu) {
if (get_base(this)->is_processing)
break;
@ -459,7 +454,7 @@ bool MenuBox::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (menu) {
if (get_base(this)->is_processing)
break;
@ -475,7 +470,7 @@ bool MenuBox::onProcessMessage(Message* msg)
}
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (menu) {
MenuItem* selected;
@ -652,7 +647,7 @@ bool MenuBox::onProcessMessage(Message* msg)
break;
default:
if (msg->type == JM_CLOSE_POPUP) {
if (msg->type == kClosePopupMessage) {
this->getManager()->_closeWindow(this->getRoot(), true);
}
break;
@ -687,11 +682,11 @@ bool MenuItem::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW:
case kPaintMessage:
getTheme()->draw_menuitem(this, &msg->draw.rect);
return true;
case JM_MOUSEENTER:
case kMouseEnterMessage:
// TODO theme specific!!
invalidate();
@ -702,7 +697,7 @@ bool MenuItem::onProcessMessage(Message* msg)
}
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
// TODO theme specific!!
invalidate();
@ -712,7 +707,7 @@ bool MenuItem::onProcessMessage(Message* msg)
break;
default:
if (msg->type == JM_OPEN_MENUITEM) {
if (msg->type == kOpenMenuItemMessage) {
MenuBaseData* base = get_base(this);
JRect pos;
bool select_first = msg->user.a ? true: false;
@ -810,7 +805,7 @@ bool MenuItem::onProcessMessage(Message* msg)
jrect_free(old_pos);
return true;
}
else if (msg->type == JM_CLOSE_MENUITEM) {
else if (msg->type == kCloseMenuItemMessage) {
MenuBaseData* base = get_base(this);
Window* window;
bool last_of_close_chain = (msg->user.a ? true: false);
@ -851,13 +846,13 @@ bool MenuItem::onProcessMessage(Message* msg)
stopTimer();
return true;
}
else if (msg->type == JM_EXE_MENUITEM) {
else if (msg->type == kExecuteMenuItemMessage) {
onClick();
return true;
}
break;
case JM_TIMER:
case kTimerMessage:
if (msg->timer.timer == m_submenu_timer.get()) {
MenuBaseData* base = get_base(this);
@ -1043,7 +1038,7 @@ void MenuItem::openSubmenu(bool select_first)
}
}
msg = jmessage_new(JM_OPEN_MENUITEM);
msg = jmessage_new(kOpenMenuItemMessage);
msg->user.a = select_first;
jmessage_add_dest(msg, this);
Manager::getDefault()->enqueueMessage(msg);
@ -1057,13 +1052,13 @@ void MenuItem::openSubmenu(bool select_first)
base->close_all = false;
base->is_processing = true;
// We need to add a filter of the JM_BUTTONPRESSED to intercept
// We need to add a filter of the kMouseDownMessage to intercept
// clicks outside the menu (and close all the hierarchy in that
// case); the widget to intercept messages is the base menu-bar or
// popuped menu-box
if (!base->is_filtering) {
base->is_filtering = true;
Manager::getDefault()->addMessageFilter(JM_BUTTONPRESSED, get_base_menubox(this));
Manager::getDefault()->addMessageFilter(kMouseDownMessage, get_base_menubox(this));
}
}
@ -1089,7 +1084,7 @@ void MenuItem::closeSubmenu(bool last_of_close_chain)
}
// Second: now we can close the 'menuitem'
msg = jmessage_new(JM_CLOSE_MENUITEM);
msg = jmessage_new(kCloseMenuItemMessage);
msg->user.a = last_of_close_chain;
jmessage_add_dest(msg, this);
Manager::getDefault()->enqueueMessage(msg);
@ -1137,7 +1132,7 @@ void Menu::closeAll()
base->was_clicked = false;
if (base->is_filtering) {
base->is_filtering = false;
Manager::getDefault()->removeMessageFilter(JM_BUTTONPRESSED, base_menubox);
Manager::getDefault()->removeMessageFilter(kMouseDownMessage, base_menubox);
}
menu->unhighlightItem();
@ -1165,7 +1160,7 @@ void Menu::closeAll()
void MenuBox::closePopup()
{
Message* msg = jmessage_new(JM_CLOSE_POPUP);
Message* msg = jmessage_new(kClosePopupMessage);
jmessage_add_dest(msg, this);
Manager::getDefault()->enqueueMessage(msg);
}
@ -1189,7 +1184,7 @@ void MenuBox::cancelMenuLoop()
void MenuItem::executeClick()
{
// Send the message
Message* msg = jmessage_new(JM_EXE_MENUITEM);
Message* msg = jmessage_new(kExecuteMenuItemMessage);
jmessage_add_dest(msg, this);
Manager::getDefault()->enqueueMessage(msg);
}

View File

@ -10,6 +10,7 @@
#include "base/compiler_specific.h"
#include "base/signal.h"
#include "base/unique_ptr.h"
#include "ui/register_message.h"
#include "ui/widget.h"
namespace ui {
@ -145,10 +146,10 @@ namespace ui {
friend class MenuBox;
};
int jm_open_menuitem();
int jm_close_menuitem();
int jm_close_popup();
int jm_exe_menuitem();
extern RegisterMessage kOpenMenuItemMessage;
extern RegisterMessage kCloseMenuItemMessage;
extern RegisterMessage kClosePopupMessage;
extern RegisterMessage kExecuteMenuItemMessage;
} // namespace ui

View File

@ -6,25 +6,19 @@
#include "config.h"
#include <allegro/keyboard.h>
#include <string.h>
#include "ui/message.h"
#include "base/memory.h"
#include "ui/manager.h"
#include "ui/message.h"
#include "ui/rect.h"
#include "ui/widget.h"
#include <allegro/keyboard.h>
#include <string.h>
namespace ui {
static int registered_messages = JM_REGISTERED_MESSAGES;
int ji_register_message_type()
{
return registered_messages++;
}
Message* jmessage_new(int type)
Message* jmessage_new(MessageType type)
{
Message* msg = new Message;
@ -47,7 +41,7 @@ Message* jmessage_new(int type)
return msg;
}
Message* jmessage_new_key_related(int type, int readkey_value)
Message* jmessage_new_key_related(MessageType type, int readkey_value)
{
Message* msg = jmessage_new(type);
@ -58,8 +52,8 @@ Message* jmessage_new_key_related(int type, int readkey_value)
msg->key.propagate_to_parent = true;
#if 0
printf("%s: %i %i [%c]\n", type == JM_KEYPRESSED ? "JM_KEYPRESSED":
"JM_KEYRELEASED",
printf("%s: %i %i [%c]\n", type == kKeyDownMessage ? "kKeyDownMessage":
"kKeyUpMessage",
msg->key.scancode, msg->key.ascii, msg->key.ascii);
fflush(stdout);
#endif

View File

@ -8,6 +8,7 @@
#define UI_MESSAGE_H_INCLUDED
#include "ui/base.h"
#include "ui/message_type.h"
#include "ui/rect.h"
#include "ui/widgets_list.h"
@ -16,19 +17,9 @@ namespace ui {
class Timer;
class Widget;
/* TODO add mutexes */
#define JM_MESSAGE(name) \
static int _jm_##name = 0; \
int jm_##name() \
{ \
if (!_jm_##name) \
_jm_##name = ji_register_message_type(); \
return _jm_##name; \
} \
struct MessageAny
{
int type; // Type of message
MessageType type; // Type of message
WidgetsList* widgets; // Destination widgets
bool used : 1; // Was used
int shifts; // Key shifts pressed when message was created
@ -83,7 +74,7 @@ namespace ui {
union Message
{
int type;
MessageType type;
MessageAny any;
MessageKey key;
MessageDraw draw;
@ -93,10 +84,8 @@ namespace ui {
MessageUser user;
};
int ji_register_message_type();
Message* jmessage_new(int type);
Message* jmessage_new_key_related(int type, int readkey_value);
Message* jmessage_new(MessageType type);
Message* jmessage_new_key_related(MessageType type, int readkey_value);
Message* jmessage_new_copy(const Message* msg);
Message* jmessage_new_copy_without_dests(const Message* msg);
void jmessage_free(Message* msg);

51
src/ui/message_type.h Normal file
View File

@ -0,0 +1,51 @@
// ASEPRITE gui library
// Copyright (C) 2001-2013 David Capello
//
// This source file is distributed under a BSD-like license, please
// read LICENSE.txt for more information.
#ifndef UI_MESSAGE_TYPE_H_INCLUDED
#define UI_MESSAGE_TYPE_H_INCLUDED
namespace ui {
// Message types.
enum MessageType {
// General messages.
kOpenMessage, // Windows is open.
kCloseMessage, // Windows is closed.
kCloseAppMessage, // The user wants to close the entire application.
kPaintMessage, // Widget needs be repainted.
kTimerMessage, // A timer timeout.
kResizeMessage, // Set position.
kWinMoveMessage, // Window movement.
kQueueProcessingMessage, // Only sent to manager which indicate
// the last message in the queue.
// Keyboard related messages.
kKeyDownMessage, // When a any key is pressed.
kKeyUpMessage, // When a any key is released.
kFocusEnterMessage, // Widget gets the focus.
kFocusLeaveMessage, // Widget losts the focus.
// Mouse related messages.
kMouseDownMessage, // User makes click inside a widget.
kMouseUpMessage, // User releases mouse button in a widget.
kDoubleClickMessage, // User makes double click in some widget.
kMouseEnterMessage, // A widget gets mouse pointer.
kMouseLeaveMessage, // A widget losts mouse pointer.
kMouseMoveMessage, // User moves the mouse on some widget.
kSetCursorMessage, // A widget needs to setup the mouse cursor.
kMouseWheelMessage, // User moves the wheel.
// TODO Drag'n'drop messages...
// k...DndMessage
// User widgets.
kFirstRegisteredMessage,
kLastRegisteredMessage = 0x7fffffff
};
} // namespace ui
#endif // UI_MESSAGE_TYPE_H_INCLUDED

View File

@ -68,16 +68,16 @@ bool PopupWindow::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_CLOSE:
case kCloseMessage:
stopFilteringMessages();
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
if (m_hotRegion.isEmpty() && !isMoveable())
closeWindow(NULL);
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (m_filtering) {
if (msg->key.scancode == KEY_ESC ||
msg->key.scancode == KEY_ENTER ||
@ -93,7 +93,7 @@ bool PopupWindow::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
// If the user click outside the window, we have to close the
// tooltip window.
if (m_filtering) {
@ -108,7 +108,7 @@ bool PopupWindow::onProcessMessage(Message* msg)
closeWindow(NULL);
break;
case JM_MOTION:
case kMouseMoveMessage:
if (!isMoveable() &&
!m_hotRegion.isEmpty() &&
getManager()->getCapture() == NULL) {
@ -179,9 +179,9 @@ void PopupWindow::startFilteringMessages()
m_filtering = true;
Manager* manager = Manager::getDefault();
manager->addMessageFilter(JM_MOTION, this);
manager->addMessageFilter(JM_BUTTONPRESSED, this);
manager->addMessageFilter(JM_KEYPRESSED, this);
manager->addMessageFilter(kMouseMoveMessage, this);
manager->addMessageFilter(kMouseDownMessage, this);
manager->addMessageFilter(kKeyDownMessage, this);
}
}
@ -191,9 +191,9 @@ void PopupWindow::stopFilteringMessages()
m_filtering = false;
Manager* manager = Manager::getDefault();
manager->removeMessageFilter(JM_MOTION, this);
manager->removeMessageFilter(JM_BUTTONPRESSED, this);
manager->removeMessageFilter(JM_KEYPRESSED, this);
manager->removeMessageFilter(kMouseMoveMessage, this);
manager->removeMessageFilter(kMouseDownMessage, this);
manager->removeMessageFilter(kKeyDownMessage, this);
}
}

View File

@ -0,0 +1,20 @@
// ASEPRITE gui library
// Copyright (C) 2001-2013 David Capello
//
// This source file is distributed under a BSD-like license, please
// read LICENSE.txt for more information.
#include "config.h"
#include "ui/register_message.h"
namespace ui {
static int registered_messages = (int)kFirstRegisteredMessage;
RegisterMessage::RegisterMessage()
{
m_type = (MessageType)registered_messages++;
}
} // namespace ui

25
src/ui/register_message.h Normal file
View File

@ -0,0 +1,25 @@
// ASEPRITE gui library
// Copyright (C) 2001-2013 David Capello
//
// This source file is distributed under a BSD-like license, please
// read LICENSE.txt for more information.
#ifndef UI_REGISTER_MESSAGE_H_INCLUDED
#define UI_REGISTER_MESSAGE_H_INCLUDED
#include "ui/message_type.h"
namespace ui {
class RegisterMessage
{
public:
RegisterMessage();
operator MessageType() { return m_type; }
private:
MessageType m_type;
};
} // namespace ui
#endif

View File

@ -53,7 +53,7 @@ bool ScrollBar::onProcessMessage(Message* msg)
switch (msg->type) {
case JM_BUTTONPRESSED: {
case kMouseDownMessage: {
View* view = static_cast<View*>(getParent());
int x1, y1, x2, y2;
int u1, v1, u2, v2;
@ -120,10 +120,10 @@ bool ScrollBar::onProcessMessage(Message* msg)
setSelected(true);
captureMouse();
// continue to JM_MOTION handler...
// continue to kMouseMoveMessage handler...
}
case JM_MOTION:
case kMouseMoveMessage:
if (hasCapture()) {
View* view = static_cast<View*>(getParent());
int pos, len, bar_size, viewport_size;
@ -153,13 +153,13 @@ bool ScrollBar::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
setSelected(false);
releaseMouse();
break;
case JM_MOUSEENTER:
case JM_MOUSELEAVE:
case kMouseEnterMessage:
case kMouseLeaveMessage:
// TODO add something to avoid this (theme specific stuff)
invalidate();
break;

View File

@ -29,7 +29,7 @@ bool Separator::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW:
case kPaintMessage:
getTheme()->draw_separator(this, &msg->draw.rect);
return true;
}

View File

@ -67,13 +67,13 @@ bool Slider::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_FOCUSENTER:
case JM_FOCUSLEAVE:
case kFocusEnterMessage:
case kFocusLeaveMessage:
if (isEnabled())
invalidate();
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (!isEnabled())
return true;
@ -86,9 +86,9 @@ bool Slider::onProcessMessage(Message* msg)
setupSliderCursor();
/* continue to JM_MOTION */
/* continue to kMouseMoveMessage */
case JM_MOTION:
case kMouseMoveMessage:
if (hasCapture()) {
int value, accuracy, range;
JRect rc = jwidget_get_child_rect(this);
@ -137,7 +137,7 @@ bool Slider::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
setSelected(false);
releaseMouse();
@ -147,8 +147,8 @@ bool Slider::onProcessMessage(Message* msg)
}
break;
case JM_MOUSEENTER:
case JM_MOUSELEAVE:
case kMouseEnterMessage:
case kMouseLeaveMessage:
/* if (jwidget_is_enabled(widget) && */
/* jwidget_has_capture(widget)) { */
/* /\* swap the select status *\/ */
@ -165,7 +165,7 @@ bool Slider::onProcessMessage(Message* msg)
invalidate();
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (hasFocus()) {
int min = m_min;
int max = m_max;
@ -191,7 +191,7 @@ bool Slider::onProcessMessage(Message* msg)
}
break;
case JM_WHEEL:
case kMouseWheelMessage:
if (isEnabled()) {
int value = m_value + jmouse_z(0) - jmouse_z(1);
@ -205,7 +205,7 @@ bool Slider::onProcessMessage(Message* msg)
}
break;
case JM_SETCURSOR:
case kSetCursorMessage:
setupSliderCursor();
return true;
}

View File

@ -49,11 +49,11 @@ bool Splitter::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
layoutMembers(&msg->setpos.rect);
return true;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (isEnabled()) {
Widget* c1, *c2;
int x1, y1, x2, y2;
@ -96,7 +96,7 @@ bool Splitter::onProcessMessage(Message* msg)
else
break;
case JM_MOTION:
case kMouseMoveMessage:
if (this->hasCapture()) {
if (this->getAlign() & JI_HORIZONTAL) {
switch (m_type) {
@ -127,14 +127,14 @@ bool Splitter::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
return true;
}
break;
case JM_SETCURSOR:
case kSetCursorMessage:
if (isEnabled()) {
Widget* c1, *c2;
int x1, y1, x2, y2;

View File

@ -33,11 +33,11 @@ bool TextBox::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW:
case kPaintMessage:
getTheme()->draw_textbox(this, &msg->draw.rect);
return true;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (hasFocus()) {
View* view = View::getView(this);
if (view) {
@ -95,7 +95,7 @@ bool TextBox::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONPRESSED: {
case kMouseDownMessage: {
View* view = View::getView(this);
if (view) {
captureMouse();
@ -105,7 +105,7 @@ bool TextBox::onProcessMessage(Message* msg)
break;
}
case JM_MOTION: {
case kMouseMoveMessage: {
View* view = View::getView(this);
if (view && hasCapture()) {
gfx::Rect vp = view->getViewportBounds();
@ -121,7 +121,7 @@ bool TextBox::onProcessMessage(Message* msg)
break;
}
case JM_BUTTONRELEASED: {
case kMouseUpMessage: {
View* view = View::getView(this);
if (view && hasCapture()) {
releaseMouse();
@ -131,7 +131,7 @@ bool TextBox::onProcessMessage(Message* msg)
break;
}
case JM_WHEEL: {
case kMouseWheelMessage: {
View* view = View::getView(this);
if (view) {
gfx::Point scroll = view->getViewScroll();

View File

@ -98,7 +98,7 @@ void Timer::pollTimers()
if (count > 0) {
ASSERT(timer->m_owner != NULL);
Message* msg = jmessage_new(JM_TIMER);
Message* msg = jmessage_new(kTimerMessage);
msg->timer.count = count;
msg->timer.timer = timer;
jmessage_add_dest(msg, timer->m_owner);

View File

@ -27,10 +27,10 @@ TooltipManager::TooltipManager()
: Widget(kGenericWidget)
{
Manager* manager = Manager::getDefault();
manager->addMessageFilter(JM_MOUSEENTER, this);
manager->addMessageFilter(JM_KEYPRESSED, this);
manager->addMessageFilter(JM_BUTTONPRESSED, this);
manager->addMessageFilter(JM_MOUSELEAVE, this);
manager->addMessageFilter(kMouseEnterMessage, this);
manager->addMessageFilter(kKeyDownMessage, this);
manager->addMessageFilter(kMouseDownMessage, this);
manager->addMessageFilter(kMouseLeaveMessage, this);
setVisible(false);
}
@ -50,7 +50,7 @@ bool TooltipManager::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_MOUSEENTER: {
case kMouseEnterMessage: {
UI_FOREACH_WIDGET(*msg->any.widgets, itWidget) {
Tips::iterator it = m_tips.find(*itWidget);
if (it != m_tips.end()) {
@ -68,9 +68,9 @@ bool TooltipManager::onProcessMessage(Message* msg)
return false;
}
case JM_KEYPRESSED:
case JM_BUTTONPRESSED:
case JM_MOUSELEAVE:
case kKeyDownMessage:
case kMouseDownMessage:
case kMouseLeaveMessage:
if (m_tipWindow) {
m_tipWindow->closeWindow(NULL);
m_tipWindow.reset();
@ -170,9 +170,9 @@ TipWindow::~TipWindow()
{
if (m_filtering) {
m_filtering = false;
getManager()->removeMessageFilter(JM_MOTION, this);
getManager()->removeMessageFilter(JM_BUTTONPRESSED, this);
getManager()->removeMessageFilter(JM_KEYPRESSED, this);
getManager()->removeMessageFilter(kMouseMoveMessage, this);
getManager()->removeMessageFilter(kMouseDownMessage, this);
getManager()->removeMessageFilter(kKeyDownMessage, this);
}
}
@ -180,9 +180,9 @@ void TipWindow::setHotRegion(const Region& region)
{
if (!m_filtering) {
m_filtering = true;
getManager()->addMessageFilter(JM_MOTION, this);
getManager()->addMessageFilter(JM_BUTTONPRESSED, this);
getManager()->addMessageFilter(JM_KEYPRESSED, this);
getManager()->addMessageFilter(kMouseMoveMessage, this);
getManager()->addMessageFilter(kMouseDownMessage, this);
getManager()->addMessageFilter(kKeyDownMessage, this);
}
m_hotRegion = region;
@ -202,26 +202,26 @@ bool TipWindow::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_CLOSE:
case kCloseMessage:
if (m_filtering) {
m_filtering = false;
getManager()->removeMessageFilter(JM_MOTION, this);
getManager()->removeMessageFilter(JM_BUTTONPRESSED, this);
getManager()->removeMessageFilter(JM_KEYPRESSED, this);
getManager()->removeMessageFilter(kMouseMoveMessage, this);
getManager()->removeMessageFilter(kMouseDownMessage, this);
getManager()->removeMessageFilter(kKeyDownMessage, this);
}
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
if (m_hotRegion.isEmpty())
closeWindow(NULL);
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (m_filtering && msg->key.scancode < KEY_MODIFIERS)
this->closeWindow(NULL);
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
/* if the user click outside the window, we have to close the
tooltip window */
if (m_filtering) {
@ -237,7 +237,7 @@ bool TipWindow::onProcessMessage(Message* msg)
this->closeWindow(NULL);
break;
case JM_MOTION:
case kMouseMoveMessage:
if (!m_hotRegion.isEmpty() &&
getManager()->getCapture() == NULL) {
// If the mouse is outside the hot-region we have to close the window

View File

@ -239,13 +239,13 @@ bool View::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
jrect_copy(this->rc, &msg->setpos.rect);
updateView();
return true;
case JM_FOCUSENTER:
case JM_FOCUSLEAVE:
case kFocusEnterMessage:
case kFocusLeaveMessage:
// TODO This is theme specific stuff
// Redraw the borders each time the focus enters or leaves the view.
{

View File

@ -28,7 +28,7 @@ bool Viewport::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
set_position(&msg->setpos.rect);
return true;
}

View File

@ -888,7 +888,7 @@ void jwidget_set_rect(Widget* widget, JRect rect)
ASSERT_VALID_WIDGET(widget);
msg = jmessage_new(JM_SETPOS);
msg = jmessage_new(kResizeMessage);
jrect_copy(&msg->setpos.rect, rect);
widget->sendMessage(msg);
jmessage_free(msg);
@ -954,7 +954,7 @@ void Widget::flushRedraw()
const Rect& rc = *it;
// Create the draw message
msg = jmessage_new(JM_DRAW);
msg = jmessage_new(kPaintMessage);
msg->draw.count = nrects-1 - c;
msg->draw.rect.x1 = rc.x;
msg->draw.rect.y1 = rc.y;
@ -1025,7 +1025,7 @@ void Widget::scrollRegion(const Region& region, int dx, int dy)
mark_dirty_flag(this);
// Generate the JM_DRAW messages for the widget's m_updateRegion
// Generate the kPaintMessage messages for the widget's m_updateRegion
flushRedraw();
}
}
@ -1145,7 +1145,7 @@ void Widget::releaseFocus()
/**
* Captures the mouse to send all the future mouse messsages to the
* specified widget (included the JM_MOTION and JM_SETCURSOR).
* specified widget (included the kMouseMoveMessage and kSetCursorMessage).
*/
void Widget::captureMouse()
{
@ -1219,15 +1219,15 @@ bool Widget::onProcessMessage(Message* msg)
switch (msg->type) {
case JM_OPEN:
case JM_CLOSE:
case JM_WINMOVE:
case kOpenMessage:
case kCloseMessage:
case kWinMoveMessage:
// Broadcast the message to the children.
UI_FOREACH_WIDGET(getChildren(), it)
(*it)->sendMessage(msg);
break;
case JM_DRAW:
case kPaintMessage:
// With double-buffering we create a temporary bitmap to draw
// the widget on it and then we blit the final result to the
// real screen. Anyway, if ji_screen is not the real hardware
@ -1265,7 +1265,7 @@ bool Widget::onProcessMessage(Message* msg)
return ev.isPainted();
}
case JM_SETPOS: {
case kResizeMessage: {
jrect_copy(this->rc, &msg->setpos.rect);
JRect cpos = jwidget_get_child_rect(this);
@ -1277,8 +1277,8 @@ bool Widget::onProcessMessage(Message* msg)
return true;
}
case JM_KEYPRESSED:
case JM_KEYRELEASED:
case kKeyDownMessage:
case kKeyUpMessage:
if (msg->key.propagate_to_children) {
// Broadcast the message to the children.
UI_FOREACH_WIDGET(getChildren(), it)
@ -1291,18 +1291,18 @@ bool Widget::onProcessMessage(Message* msg)
else
break;
case JM_BUTTONPRESSED:
case JM_BUTTONRELEASED:
case JM_DOUBLECLICK:
case JM_MOTION:
case JM_WHEEL:
case kMouseDownMessage:
case kMouseUpMessage:
case kDoubleClickMessage:
case kMouseMoveMessage:
case kMouseWheelMessage:
// Propagate the message to the parent.
if (getParent() != NULL)
return getParent()->sendMessage(msg);
else
break;
case JM_SETCURSOR:
case kSetCursorMessage:
// Propagate the message to the parent.
if (getParent() != NULL)
return getParent()->sendMessage(msg);

View File

@ -276,19 +276,19 @@ bool Window::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
windowSetPosition(&msg->setpos.rect);
return true;
case JM_OPEN:
case kOpenMessage:
m_killer = NULL;
break;
case JM_CLOSE:
case kCloseMessage:
saveLayout();
break;
case JM_BUTTONPRESSED: {
case kMouseDownMessage: {
if (!m_isMoveable)
break;
@ -310,7 +310,7 @@ bool Window::onProcessMessage(Message* msg)
break;
}
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
jmouse_set_cursor(kArrowCursor);
@ -325,7 +325,7 @@ bool Window::onProcessMessage(Message* msg)
}
break;
case JM_MOTION:
case kMouseMoveMessage:
if (!m_isMoveable)
break;
@ -400,7 +400,7 @@ bool Window::onProcessMessage(Message* msg)
}
break;
case JM_SETCURSOR:
case kSetCursorMessage:
if (m_isMoveable) {
HitTest ht = hitTest(gfx::Point(msg->mouse.x, msg->mouse.y));
CursorType cursor = kArrowCursor;
@ -555,8 +555,8 @@ void Window::moveWindow(JRect rect, bool use_blit)
/* get the manager's current position */
man_pos = jwidget_get_rect(manager);
/* sent a JM_WINMOVE message to the window */
msg = jmessage_new(JM_WINMOVE);
/* sent a kWinMoveMessage message to the window */
msg = jmessage_new(kWinMoveMessage);
jmessage_add_dest(msg, this);
manager->enqueueMessage(msg);
@ -566,7 +566,7 @@ void Window::moveWindow(JRect rect, bool use_blit)
// If the size of the window changes...
if (jrect_w(old_pos) != jrect_w(rect) ||
jrect_h(old_pos) != jrect_h(rect)) {
// We have to change the whole positions sending JM_SETPOS
// We have to change the whole positions sending kResizeMessage
// messages...
windowSetPosition(rect);
}
@ -591,7 +591,7 @@ void Window::moveWindow(JRect rect, bool use_blit)
// In second place, we have to setup the window's refresh region...
// If "use_blit" isn't activated, we have to redraw the whole window
// (sending JM_DRAW messages) in the new drawable region
// (sending kPaintMessage messages) in the new drawable region
if (!use_blit) {
window_refresh_region = new_drawable_region;
}

View File

@ -54,7 +54,7 @@ bool ColorBar::ScrollableView::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW:
case kPaintMessage:
{
SkinTheme* theme = static_cast<SkinTheme*>(getTheme());
theme->draw_bounds_nw(ji_screen,

View File

@ -95,20 +95,20 @@ bool ColorButton::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_CLOSE:
case kCloseMessage:
if (m_window && m_window->isVisible())
m_window->closeWindow(NULL);
break;
case JM_MOUSEENTER:
case kMouseEnterMessage:
StatusBar::instance()->showColor(0, "", m_color, 255);
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
StatusBar::instance()->clearText();
break;
case JM_MOTION:
case kMouseMoveMessage:
if (hasCapture()) {
Widget* picked = getManager()->pick(msg->mouse.x, msg->mouse.y);
app::Color color = m_color;
@ -145,7 +145,7 @@ bool ColorButton::onProcessMessage(Message* msg)
}
break;
case JM_SETCURSOR:
case kSetCursorMessage:
if (hasCapture()) {
jmouse_set_cursor(kEyedropperCursor);
return true;

View File

@ -179,7 +179,7 @@ void DocumentView::onClonedFrom(WorkspaceView* from)
bool DocumentView::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_FOCUSENTER:
case kFocusEnterMessage:
m_editor->requestFocus();
break;
}

View File

@ -862,7 +862,7 @@ bool Editor::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW: {
case kPaintMessage: {
SkinTheme* theme = static_cast<SkinTheme*>(this->getTheme());
int old_cursor_thick = m_cursor_thick;
@ -928,7 +928,7 @@ bool Editor::onProcessMessage(Message* msg)
return true;
}
case JM_TIMER:
case kTimerMessage:
if (msg->timer.timer == &m_mask_timer) {
if (isVisible() && m_sprite) {
drawMaskSafe();
@ -945,30 +945,30 @@ bool Editor::onProcessMessage(Message* msg)
}
break;
case JM_MOUSEENTER:
case kMouseEnterMessage:
editor_update_quicktool();
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
hideDrawingCursor();
StatusBar::instance()->clearText();
break;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (m_sprite) {
EditorStatePtr holdState(m_state);
return m_state->onMouseDown(this, msg);
}
break;
case JM_MOTION:
case kMouseMoveMessage:
if (m_sprite) {
EditorStatePtr holdState(m_state);
return m_state->onMouseMove(this, msg);
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (m_sprite) {
EditorStatePtr holdState(m_state);
if (m_state->onMouseUp(this, msg))
@ -976,7 +976,7 @@ bool Editor::onProcessMessage(Message* msg)
}
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (m_sprite) {
EditorStatePtr holdState(m_state);
bool used = m_state->onKeyDown(this, msg);
@ -991,7 +991,7 @@ bool Editor::onProcessMessage(Message* msg)
}
break;
case JM_KEYRELEASED:
case kKeyUpMessage:
if (m_sprite) {
EditorStatePtr holdState(m_state);
bool used = m_state->onKeyUp(this, msg);
@ -1006,13 +1006,13 @@ bool Editor::onProcessMessage(Message* msg)
}
break;
case JM_FOCUSLEAVE:
case kFocusLeaveMessage:
// As we use keys like Space-bar as modifier, we can clear the
// keyboard buffer when we lost the focus.
clear_keybuf();
break;
case JM_WHEEL:
case kMouseWheelMessage:
if (m_sprite && hasMouse()) {
EditorStatePtr holdState(m_state);
if (m_state->onMouseWheel(this, msg))
@ -1020,7 +1020,7 @@ bool Editor::onProcessMessage(Message* msg)
}
break;
case JM_SETCURSOR:
case kSetCursorMessage:
editor_setcursor();
return true;
}

View File

@ -49,14 +49,14 @@ bool EditorView::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
// This avoid the displacement of the widgets in the viewport
jrect_copy(this->rc, &msg->setpos.rect);
updateView();
return true;
case JM_DRAW:
case kPaintMessage:
{
Widget* viewport = getViewport();
Widget* child = UI_FIRST_WIDGET(viewport->getChildren());

View File

@ -88,8 +88,8 @@ MovingPixelsState::MovingPixelsState(Editor* editor, Message* msg, PixelsMovemen
// Add the current editor as filter for key message of the manager
// so we can catch the Enter key, and avoid to execute the
// PlayAnimation command.
m_currentEditor->getManager()->addMessageFilter(JM_KEYPRESSED, m_currentEditor);
m_currentEditor->getManager()->addMessageFilter(JM_KEYRELEASED, m_currentEditor);
m_currentEditor->getManager()->addMessageFilter(kKeyDownMessage, m_currentEditor);
m_currentEditor->getManager()->addMessageFilter(kKeyUpMessage, m_currentEditor);
}
MovingPixelsState::~MovingPixelsState()
@ -99,8 +99,8 @@ MovingPixelsState::~MovingPixelsState()
delete m_pixelsMovement;
m_currentEditor->getManager()->removeMessageFilter(JM_KEYPRESSED, m_currentEditor);
m_currentEditor->getManager()->removeMessageFilter(JM_KEYRELEASED, m_currentEditor);
m_currentEditor->getManager()->removeMessageFilter(kKeyDownMessage, m_currentEditor);
m_currentEditor->getManager()->removeMessageFilter(kKeyUpMessage, m_currentEditor);
}
EditorState::BeforeChangeAction MovingPixelsState::onBeforeChangeState(Editor* editor, EditorState* newState)

View File

@ -110,7 +110,7 @@ bool FileList::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW: {
case kPaintMessage: {
SkinTheme* theme = static_cast<SkinTheme*>(getTheme());
View* view = View::getView(this);
gfx::Rect vp = view->getViewportBounds();
@ -239,10 +239,10 @@ bool FileList::onProcessMessage(Message* msg)
return true;
}
case JM_BUTTONPRESSED:
case kMouseDownMessage:
captureMouse();
case JM_MOTION:
case kMouseMoveMessage:
if (hasCapture()) {
int th = jwidget_get_text_height(this);
int y = this->rc->y1;
@ -278,13 +278,13 @@ bool FileList::onProcessMessage(Message* msg)
}
break;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture()) {
releaseMouse();
}
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (hasFocus()) {
int select = getSelectedIndex();
View* view = View::getView(this);
@ -387,7 +387,7 @@ bool FileList::onProcessMessage(Message* msg)
}
break;
case JM_WHEEL: {
case kMouseWheelMessage: {
View* view = View::getView(this);
if (view) {
gfx::Point scroll = view->getViewScroll();
@ -397,7 +397,7 @@ bool FileList::onProcessMessage(Message* msg)
break;
}
case JM_DOUBLECLICK:
case kDoubleClickMessage:
if (m_selected) {
if (m_selected->isBrowsable()) {
setCurrentFolder(m_selected);

View File

@ -112,7 +112,7 @@ public:
protected:
virtual bool onProcessMessage(Message* msg) OVERRIDE {
if (msg->type == JM_KEYRELEASED && msg->key.ascii >= 32) {
if (msg->type == kKeyUpMessage && msg->key.ascii >= 32) {
// Check if all keys are released
for (int c=0; c<KEY_MAX; ++c) {
if (key[c])

View File

@ -50,7 +50,7 @@ bool MenuItem2::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_OPEN: {
case kOpenMessage: {
UIContext* context = UIContext::instance();
if (m_command) {
@ -63,13 +63,13 @@ bool MenuItem2::onProcessMessage(Message* msg)
break;
}
case JM_CLOSE:
case kCloseMessage:
// disable the menu (the keyboard shortcuts are processed by "manager_msg_proc")
setEnabled(false);
break;
default:
if (msg->type == jm_open_menuitem()) {
if (msg->type == kOpenMenuItemMessage) {
// Update the context flags after opening the menuitem's
// submenu to update the "enabled" flag of each command
// correctly.

View File

@ -98,7 +98,7 @@ protected:
{
switch (msg->type) {
case JM_SETCURSOR:
case kSetCursorMessage:
jmouse_set_cursor(kArrowCursor);
return true;
}

View File

@ -202,7 +202,7 @@ bool PaletteView::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
if (!m_isUpdatingColumns) {
m_isUpdatingColumns = true;
View* view = View::getView(this);
@ -216,7 +216,7 @@ bool PaletteView::onProcessMessage(Message* msg)
}
break;
case JM_DRAW: {
case kPaintMessage: {
div_t d = div(Palette::MaxColors, m_columns);
int cols = m_columns;
int rows = d.quot + ((d.rem)? 1: 0);
@ -276,11 +276,11 @@ bool PaletteView::onProcessMessage(Message* msg)
return true;
}
case JM_BUTTONPRESSED:
case kMouseDownMessage:
captureMouse();
/* continue... */
case JM_MOTION: {
case kMouseMoveMessage: {
JRect cpos = jwidget_get_child_rect(this);
int req_w, req_h;
@ -317,11 +317,11 @@ bool PaletteView::onProcessMessage(Message* msg)
break;
}
case JM_BUTTONRELEASED:
case kMouseUpMessage:
releaseMouse();
return true;
case JM_WHEEL: {
case kMouseWheelMessage: {
View* view = View::getView(this);
if (view) {
gfx::Point scroll = view->getViewScroll();
@ -331,7 +331,7 @@ bool PaletteView::onProcessMessage(Message* msg)
break;
}
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
StatusBar::instance()->clearText();
break;

View File

@ -64,12 +64,12 @@ bool PopupWindowPin::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_OPEN:
case kOpenMessage:
m_pin.setSelected(false);
makeFixed();
break;
case JM_CLOSE:
case kCloseMessage:
m_pin.setSelected(false);
break;

View File

@ -108,12 +108,12 @@ public:
switch (msg->type) {
// When the mouse enter in this entry, it got the focus and the
// text is automatically selected.
case JM_MOUSEENTER:
case kMouseEnterMessage:
requestFocus();
selectText(0, -1);
break;
case JM_KEYPRESSED:
case kKeyDownMessage:
if (msg->key.scancode == KEY_ENTER ||
msg->key.scancode == KEY_ENTER_PAD) {
Command* cmd = CommandsModule::instance()->getCommandByName(CommandId::GotoFrame);
@ -165,7 +165,7 @@ StatusBar::StatusBar()
// The extra pixel in left and right borders are necessary so
// m_commandsBox and m_movePixelsBox do not overlap the upper-left
// and upper-right pixels drawn in JM_DRAW message (see putpixels)
// and upper-right pixels drawn in kPaintMessage message (see putpixels)
jwidget_set_border(this, 1*jguiscale(), 0, 1*jguiscale(), 0);
// Construct the commands box
@ -472,7 +472,7 @@ bool StatusBar::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
jrect_copy(this->rc, &msg->setpos.rect);
{
JRect rc = jrect_new_copy(this->rc);
@ -496,7 +496,7 @@ bool StatusBar::onProcessMessage(Message* msg)
}
return true;
case JM_DRAW: {
case kPaintMessage: {
SkinTheme* theme = static_cast<SkinTheme*>(this->getTheme());
ui::Color text_color = theme->getColor(ThemeColor::Text);
ui::Color face_color = theme->getColor(ThemeColor::Face);
@ -672,7 +672,7 @@ bool StatusBar::onProcessMessage(Message* msg)
return true;
}
case JM_MOUSEENTER: {
case kMouseEnterMessage: {
const Document* document = UIContext::instance()->getActiveDocument();
bool state = (document != NULL);
@ -702,7 +702,7 @@ bool StatusBar::onProcessMessage(Message* msg)
break;
}
case JM_MOTION: {
case kMouseMoveMessage: {
JRect rc = jwidget_get_rect(this);
rc->x1 += 2*jguiscale();
@ -765,7 +765,7 @@ bool StatusBar::onProcessMessage(Message* msg)
break;
}
case JM_BUTTONPRESSED:
case kMouseDownMessage:
// When the user press the mouse-button over a hot-layer-button...
if (m_hot_layer >= 0) {
try {
@ -792,7 +792,7 @@ bool StatusBar::onProcessMessage(Message* msg)
}
break;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
if (hasChild(m_commandsBox)) {
// If we want restore the state-bar and the slider doesn't have
// the capture...
@ -826,7 +826,7 @@ bool StatusBar::CustomizedTipWindow::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_TIMER:
case kTimerMessage:
closeWindow(NULL);
break;
}

View File

@ -244,12 +244,12 @@ bool Tabs::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_SETPOS:
case kResizeMessage:
jrect_copy(this->rc, &msg->setpos.rect);
setScrollX(m_scrollX);
return true;
case JM_DRAW: {
case kPaintMessage: {
SkinTheme* theme = static_cast<SkinTheme*>(this->getTheme());
BITMAP *doublebuffer = create_bitmap(jrect_w(&msg->draw.rect),
jrect_h(&msg->draw.rect));
@ -336,19 +336,19 @@ bool Tabs::onProcessMessage(Message* msg)
return true;
}
case JM_MOUSEENTER:
case JM_MOTION:
case kMouseEnterMessage:
case kMouseMoveMessage:
calculateHot();
return true;
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
if (m_hot != NULL) {
m_hot = NULL;
invalidate();
}
return true;
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (m_hot != NULL) {
if (m_selected != m_hot) {
m_selected = m_hot;
@ -362,7 +362,7 @@ bool Tabs::onProcessMessage(Message* msg)
}
return true;
case JM_WHEEL: {
case kMouseWheelMessage: {
int dx = (jmouse_z(1) - jmouse_z(0)) * jrect_w(this->rc)/6;
// setScrollX(m_scrollX+dx);
@ -382,7 +382,7 @@ bool Tabs::onProcessMessage(Message* msg)
return true;
}
case JM_TIMER: {
case kTimerMessage: {
switch (m_ani) {
case ANI_NONE:
// Do nothing
@ -709,12 +709,12 @@ bool Tabs::ScrollButton::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_BUTTONPRESSED:
case kMouseDownMessage:
captureMouse();
m_tabs->startScrolling();
return true;
case JM_BUTTONRELEASED:
case kMouseUpMessage:
if (hasCapture())
releaseMouse();

View File

@ -126,7 +126,7 @@ bool ToolBar::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW: {
case kPaintMessage: {
BITMAP *doublebuffer = create_bitmap(jrect_w(&msg->draw.rect),
jrect_h(&msg->draw.rect));
SkinTheme* theme = static_cast<SkinTheme*>(this->getTheme());
@ -217,7 +217,7 @@ bool ToolBar::onProcessMessage(Message* msg)
return true;
}
case JM_BUTTONPRESSED: {
case kMouseDownMessage: {
ToolBox* toolbox = App::instance()->getToolBox();
int groups = toolbox->getGroupsCount();
Rect toolrc;
@ -258,7 +258,7 @@ bool ToolBar::onProcessMessage(Message* msg)
break;
}
case JM_MOTION: {
case kMouseMoveMessage: {
ToolBox* toolbox = App::instance()->getToolBox();
int groups = toolbox->getGroupsCount();
Tool* new_hot_tool = NULL;
@ -310,7 +310,7 @@ bool ToolBar::onProcessMessage(Message* msg)
break;
}
case JM_MOUSELEAVE:
case kMouseLeaveMessage:
closeTipWindow();
if (!m_popupWindow)
@ -323,7 +323,7 @@ bool ToolBar::onProcessMessage(Message* msg)
StatusBar::instance()->clearText();
break;
case JM_TIMER:
case kTimerMessage:
if (msg->timer.timer == &m_tipTimer) {
if (m_tipWindow)
m_tipWindow->openWindow();
@ -403,11 +403,11 @@ void ToolBar::openPopupWindow(int group_index, ToolGroup* tool_group)
rc.x -= w;
rc.w = w;
// Redraw the overlapped area and save it to use it in the ToolStrip::onProcessMessage(JM_DRAW)
// Redraw the overlapped area and save it to use it in the ToolStrip::onProcessMessage(kPaintMessage)
{
getManager()->invalidateRect(rc);
// Flush JM_DRAW messages and send them
// Flush kPaintMessage messages and send them
getManager()->flushRedraw();
getManager()->dispatchMessages();
@ -543,7 +543,7 @@ void ToolBar::closeTipWindow()
delete m_tipWindow;
m_tipWindow = NULL;
// Flush JM_DRAW messages and send them
// Flush kPaintMessage messages and send them
getManager()->flushRedraw();
getManager()->dispatchMessages();
}
@ -606,7 +606,7 @@ bool ToolStrip::onProcessMessage(Message* msg)
{
switch (msg->type) {
case JM_DRAW: {
case kPaintMessage: {
BITMAP *doublebuffer = create_bitmap(jrect_w(&msg->draw.rect),
jrect_h(&msg->draw.rect));
SkinTheme* theme = static_cast<SkinTheme*>(this->getTheme());
@ -661,7 +661,7 @@ bool ToolStrip::onProcessMessage(Message* msg)
return true;
}
case JM_MOTION: {
case kMouseMoveMessage: {
ToolBox* toolbox = App::instance()->getToolBox();
Tool* hot_tool = NULL;
Rect toolrc;
@ -695,7 +695,7 @@ bool ToolStrip::onProcessMessage(Message* msg)
break;
}
case JM_BUTTONPRESSED:
case kMouseDownMessage:
if (m_hot_tool) {
m_toolbar->selectTool(m_hot_tool);
closeWindow();