From bcfffb599f442c13883c810c90f9f5cf5b981600 Mon Sep 17 00:00:00 2001 From: Edouard Dupin Date: Thu, 27 Oct 2011 13:58:45 +0200 Subject: [PATCH] X11: manage more than 3 mouse boutton. Widget: Manage the event on multiple buttons... --- Sources/base/guiX11.cpp | 19 +++++-------------- Sources/ewolWidget.cpp | 8 +------- Sources/ewolWidget.h | 36 ++++++++++++++++++++++++++++-------- 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/Sources/base/guiX11.cpp b/Sources/base/guiX11.cpp index 943ff2b1..660533eb 100644 --- a/Sources/base/guiX11.cpp +++ b/Sources/base/guiX11.cpp @@ -434,13 +434,8 @@ namespace guiAbstraction { break; case ButtonPress: { - int32_t btId = 0; - //EWOL_DEBUG("X11 event : " << event.type << " = \"ButtonPress\" (" << (double)event.xbutton.x << "," << (double)event.xbutton.y << ")"); - if ( event.xbutton.button & Button2 ) { - btId = 2; - } else if (event.xbutton.button & Button1) { - btId = 1; - } + int32_t btId = event.xbutton.button; + //EWOL_DEBUG("X11 bt=" << btId << " event : " << event.type << "=\"ButtonPress\" (" << (double)event.xbutton.x << "," << (double)event.xbutton.y << ")"); // Send Down message m_uniqueWindows->GenEventInput(btId, ewol::EVENT_INPUT_TYPE_DOWN, (double)event.xbutton.x, (double)event.xbutton.y); // Check double or triple click event ... @@ -468,13 +463,9 @@ namespace guiAbstraction { break; case ButtonRelease: { - int32_t btId = 0; - //EWOL_DEBUG("X11 event : " << event.type << " = \"ButtonRelease\" (" << (double)event.xbutton.x << "," << (double)event.xbutton.y << ")"); - if(event.xbutton.button & Button2) { - btId = 2; - } else if (event.xbutton.button & Button1) { - btId = 1; - } + int32_t btId = event.xbutton.button; + + //EWOL_DEBUG("X11 bt=" << btId << " event : " << event.type << "=\"ButtonRelease\" (" << (double)event.xbutton.x << "," << (double)event.xbutton.y << ")"); // send Up event ... m_uniqueWindows->GenEventInput(btId, ewol::EVENT_INPUT_TYPE_UP, (double)event.xbutton.x, (double)event.xbutton.y); diff --git a/Sources/ewolWidget.cpp b/Sources/ewolWidget.cpp index 1bea2d0b..b06d06a4 100644 --- a/Sources/ewolWidget.cpp +++ b/Sources/ewolWidget.cpp @@ -62,13 +62,7 @@ bool ewol::Widget::GenEventInput(int32_t IdInput, eventInputType_te typeEvent, d && m_inputEvent[iii].area.origin.x + m_inputEvent[iii].area.size.x > x && m_inputEvent[iii].area.origin.y + m_inputEvent[iii].area.size.y > y ) { - // TODO : What is the flags for ??? how can we use it... - if( ( ( (FLAG_EVENT_INPUT_1 & m_inputEvent[iii].area.flags) && 1 == IdInput ) - || ( (FLAG_EVENT_INPUT_2 & m_inputEvent[iii].area.flags) && 2 == IdInput) - || ( (FLAG_EVENT_INPUT_3 & m_inputEvent[iii].area.flags) && 3 == IdInput) - || ( (FLAG_EVENT_INPUT_4 & m_inputEvent[iii].area.flags) && 4 == IdInput) - || ( (FLAG_EVENT_INPUT_5 & m_inputEvent[iii].area.flags) && 5 == IdInput) - ) + if( (m_inputEvent[iii].area.flags & (1<<(IdInput-1)) ) && ( ( (FLAG_EVENT_INPUT_MOTION & m_inputEvent[iii].area.flags) && EVENT_INPUT_TYPE_MOVE == typeEvent) || ( (FLAG_EVENT_INPUT_ENTER & m_inputEvent[iii].area.flags) && EVENT_INPUT_TYPE_ENTER == typeEvent) || ( (FLAG_EVENT_INPUT_LEAVE & m_inputEvent[iii].area.flags) && EVENT_INPUT_TYPE_LEAVE == typeEvent) diff --git a/Sources/ewolWidget.h b/Sources/ewolWidget.h index 7cc28b33..ecd8b0a7 100644 --- a/Sources/ewolWidget.h +++ b/Sources/ewolWidget.h @@ -69,16 +69,36 @@ namespace ewol { FLAG_EVENT_INPUT_3 = 1 << 2, FLAG_EVENT_INPUT_4 = 1 << 3, FLAG_EVENT_INPUT_5 = 1 << 4, - FLAG_EVENT_INPUT_MOTION = 1 << 5, - FLAG_EVENT_INPUT_ENTER = 1 << 6, - FLAG_EVENT_INPUT_LEAVE = 1 << 7, - FLAG_EVENT_INPUT_DOWN = 1 << 8, - FLAG_EVENT_INPUT_UP = 1 << 9, - FLAG_EVENT_INPUT_CLICKED = 1 << 10, - FLAG_EVENT_INPUT_CLICKED_DOUBLE = 1 << 11, - FLAG_EVENT_INPUT_CLICKED_TRIPLE = 1 << 12, + FLAG_EVENT_INPUT_6 = 1 << 5, + FLAG_EVENT_INPUT_7 = 1 << 6, + FLAG_EVENT_INPUT_8 = 1 << 7, + FLAG_EVENT_INPUT_9 = 1 << 8, + FLAG_EVENT_INPUT_10 = 1 << 9, + FLAG_EVENT_INPUT_11 = 1 << 10, + FLAG_EVENT_INPUT_12 = 1 << 11, + FLAG_EVENT_INPUT_13 = 1 << 12, + FLAG_EVENT_INPUT_14 = 1 << 13, + FLAG_EVENT_INPUT_15 = 1 << 14, + FLAG_EVENT_INPUT_16 = 1 << 15, + FLAG_EVENT_INPUT_17 = 1 << 16, + + FLAG_EVENT_INPUT_MOTION = 1 << 20, + FLAG_EVENT_INPUT_ENTER = 1 << 21, + FLAG_EVENT_INPUT_LEAVE = 1 << 21, + FLAG_EVENT_INPUT_DOWN = 1 << 23, + FLAG_EVENT_INPUT_UP = 1 << 24, + FLAG_EVENT_INPUT_CLICKED = 1 << 25, + FLAG_EVENT_INPUT_CLICKED_DOUBLE = 1 << 26, + FLAG_EVENT_INPUT_CLICKED_TRIPLE = 1 << 27, }; + #define FLAG_EVENT_INPUT_BT_LEFT (FLAG_EVENT_INPUT_1) + #define FLAG_EVENT_INPUT_BT_CENTER (FLAG_EVENT_INPUT_2) + #define FLAG_EVENT_INPUT_BT_RIGHT (FLAG_EVENT_INPUT_3) + #define FLAG_EVENT_INPUT_BT_SCROOL_UP (FLAG_EVENT_INPUT_4) + #define FLAG_EVENT_INPUT_BT_SCROOL_DOWN (FLAG_EVENT_INPUT_5) + + #define UTF8_MAX_SIZE (8) #define EWOL_EVENT_AREA (0) #define EWOL_EVENT_SHORTCUT (1)