// implementation
// --------------
+ virtual WXWidget GetHandle() const { return m_widget; }
+
// wxWindows callbacks
void OnKeyDown( wxKeyEvent &event );
virtual bool IsOwnGtkWindow( GdkWindow *window );
void ConnectWidget( GtkWidget *widget );
+ // creates a new widget style if none is there
+ // and sets m_widgetStyle to this value.
GtkStyle *GetWidgetStyle();
+
+ // called by SetFont() and SetXXXColour etc
void SetWidgetStyle();
+
+ // overridden in many GTK widgets
virtual void ApplyWidgetStyle();
#if wxUSE_TOOLTIPS
virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
#endif // wxUSE_TOOLTIPS
- // called from GTK signales handlers
+ // called from GTK signales handlers. it indicates that
+ // the layouting functions have to be called later on
+ // (i.e. in idle time, implemented in OnInternalIdle() ).
void UpdateSize() { m_sizeSet = FALSE; }
- void InternalSetPosition(int x, int y) { m_x = x; m_y = y; }
- void InternalSetSize(int w, int h)
- { m_width = w; m_height = h; UpdateSize(); }
// position and size of the window
int m_x, m_y;
// scrolling stuff
GtkAdjustment *m_hAdjust,*m_vAdjust;
- float m_oldHorizontalPos,
- m_oldVerticalPos;
+ float m_oldHorizontalPos;
+ float m_oldVerticalPos;
+
+ // we need an extra XGC flag set to get exposed
+ // events from overlapping children upon moving
+ // them. this flag will be set in this GC and
+ // the GC will be used in wxWindow::ScrollWindow().
GdkGC *m_scrollGC;
// extra (wxGTK-specific) flags
bool m_isStaticBox:1; /* faster than IS_KIND_OF */
bool m_isFrame:1; /* faster than IS_KIND_OF */
bool m_acceptsFocus:1; /* ! wxStaticBox etc. */
-
+
+ // these are true if the style were set before the widget was realized
+ // (typcally in the constructor) but the actual GTK style must not be set
+ // before the widget has been "realized"
+ bool m_delayedFont:1;
+ bool m_delayedForegroundColour:1;
+ bool m_delayedBackgroundColour:1;
+ bool m_delayedCursor:1;
+
+ // contains GTK's widgets internal information about non-default widget
+ // font and colours. we create one for each widget that gets any
+ // non-default attribute set via SetFont() or SetForegroundColour() /
+ // SetBackgroundColour().
GtkStyle *m_widgetStyle;
+ // C++ has no virtual methods in the constrcutor of any class but we need
+ // different methods of inserting a child window into a wxFrame,
+ // wxMDIFrame, wxNotebook etc. this is the callback that will get used.
wxInsertChildFunction m_insertCallback;
// implement the base class pure virtuals