// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "window.h"
-#endif
-
#include "wx/setup.h"
#include "wx/menu.h"
#include "wx/dc.h"
wxCHECK_RET( xwindow, wxT("invalid window") );
- wxCHECK_RET( AcceptsFocus(), wxT("set focus on window that doesn't accept the focus") );
+ // Don't assert; we might be trying to set the focus for a panel
+ // with only static controls, so the panel returns false from AcceptsFocus.
+ // The app should be not be expected to deal with this.
+ if (!AcceptsFocus())
+ return;
#if 0
if (GetName() == "scrollBar")
}
// Get the window with the focus
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
Window xfocus = (Window) 0;
int revert = 0;
}
XFreeGC( xdisplay, xgc );
+
+ // Move Clients, but not the scrollbars
+ // FIXME: There may be a better method to move a lot of Windows within X11
+ wxScrollBar *sbH = ((wxWindow *) this)->GetScrollbar( wxHORIZONTAL );
+ wxScrollBar *sbV = ((wxWindow *) this)->GetScrollbar( wxVERTICAL );
+ wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
+ while ( node )
+ {
+ // Only propagate to non-top-level windows
+ wxWindow *win = node->GetData();
+ if ( win->GetParent() && win != sbH && win != sbV )
+ {
+ wxPoint pos = win->GetPosition();
+ // Add the delta to the old Position
+ pos.x += dx;
+ pos.y += dy;
+ win->SetPosition(pos);
+ }
+ node = node->GetNext();
+ }
}
// ---------------------------------------------------------------------------
}
}
-// For implementation purposes - sometimes decorations make the client area
-// smaller
-wxPoint wxWindowX11::GetClientAreaOrigin() const
-{
- return wxPoint(0, 0);
-}
-
void wxWindowX11::DoMoveWindow(int x, int y, int width, int height)
{
Window xwindow = (Window) m_mainWindow;
#endif
}
-void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH)
+void wxWindowX11::DoSetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH)
{
m_minWidth = minW;
m_minHeight = minH;
int wxWindowX11::GetCharHeight() const
{
- wxCHECK_MSG( m_font.Ok(), 0, wxT("valid window font needed") );
+ wxFont font(GetFont());
+ wxCHECK_MSG( font.Ok(), 0, wxT("valid window font needed") );
#if wxUSE_UNICODE
// There should be an easier way.
PangoLayout *layout = pango_layout_new( wxTheApp->GetPangoContext() );
- pango_layout_set_font_description( layout, GetFont().GetNativeFontInfo()->description );
+ pango_layout_set_font_description( layout, font.GetNativeFontInfo()->description );
pango_layout_set_text(layout, "H", 1 );
int w,h;
pango_layout_get_pixel_size(layout, &w, &h);
return h;
#else
- WXFontStructPtr pFontStruct = m_font.GetFontStruct(1.0, wxGlobalDisplay());
+ WXFontStructPtr pFontStruct = font.GetFontStruct(1.0, wxGlobalDisplay());
int direction, ascent, descent;
XCharStruct overall;
int wxWindowX11::GetCharWidth() const
{
- wxCHECK_MSG( m_font.Ok(), 0, wxT("valid window font needed") );
+ wxFont font(GetFont());
+ wxCHECK_MSG( font.Ok(), 0, wxT("valid window font needed") );
#if wxUSE_UNICODE
// There should be an easier way.
PangoLayout *layout = pango_layout_new( wxTheApp->GetPangoContext() );
- pango_layout_set_font_description( layout, GetFont().GetNativeFontInfo()->description );
+ pango_layout_set_font_description( layout, font.GetNativeFontInfo()->description );
pango_layout_set_text(layout, "H", 1 );
int w,h;
pango_layout_get_pixel_size(layout, &w, &h);
return w;
#else
- WXFontStructPtr pFontStruct = m_font.GetFontStruct(1.0, wxGlobalDisplay());
+ WXFontStructPtr pFontStruct = font.GetFontStruct(1.0, wxGlobalDisplay());
int direction, ascent, descent;
XCharStruct overall;
int *descent, int *externalLeading,
const wxFont *theFont) const
{
- wxFont fontToUse = m_font;
+ wxFont fontToUse = GetFont();
if (theFont) fontToUse = *theFont;
wxCHECK_RET( fontToUse.Ok(), wxT("invalid font") );
if ( win->GetParent() )
{
wxSysColourChangedEvent event2;
- event.m_eventObject = win;
+ event.SetEventObject(win);
win->GetEventHandler()->ProcessEvent(event2);
}