WX_DEFINE_EXPORTED_ARRAY_PTR(GdkWindow *, wxArrayGdkWindows);
-//-----------------------------------------------------------------------------
-// callback definition for inserting a window (internal)
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_CORE wxWindowGTK;
-typedef void (*wxInsertChildFunction)( wxWindowGTK*, wxWindowGTK* );
-
//-----------------------------------------------------------------------------
// wxWindowGTK
//-----------------------------------------------------------------------------
virtual void Lower();
virtual bool Show( bool show = true );
- virtual void DoEnable( bool enable );
virtual void SetWindowStyleFlag( long style );
virtual bool IsRetained() const;
virtual void SetFocus();
+ virtual void SetCanFocus(bool canFocus);
virtual bool Reparent( wxWindowBase *newParent );
static wxLayoutDirection GTKGetLayout(GtkWidget *widget);
static void GTKSetLayout(GtkWidget *widget, wxLayoutDirection dir);
+ // return true if this window must have a non-NULL parent, false if it can
+ // be created without parent (normally only top level windows but in wxGTK
+ // there is also the exception of wxMenuBar)
+ virtual bool GTKNeedsParent() const { return !IsTopLevel(); }
+
protected:
// Override GTKWidgetNeedsMnemonic and return true if your
// needs to set its mnemonic widget, such as for a
virtual void ApplyToolTip( GtkTooltips *tips, const wxChar *tip );
#endif // wxUSE_TOOLTIPS
- // 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; }
-
-
// Called when a window should delay showing itself
// until idle time. This partly mimmicks defered
// sizing under MSW.
GtkWidget *m_widget; // mostly the widget seen by the rest of GTK
GtkWidget *m_wxwindow; // mostly the client area as per wxWidgets
+ // return true if the window is of a standard (i.e. not wxWidgets') class
+ bool IsOfStandardClass() const { return m_wxwindow == NULL; }
+
// this widget will be queried for GTK's focus events
GtkWidget *m_focusWidget;
// 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_hasFocus:1; // true if == FindFocus()
bool m_isScrolling:1; // dragging scrollbar thumb?
bool m_showOnIdle:1; // postpone showing the window until idle
+protected:
// 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;
+ typedef void (*InsertChildFunction)(wxWindowGTK*, wxWindowGTK*);
+ InsertChildFunction 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;
int sizeFlags = wxSIZE_AUTO);
virtual void DoSetClientSize(int width, int height);
virtual void DoMoveWindow(int x, int y, int width, int height);
+ virtual void DoEnable(bool enable);
#if wxUSE_MENUS_NATIVE
virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
void Init();
virtual void DoMoveInTabOrder(wxWindow *win, MoveKind move);
+ virtual bool DoNavigateIn(int flags);
+
// Copies m_children tab order to GTK focus chain:
void RealizeTabOrder();
// should be called from OnInternalIdle() if it's overridden
void GTKUpdateCursor();
+ void ConstrainSize();
+
private:
enum ScrollUnit { ScrollUnit_Line, ScrollUnit_Page, ScrollUnit_Max };