if ( parent )
parent->AddChild(this);
- // set colours
- SetupColours();
-
// translate wxWin style flags to MSW ones, checking for consistency while
// doing it
long msStyle = ES_LEFT | WS_VISIBLE | WS_CHILD | WS_TABSTOP;
}
#endif
+ // set colours
+ SetupColours();
+
SetSize(pos.x, pos.y, size.x, size.y);
return TRUE;
void wxTextCtrl::SetupColours()
{
- // FIXME why is bg colour not inherited from parent?
- SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
+ wxColour bkgndColour;
+ if (IsEditable() || (m_windowStyle & wxTE_MULTILINE))
+ bkgndColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW);
+ else
+ bkgndColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
+
+ SetBackgroundColour(bkgndColour);
SetForegroundColour(GetParent()->GetForegroundColour());
}
void wxTextCtrl::SetEditable(bool editable)
{
+ bool isEditable = IsEditable();
+
HWND hWnd = GetHwnd();
SendMessage(hWnd, EM_SETREADONLY, (WPARAM)!editable, (LPARAM)0L);
+
+ if (editable != isEditable)
+ {
+ SetupColours();
+ Refresh();
+ }
}
void wxTextCtrl::SetInsertionPoint(long pos)
// ourselves the fact that we got here means that the user code
// decided to skip processing of this TAB - probably to let it
// do its default job.
- //
- // NB: Notice that Ctrl-Tab is handled elsewhere and Alt-Tab is
- // handled by Windows
{
wxNavigationKeyEvent eventNav;
eventNav.SetDirection(!event.ShiftDown());
- eventNav.SetWindowChange(FALSE);
+ eventNav.SetWindowChange(event.ControlDown());
eventNav.SetEventObject(this);
- if ( GetEventHandler()->ProcessEvent(eventNav) )
+ if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
return;
}
break;
-
- default:
- event.Skip();
- return;
}
- // don't just call event.Skip() because this will cause TABs and ENTERs
- // be passed upwards and we don't always want this - instead process it
- // right here
-
- // FIXME
+ // no, we didn't process it
event.Skip();
}