+void wxTextCtrl::ChangeBackgroundColour()
+{
+ wxWindow::ChangeBackgroundColour();
+
+ /* TODO: should scrollbars be affected? Should probably have separate
+ * function to change them (by default, taken from wxSystemSettings)
+ */
+ if (m_windowStyle & wxTE_MULTILINE)
+ {
+ Widget parent = XtParent ((Widget) m_mainWidget);
+ Widget hsb, vsb;
+
+ XtVaGetValues (parent,
+ XmNhorizontalScrollBar, &hsb,
+ XmNverticalScrollBar, &vsb,
+ NULL);
+ wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
+ if (hsb)
+ DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE);
+ if (vsb)
+ DoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE);
+
+ DoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, TRUE);
+ }
+}
+
+void wxTextCtrl::ChangeForegroundColour()
+{
+ wxWindow::ChangeForegroundColour();
+
+ if (m_windowStyle & wxTE_MULTILINE)
+ {
+ Widget parent = XtParent ((Widget) m_mainWidget);
+ Widget hsb, vsb;
+
+ XtVaGetValues (parent,
+ XmNhorizontalScrollBar, &hsb,
+ XmNverticalScrollBar, &vsb,
+ NULL);
+
+ /* TODO: should scrollbars be affected? Should probably have separate
+ * function to change them (by default, taken from wxSystemSettings)
+ if (hsb)
+ DoChangeForegroundColour((WXWidget) hsb, m_foregroundColour);
+ if (vsb)
+ DoChangeForegroundColour((WXWidget) vsb, m_foregroundColour);
+ */
+ DoChangeForegroundColour((WXWidget) parent, m_foregroundColour);
+ }
+}
+
+static void wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer ptr)
+{
+ if (!wxGetWindowFromTable(w))
+ // Widget has been deleted!
+ return;
+
+ wxTextCtrl *tw = (wxTextCtrl *) clientData;
+ tw->SetModified(TRUE);