From 0283f092a3c0a0b6c5ea8ff43fb5f33749a29348 Mon Sep 17 00:00:00 2001 From: kohait Date: Thu, 21 Jul 2011 13:42:32 +0000 Subject: [PATCH] rainbow: LinuxFb: doublecklick support, font metrics init fix, SDLFb: undo repeat click fix git-svn-id: svn://ultimatepp.org/upp/trunk@3685 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- rainbow/Events/Events.cpp | 10 +++++++- rainbow/LinuxFb/Proc.cpp | 53 +++++++++++++++++++++++++++++++++------ rainbow/LinuxFb/Win.cpp | 7 +++++- rainbow/SDLFb/Proc.cpp | 13 ---------- 4 files changed, 61 insertions(+), 22 deletions(-) diff --git a/rainbow/Events/Events.cpp b/rainbow/Events/Events.cpp index 174a9d10d..896f9abd5 100644 --- a/rainbow/Events/Events.cpp +++ b/rainbow/Events/Events.cpp @@ -2,7 +2,9 @@ using namespace Upp; -struct App : TopWindow { +class App : public TopWindow { +public: + typedef App CLASSNAME; ArrayCtrl log; void Log(const String& s) @@ -205,6 +207,11 @@ struct App : TopWindow { Log("Layout"); } + void OnTimer() + { + Log("Timer"); + } + App() { SetFrame(InsetFrame()); @@ -214,6 +221,7 @@ struct App : TopWindow { log.AddColumn(""); log.NoHeader(); Add(log.HSizePos().BottomPos(0, 200)); + SetTimeCallback(-1000, THISBACK(OnTimer)); } ~App() diff --git a/rainbow/LinuxFb/Proc.cpp b/rainbow/LinuxFb/Proc.cpp index defa0af33..e8118b2a8 100644 --- a/rainbow/LinuxFb/Proc.cpp +++ b/rainbow/LinuxFb/Proc.cpp @@ -4,9 +4,9 @@ NAMESPACE_UPP #define LLOG(x) //LOG(x) -bool GetMouseLeft() { return mouseb & 0x1; } -bool GetMouseRight() { return mouseb & 0x2; } -bool GetMouseMiddle() { return mouseb & 0x4; } +bool GetMouseLeft() { return mouseb & (1<<0); } +bool GetMouseRight() { return mouseb & (1<<1); } +bool GetMouseMiddle() { return mouseb & (1<<2); } void purgefd(int fd) { @@ -66,6 +66,41 @@ int has_imps2(int fd) return 0; } +dword lastbdowntime[8] = {0}; +dword isdblclick[8] = {0}; + +void handle_button(dword ct, dword mouseb, dword bm, int i, + dword df, dword rf, dword dbf, dword uf) +{ + dword m = (1< 0)) { + if(geteuid() != 0) + { + fprintf(stderr, "Error: not running as ROOT, mouse handling pobably unavailable\n"); + } + else if(cvt > 0) { LLOG("try to open the NEW assigned VT: " << cvt); for(int i=0; vcs[i] && (keyb_fd < 0); ++i) { char path[32]; diff --git a/rainbow/SDLFb/Proc.cpp b/rainbow/SDLFb/Proc.cpp index 0ea7640be..64d0601ad 100644 --- a/rainbow/SDLFb/Proc.cpp +++ b/rainbow/SDLFb/Proc.cpp @@ -93,19 +93,6 @@ void HandleSDLEvent(SDL_Event* event) //case SDL_BUTTON_WHEELDOWN: Ctrl::DoMouseFB(Ctrl::MOUSEWHEELDOUBLE, p, -120); break; } isdblclick[bi] = 0; //reset, to go ahead sending repeats - //but sdl doesnt send repeated mouse down - //FIXME fake repeated mousedown - } - else if(!isdblclick[bi]) //events might not be right - { - switch(bi) - { - case SDL_BUTTON_LEFT: Ctrl::DoMouseFB(Ctrl::LEFTREPEAT, p); break; - case SDL_BUTTON_RIGHT: Ctrl::DoMouseFB(Ctrl::RIGHTREPEAT, p); break; - case SDL_BUTTON_MIDDLE: Ctrl::DoMouseFB(Ctrl::MIDDLEREPEAT, p); break; - //case SDL_BUTTON_WHEELUP: Ctrl::DoMouseFB(Ctrl::MOUSEWHEELDOUBLE, p, +120); break; - //case SDL_BUTTON_WHEELDOWN: Ctrl::DoMouseFB(Ctrl::MOUSEWHEELDOUBLE, p, -120); break; - } } else {