- virtual void Refresh( bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL );
- virtual void Clear();
-
- virtual wxRegion GetUpdateRegion() const;
- virtual bool IsExposed( int x, int y ) const;
- virtual bool IsExposed( int x, int y, int w, int h ) const;
- virtual bool IsExposed( const wxPoint& pt ) const;
- virtual bool IsExposed( const wxRect& rect ) const;
-
- virtual wxColour GetBackgroundColour() const;
- virtual void SetBackgroundColour( const wxColour &colour );
- virtual wxColour GetForegroundColour() const;
- virtual void SetForegroundColour( const wxColour &colour );
-
- virtual int GetCharHeight() const;
- virtual int GetCharWidth() const;
- virtual void GetTextExtent( const wxString& string, int *x, int *y,
- int *descent = (int *) NULL,
- int *externalLeading = (int *) NULL,
- const wxFont *theFont = (const wxFont *) NULL, bool use16 = FALSE) const;
-
- virtual void SetFont( const wxFont &font );
- virtual wxFont& GetFont() { return m_font; }
-
- // For backward compatibility
- inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); }
- inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); }
- inline virtual wxFont& GetLabelFont() { return GetFont(); };
- inline virtual wxFont& GetButtonFont() { return GetFont(); };
-
- virtual void SetWindowStyleFlag( long flag );
- virtual long GetWindowStyleFlag() const;
-
- virtual void CaptureMouse();
- virtual void ReleaseMouse();
-
- virtual void SetTitle( const wxString &title );
- virtual wxString GetTitle() const;
- virtual void SetName( const wxString &name );
- virtual wxString GetName() const;
- virtual wxString GetLabel() const;
-
- void OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) {};
- void OnKeyDown( wxKeyEvent &event );
-
- virtual bool IsShown() const;
-
- virtual void Raise();
- virtual void Lower();
-
- virtual bool IsRetained();
- virtual wxWindow *FindWindow( long id );
- virtual wxWindow *FindWindow( const wxString& name );
-
- void AllowDoubleClick( bool WXUNUSED(allow) ) {};
- void SetDoubleClick( bool WXUNUSED(allow) ) {};
-
- virtual void ClientToScreen( int *x, int *y );
- virtual void ScreenToClient( int *x, int *y );
-
- virtual bool Validate();
- virtual bool TransferDataToWindow();
- virtual bool TransferDataFromWindow();
- void OnInitDialog( wxInitDialogEvent &event );
- virtual void InitDialog();
-
- virtual bool PopupMenu( wxMenu *menu, int x, int y );
-
-#if wxUSE_DRAG_AND_DROP
- virtual void SetDropTarget( wxDropTarget *dropTarget );
- virtual wxDropTarget *GetDropTarget() const;
-#endif
-
- virtual void SetScrollbar( int orient, int pos, int thumbVisible,
- int range, bool refresh = TRUE );
- virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
- virtual int GetScrollPos( int orient ) const;
- virtual int GetScrollThumb( int orient ) const;
- virtual int GetScrollRange( int orient ) const;
- virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL );
-
- virtual bool AcceptsFocus() const;
-
- void UpdateWindowUI();
-
- // implementation
-
- virtual wxPoint GetClientAreaOrigin() const;
- virtual void AdjustForParentClientOrigin( int& x, int& y, int sizeFlags );
-
- bool HasVMT();
-
- virtual void OnInternalIdle();
-
- /* used by all classes in the widget creation process */
-
- void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos,
- const wxSize &size, long style, const wxString &name );
- void PostCreation();
-
- /* the methods below are required because many native widgets
- are composed of several subwidgets and setting a style for
- the widget means setting it for all subwidgets as well.
- also, it is nor clear, which native widget is the top
- widget where (most of) the input goes. even tooltips have
- to be applied to all subwidgets. */
-
- virtual GtkWidget* GetConnectWidget();
- virtual bool IsOwnGtkWindow( GdkWindow *window );
- void ConnectWidget( GtkWidget *widget );
-
- GtkStyle *GetWidgetStyle();
- void SetWidgetStyle();
- virtual void ApplyWidgetStyle();
+ // Call after modifing the value of m_hAdjust or m_vAdjust to bring the
+ // scrolbar in sync (this does not generate any wx events)
+ void GtkUpdateScrollbar(int orient);
+
+ // Called from GTK signal handlers. it indicates that
+ // the layouting functions have to be called later on
+ // (i.e. in idle time, implemented in OnInternalIdle() ).
+ void GtkUpdateSize() { m_sizeSet = false; }
+
+ // fix up the mouse event coords, used by wxListBox only so far
+ virtual void FixUpMouseEvent(GtkWidget * WXUNUSED(widget),
+ wxCoord& WXUNUSED(x),
+ wxCoord& WXUNUSED(y)) { }
+
+ // is this window transparent for the mouse events (as wxStaticBox is)?
+ virtual bool IsTransparentForMouse() const { return false; }
+
+ // is this a radiobutton (used by radiobutton code itself only)?
+ virtual bool IsRadioButton() const { return false; }
+
+ // position and size of the window
+ int m_x, m_y;
+ int m_width, m_height;
+ int m_oldClientWidth,m_oldClientHeight;
+
+ // see the docs in src/gtk/window.cpp
+ GtkWidget *m_widget; // mostly the widget seen by the rest of GTK
+ GtkWidget *m_wxwindow; // mostly the client area as per wxWidgets
+
+ // this widget will be queried for GTK's focus events
+ GtkWidget *m_focusWidget;
+
+ wxGtkIMData *m_imData;
+
+ // scrolling stuff
+ GtkAdjustment *m_hAdjust,*m_vAdjust;
+ float m_oldHorizontalPos;
+ float m_oldVerticalPos;
+
+ // extra (wxGTK-specific) flags
+ bool m_needParent:1; // ! wxFrame, wxDialog, wxNotebookPage ?
+ bool m_noExpose:1; // wxGLCanvas has its own redrawing
+ bool m_nativeSizeEvent:1; // wxGLCanvas sends wxSizeEvent upon "alloc_size"
+ bool m_hasScrolling:1;
+ bool m_hasVMT:1;
+ bool m_sizeSet:1;
+ bool m_resizing:1;
+ bool m_acceptsFocus:1; // true if not static
+ bool m_hasFocus:1; // true if == FindFocus()
+ bool m_isScrolling:1; // dragging scrollbar thumb?
+ bool m_clipPaintRegion:1; // true after ScrollWindow()
+ bool m_dirtyTabOrder:1; // tab order changed, GTK focus
+ // chain needs update
+ bool m_needsStyleChange:1; // May not be able to change
+ // background style until OnIdle
+
+ // 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;
+
+protected:
+ // implement the base class pure virtuals
+ virtual void DoClientToScreen( int *x, int *y ) const;
+ virtual void DoScreenToClient( int *x, int *y ) const;
+ virtual void DoGetPosition( int *x, int *y ) const;
+ virtual void DoGetSize( int *width, int *height ) const;
+ virtual void DoGetClientSize( int *width, int *height ) const;
+ virtual void DoSetSize(int x, int y,
+ int width, int height,
+ int sizeFlags = wxSIZE_AUTO);
+ virtual void DoSetClientSize(int width, int height);
+ virtual void DoMoveWindow(int x, int y, int width, int height);
+
+#if wxUSE_MENUS_NATIVE
+ virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
+#endif // wxUSE_MENUS_NATIVE
+
+ virtual void DoCaptureMouse();
+ virtual void DoReleaseMouse();