X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4cae9a20a89d127601f68873681cfdaa7fe484d5..5115c51a822ab5a4d4184b4a07c97e6bddba8bef:/src/x11/window.cpp diff --git a/src/x11/window.cpp b/src/x11/window.cpp index b04be864eb..9f980f69f5 100644 --- a/src/x11/window.cpp +++ b/src/x11/window.cpp @@ -147,7 +147,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, m_foregroundColour = *wxBLACK; m_foregroundColour.CalcPixel( (WXColormap) cm ); - Window xparent = (Window) parent->GetClientWindow(); + Window xparent = (Window) parent->GetClientAreaWindow(); // Add window's own scrollbars to main window, not to client window if (parent->GetInsertIntoMain()) @@ -386,18 +386,15 @@ void wxWindowX11::SetFocus() if (wxWindowIsVisible(xwindow)) { - XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToParent, CurrentTime ); + wxLogTrace( _T("focus"), _T("wxWindowX11::SetFocus: %s"), GetClassInfo()->GetClassName()); + // XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToParent, CurrentTime ); + XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToNone, CurrentTime ); m_needsInputFocus = FALSE; } else { m_needsInputFocus = TRUE; } -#if 0 - wxString msg; - msg.Printf("SetFocus: %s\n", GetClassInfo()->GetClassName()); - printf(msg.c_str()); -#endif } // Get the window with the focus @@ -605,7 +602,7 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) m_clearRegion.Intersect( 0, 0, cw, ch ); } - Window xwindow = (Window) GetClientWindow(); + Window xwindow = (Window) GetClientAreaWindow(); wxCHECK_RET( xwindow, wxT("invalid window") ); @@ -1132,7 +1129,7 @@ void wxWindowX11::SendEraseEvents() if (!GetEventHandler()->ProcessEvent(erase_event) ) { Display *xdisplay = wxGlobalDisplay(); - Window xwindow = (Window) GetClientWindow(); + Window xwindow = (Window) GetClientAreaWindow(); XSetForeground( xdisplay, g_eraseGC, m_backgroundColour.GetPixel() ); wxRegionIterator upd( m_clearRegion ); @@ -1225,6 +1222,9 @@ void wxWindowX11::OnSysColourChanged(wxSysColourChangedEvent& event) } } +// See handler for InFocus case in app.cpp for details. +wxWindow* g_GettingFocus = NULL; + void wxWindowX11::OnInternalIdle() { // Update invalidated regions. @@ -1247,6 +1247,7 @@ void wxWindowX11::OnInternalIdle() // no point in trying again. m_needsInputFocus = FALSE; } + g_GettingFocus = NULL; } // ---------------------------------------------------------------------------- @@ -1326,7 +1327,7 @@ WXWindow wxWindowX11::GetMainWindow() const return m_mainWindow; } -WXWindow wxWindowX11::GetClientWindow() const +WXWindow wxWindowX11::GetClientAreaWindow() const { return m_clientWindow; }