+#ifdef __WXGTK20__
+ void SetUpdateFont(bool WXUNUSED(update)) { }
+#else // !__WXGTK20__
+ void SetUpdateFont(bool update) { m_updateFont = update; }
+ void UpdateFontIfNeeded();
+#endif // __WXGTK20__/!__WXGTK20__
+
+ void SetModified() { m_modified = true; }
+
+ // GTK+ textctrl is so dumb that you need to freeze/thaw it manually to
+ // avoid horrible flicker/scrolling back and forth
+ virtual void Freeze();
+ virtual void Thaw();
+
+ // textctrl specific scrolling
+ virtual bool ScrollLines(int lines);
+ virtual bool ScrollPages(int pages);
+
+ // implementation only from now on
+
+ // wxGTK-specific: called recursively by Enable,
+ // to give widgets an oppprtunity to correct their colours after they
+ // have been changed by Enable
+ virtual void OnParentEnable( bool enable ) ;
+
+ // tell the control to ignore next text changed signal
+ void IgnoreNextTextUpdate();
+
+ // should we ignore the changed signal? always resets the flag
+ bool IgnoreTextUpdate();
+
+ static wxVisualAttributes
+ GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
+protected:
+ virtual wxSize DoGetBestSize() const;
+
+ // common part of all ctors
+ void Init();
+
+ // get the vertical adjustment, if any, NULL otherwise
+ GtkAdjustment *GetVAdj() const;
+
+ // scroll the control by the given number of pixels, return true if the
+ // scroll position changed
+ bool DoScroll(GtkAdjustment *adj, int diff);
+
+ // Widgets that use the style->base colour for the BG colour should
+ // override this and return true.
+ virtual bool UseGTKStyleBase() const { return true; }
+
+#ifdef __WXGTK20__
+ // has the control been frozen by Freeze()?
+ bool IsFrozen() const { return m_frozenness > 0; }
+#endif