fixes in x11 platform

* fix clipboard paste on x11
* fix alt tab and keyboard issues
This commit is contained in:
Eduardo Bart 2012-04-04 21:02:42 -03:00
parent 6b020b94a4
commit f8d4ef60d9
2 changed files with 9 additions and 22 deletions

View File

@ -119,6 +119,8 @@ void PlatformWindow::releaseAllKeys()
processKeyUp(keyCode); processKeyUp(keyCode);
} }
m_inputEvent.keyboardModifiers = 0;
for(int i=0;i<4;++i) for(int i=0;i<4;++i)
m_mouseButtonStates[i] = false; m_mouseButtonStates[i] = false;
} }

View File

@ -773,6 +773,7 @@ void X11Window::poll()
break; break;
case FocusIn: case FocusIn:
m_focused = true; m_focused = true;
releaseAllKeys();
break; break;
case FocusOut: case FocusOut:
m_focused = false; m_focused = false;
@ -1008,7 +1009,7 @@ std::string X11Window::getClipboardText()
std::string clipboardText; std::string clipboardText;
if(ownerWindow != None) { if(ownerWindow != None) {
XConvertSelection(m_display, clipboard, XA_STRING, 0, ownerWindow, CurrentTime); XConvertSelection(m_display, clipboard, XA_STRING, XA_PRIMARY, ownerWindow, CurrentTime);
XFlush(m_display); XFlush(m_display);
// hack to wait SelectioNotify event, otherwise we will get wrong clipboard pastes // hack to wait SelectioNotify event, otherwise we will get wrong clipboard pastes
@ -1018,33 +1019,17 @@ std::string X11Window::getClipboardText()
// check for data // check for data
Atom type; Atom type;
int format; int format;
ulong numItems, bytesLeft, dummy; ulong len, bytesLeft;
uchar *data; uchar *data;
XGetWindowProperty(m_display, ownerWindow, XGetWindowProperty(m_display, ownerWindow,
XA_STRING, XA_PRIMARY, 0, 10000000L, 0, XA_STRING,
0, 0, 0,
AnyPropertyType,
&type, &type,
&format, &format,
&numItems, &len,
&bytesLeft, &bytesLeft,
&data); &data);
if(bytesLeft > 0) { if(len > 0) {
// get the data get
int result = XGetWindowProperty(m_display, ownerWindow,
XA_STRING,
0,
bytesLeft,
0,
AnyPropertyType,
&type,
&format,
&numItems,
&dummy,
&data);
if(result == Success)
clipboardText = Fw::utf8StringToLatin1(data); clipboardText = Fw::utf8StringToLatin1(data);
XFree(data);
} }
} }