rework x11 envent when move : generate event with the ID of input ....
This commit is contained in:
parent
0dc3241a72
commit
fb6f1e0703
2
Makefile
2
Makefile
@ -49,7 +49,7 @@ DEFAULT_PLATFORM=X11
|
|||||||
# default platform can be overridden
|
# default platform can be overridden
|
||||||
PLATFORM?=$(DEFAULT_PLATFORM)
|
PLATFORM?=$(DEFAULT_PLATFORM)
|
||||||
|
|
||||||
DATA_MODE=MEMORY
|
#DATA_MODE=MEMORY
|
||||||
|
|
||||||
ifeq ($(PLATFORM), X11)
|
ifeq ($(PLATFORM), X11)
|
||||||
CXXFILES += base/guiX11.cpp
|
CXXFILES += base/guiX11.cpp
|
||||||
|
@ -64,6 +64,12 @@ static long _getTime(void)
|
|||||||
|
|
||||||
|
|
||||||
void Draw(void);
|
void Draw(void);
|
||||||
|
#define MAX_INPUT (3)
|
||||||
|
|
||||||
|
etkFloat_t inputX[MAX_INPUT] = {0.0, 0.0, 0.0}
|
||||||
|
etkFloat_t inputY[MAX_INPUT] = {0.0, 0.0, 0.0}
|
||||||
|
bool inputIsPressed[MAX_INPUT] = {false, false, false};
|
||||||
|
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@ -88,6 +94,7 @@ extern "C"
|
|||||||
ewol::TextureOGLContext(true);
|
ewol::TextureOGLContext(true);
|
||||||
if (NULL != m_uniqueWindows) {
|
if (NULL != m_uniqueWindows) {
|
||||||
m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
||||||
|
m_uniqueWindows->SetOrigin(0.0, 0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,8 +130,8 @@ extern "C"
|
|||||||
//appMove(x,y);
|
//appMove(x,y);
|
||||||
if(NULL != m_uniqueWindows) {
|
if(NULL != m_uniqueWindows) {
|
||||||
m_uniqueWindows->GenEventInput(ewol::FLAG_EVENT_INPUT_1, ewol::EVENT_INPUT_TYPE_DOWN, (etkFloat_t)x, (etkFloat_t)y);
|
m_uniqueWindows->GenEventInput(ewol::FLAG_EVENT_INPUT_1, ewol::EVENT_INPUT_TYPE_DOWN, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
m_uniqueWindows->GenEventInput(ewol::FLAG_EVENT_INPUT_1 | ewol::FLAG_EVENT_INPUT_CLICKED, ewol::EVENT_INPUT_TYPE_SINGLE, (etkFloat_t)x, (etkFloat_t)y);
|
|
||||||
m_uniqueWindows->GenEventInput(ewol::FLAG_EVENT_INPUT_1, ewol::EVENT_INPUT_TYPE_UP, (etkFloat_t)x, (etkFloat_t)y);
|
m_uniqueWindows->GenEventInput(ewol::FLAG_EVENT_INPUT_1, ewol::EVENT_INPUT_TYPE_UP, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
|
m_uniqueWindows->GenEventInput(ewol::FLAG_EVENT_INPUT_1 | ewol::FLAG_EVENT_INPUT_CLICKED, ewol::EVENT_INPUT_TYPE_SINGLE, (etkFloat_t)x, (etkFloat_t)y);
|
||||||
//m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
//m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,7 +501,7 @@ namespace guiAbstraction {
|
|||||||
m_moveMode = false;
|
m_moveMode = false;
|
||||||
m_resizeMode = false;
|
m_resizeMode = false;
|
||||||
int32_t btId = event.xbutton.button;
|
int32_t btId = event.xbutton.button;
|
||||||
//EWOL_DEBUG("X11 bt=" << btId << " event : " << event.type << "=\"ButtonPress\" (" << (etkFloat_t)event.xbutton.x << "," << (etkFloat_t)event.xbutton.y << ")");
|
EWOL_DEBUG("X11 bt=" << btId << " event : " << event.type << "=\"ButtonPress\" (" << (etkFloat_t)event.xbutton.x << "," << (etkFloat_t)event.xbutton.y << ")");
|
||||||
// Send Down message
|
// Send Down message
|
||||||
m_uniqueWindows->GenEventInput(btId, ewol::EVENT_INPUT_TYPE_DOWN, (etkFloat_t)event.xbutton.x, (etkFloat_t)event.xbutton.y);
|
m_uniqueWindows->GenEventInput(btId, ewol::EVENT_INPUT_TYPE_DOWN, (etkFloat_t)event.xbutton.x, (etkFloat_t)event.xbutton.y);
|
||||||
// Check double or triple click event ...
|
// Check double or triple click event ...
|
||||||
@ -532,7 +532,7 @@ namespace guiAbstraction {
|
|||||||
m_moveMode = false;
|
m_moveMode = false;
|
||||||
m_resizeMode = false;
|
m_resizeMode = false;
|
||||||
int32_t btId = event.xbutton.button;
|
int32_t btId = event.xbutton.button;
|
||||||
//EWOL_DEBUG("X11 bt=" << btId << " event : " << event.type << "=\"ButtonRelease\" (" << (etkFloat_t)event.xbutton.x << "," << (etkFloat_t)event.xbutton.y << ")");
|
EWOL_DEBUG("X11 bt=" << btId << " event : " << event.type << "=\"ButtonRelease\" (" << (etkFloat_t)event.xbutton.x << "," << (etkFloat_t)event.xbutton.y << ")");
|
||||||
// send Up event ...
|
// send Up event ...
|
||||||
m_uniqueWindows->GenEventInput(btId, ewol::EVENT_INPUT_TYPE_UP, (etkFloat_t)event.xbutton.x, (etkFloat_t)event.xbutton.y);
|
m_uniqueWindows->GenEventInput(btId, ewol::EVENT_INPUT_TYPE_UP, (etkFloat_t)event.xbutton.x, (etkFloat_t)event.xbutton.y);
|
||||||
|
|
||||||
@ -627,9 +627,20 @@ namespace guiAbstraction {
|
|||||||
//EWOL_DEBUG("Change POS : (" << (m_startY - m_screenOffsetX) << "," << (m_startY - m_screenOffsetY) << ") ==> (" << newPosX << "," << newPosY << ")");
|
//EWOL_DEBUG("Change POS : (" << (m_startY - m_screenOffsetX) << "," << (m_startY - m_screenOffsetY) << ") ==> (" << newPosX << "," << newPosY << ")");
|
||||||
this->ChangePos(newPosX, newPosY);
|
this->ChangePos(newPosX, newPosY);
|
||||||
} else {
|
} else {
|
||||||
//EWOL_DEBUG("X11 event : " << event.type << " = \"MotionNotify\" (" << (etkFloat_t)event.xmotion.x << "," << (etkFloat_t)event.xmotion.y << ")");
|
// For compatibility of the Android system :
|
||||||
|
bool findOne = false;
|
||||||
|
for (int32_t iii=0; iii<NB_MAX_INPUT ; iii++) {
|
||||||
|
if (true == inputIsPressed[iii]) {
|
||||||
|
EWOL_DEBUG("X11 event: bt=" << iii+1 << " " << event.type << " = \"MotionNotify\" (" << (etkFloat_t)event.xmotion.x << "," << (etkFloat_t)event.xmotion.y << ")");
|
||||||
|
m_uniqueWindows->GenEventInput(iii+1, ewol::EVENT_INPUT_TYPE_MOVE, (etkFloat_t)event.xmotion.x, (etkFloat_t)event.xmotion.y);
|
||||||
|
findOne = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (false == findOne) {
|
||||||
|
EWOL_DEBUG("X11 event: bt=" << 0 << " " << event.type << " = \"MotionNotify\" (" << (etkFloat_t)event.xmotion.x << "," << (etkFloat_t)event.xmotion.y << ")");
|
||||||
m_uniqueWindows->GenEventInput(0, ewol::EVENT_INPUT_TYPE_MOVE, (etkFloat_t)event.xmotion.x, (etkFloat_t)event.xmotion.y);
|
m_uniqueWindows->GenEventInput(0, ewol::EVENT_INPUT_TYPE_MOVE, (etkFloat_t)event.xmotion.x, (etkFloat_t)event.xmotion.y);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case LeaveNotify:
|
case LeaveNotify:
|
||||||
m_resizeMode = false;
|
m_resizeMode = false;
|
||||||
@ -716,6 +727,13 @@ namespace guiAbstraction {
|
|||||||
XQueryPointer(m_display, WindowHandle, &fromroot, &tmpwin, &x, &y, &tmp, &tmp, &tmp2);
|
XQueryPointer(m_display, WindowHandle, &fromroot, &tmpwin, &x, &y, &tmp, &tmp, &tmp2);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void ForceRedrawAll(void)
|
||||||
|
{
|
||||||
|
if (NULL != m_uniqueWindows) {
|
||||||
|
m_uniqueWindows->CalculateSize((etkFloat_t)m_width, (etkFloat_t)m_height);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_resizeMode;
|
bool m_resizeMode;
|
||||||
bool m_moveMode;
|
bool m_moveMode;
|
||||||
@ -881,6 +899,15 @@ bool guiAbstraction::IsPressedInput(int32_t inputID)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void guiAbstraction::ForceRedrawAll(void)
|
||||||
|
{
|
||||||
|
if (true == guiAbstractionIsInit) {
|
||||||
|
myX11Access->ForceRedrawAll();
|
||||||
|
} else {
|
||||||
|
EWOL_CRITICAL("X11 ==> not init ... ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include <ewol/ewol.h>
|
#include <ewol/ewol.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -158,9 +158,9 @@ bool etk::File::operator!= (const etk::File &etkF) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
etk::String baseFolderData = "./";
|
etk::String baseFolderData = "";
|
||||||
etk::String baseFolderDataUser = "~/.tmp/userData";
|
etk::String baseFolderDataUser = "~/.tmp/userData/";
|
||||||
etk::String baseFolderCache = "~/.tmp/cache";
|
etk::String baseFolderCache = "~/.tmp/cache/";
|
||||||
// for specific device contraint :
|
// for specific device contraint :
|
||||||
void etk::SetBaseFolderData(const char * folder)
|
void etk::SetBaseFolderData(const char * folder)
|
||||||
{
|
{
|
||||||
@ -239,7 +239,6 @@ void etk::File::SetCompleateName(etk::String &newFilename, etk::FileType_te type
|
|||||||
#else
|
#else
|
||||||
etk::String tmpFilename = destFilename;
|
etk::String tmpFilename = destFilename;
|
||||||
destFilename = baseFolderData;
|
destFilename = baseFolderData;
|
||||||
destFilename += '/';
|
|
||||||
destFilename += tmpFilename;
|
destFilename += tmpFilename;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -251,7 +250,6 @@ void etk::File::SetCompleateName(etk::String &newFilename, etk::FileType_te type
|
|||||||
#endif
|
#endif
|
||||||
etk::String tmpFilename = destFilename;
|
etk::String tmpFilename = destFilename;
|
||||||
destFilename = baseFolderDataUser;
|
destFilename = baseFolderDataUser;
|
||||||
destFilename += '/';
|
|
||||||
destFilename += tmpFilename;
|
destFilename += tmpFilename;
|
||||||
}
|
}
|
||||||
needUnpack = true;
|
needUnpack = true;
|
||||||
@ -263,7 +261,6 @@ void etk::File::SetCompleateName(etk::String &newFilename, etk::FileType_te type
|
|||||||
#endif
|
#endif
|
||||||
etk::String tmpFilename = destFilename;
|
etk::String tmpFilename = destFilename;
|
||||||
destFilename = baseFolderCache;
|
destFilename = baseFolderCache;
|
||||||
destFilename += '/';
|
|
||||||
destFilename += tmpFilename;
|
destFilename += tmpFilename;
|
||||||
}
|
}
|
||||||
needUnpack = true;
|
needUnpack = true;
|
||||||
@ -581,7 +578,12 @@ bool etk::File::fSeek(long int offset, int origin)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return fseek(m_PointerFile, offset, origin);
|
fseek(m_PointerFile, offset, origin);
|
||||||
|
if(ferror(m_PointerFile)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -378,7 +378,7 @@ void ewol::DrawText(int32_t fontID,
|
|||||||
char * tmpVal = (char*)utf8String;
|
char * tmpVal = (char*)utf8String;
|
||||||
|
|
||||||
fontTextureId = s_listLoadedFonts[fontID]->GetOglId();
|
fontTextureId = s_listLoadedFonts[fontID]->GetOglId();
|
||||||
EWOL_DEBUG("**************** plop2 " << fontTextureId);
|
//EWOL_DEBUG("**************** plop2 " << fontTextureId);
|
||||||
int32_t size = s_listLoadedFonts[fontID]->GetHeight();
|
int32_t size = s_listLoadedFonts[fontID]->GetHeight();
|
||||||
|
|
||||||
etkFloat_t posDrawX = drawPosition.x;
|
etkFloat_t posDrawX = drawPosition.x;
|
||||||
|
@ -136,15 +136,11 @@ void ewol::Test::OnRegenerateDisplay(void)
|
|||||||
tmpOObjects->CirclePart(150, 60, 60, 2, 45, 180);
|
tmpOObjects->CirclePart(150, 60, 60, 2, 45, 180);
|
||||||
|
|
||||||
AddOObject(tmpOObjects, "BouttonDecoration");
|
AddOObject(tmpOObjects, "BouttonDecoration");
|
||||||
|
/*
|
||||||
//tmpOObjects = new ewol::OObject2DColored;
|
tmpOObjects = new ewol::OObject2DColored;
|
||||||
|
ewol::theme::Generate(0, 0, *tmpOObjects, 50, 50, m_size.x*0.75, m_size.y*0.75);
|
||||||
//ewol::theme::Generate(0, 0, *tmpOObjects, 50, 50, m_size.x*0.75, m_size.y*0.75);
|
AddOObject(tmpOObjects, "themeObject");
|
||||||
|
*/
|
||||||
//AddOObject(tmpOObjects, "themeObject");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Regenerate the event Area:
|
// Regenerate the event Area:
|
||||||
EventAreaRemoveAll();
|
EventAreaRemoveAll();
|
||||||
@ -155,22 +151,6 @@ void ewol::Test::OnRegenerateDisplay(void)
|
|||||||
size.x = m_size.x-6;
|
size.x = m_size.x-6;
|
||||||
size.y = m_size.y-6;
|
size.y = m_size.y-6;
|
||||||
AddEventArea(origin, size, FLAG_EVENT_INPUT_1 | FLAG_EVENT_INPUT_CLICKED_ALL, ewolEventTestPressed);
|
AddEventArea(origin, size, FLAG_EVENT_INPUT_1 | FLAG_EVENT_INPUT_CLICKED_ALL, ewolEventTestPressed);
|
||||||
|
|
||||||
//tmpOObjects->SetColor(1.0, 0.0, 0.0, 1.0);
|
|
||||||
//tmpOObjects->Circle(100, 100, 100, 35);
|
|
||||||
/*
|
|
||||||
tmpOObjects->SetPoint(-20, -20);
|
|
||||||
tmpOObjects->SetPoint(50, 50);
|
|
||||||
tmpOObjects->SetPoint(-20, 100);
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
tmpOObjects->SetPoint(20, -20);
|
|
||||||
tmpOObjects->SetPoint(50, 50);
|
|
||||||
tmpOObjects->SetPoint(-20, 100);
|
|
||||||
|
|
||||||
AddOObject(tmpOObjects, "BouttonDecoration");
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ewol::Test::OnEventArea(const char * generateEventId, etkFloat_t x, etkFloat_t y)
|
bool ewol::Test::OnEventArea(const char * generateEventId, etkFloat_t x, etkFloat_t y)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user