#ifndef WX_PRECOMP
#include "wx/textctrl.h"
+ #include "wx/scrolwin.h"
#include "wx/settings.h"
#include "wx/brush.h"
#include "wx/utils.h"
# include <fstream>
#endif
-#if defined(__EMX__) && !defined(MLE_INDEX)
+#if !defined(MLE_INDEX)
#define MLE_INDEX 0
#define MLE_RGB 1
#endif
, const wxString& rsName
)
{
+ HWND hParent;
+ int nTempy;
//
// Base initialization
//
if (pParent )
{
pParent->AddChild(this);
+ hParent = GetWinHwnd(pParent);
//
// OS2 uses normal coordinates, no bassackwards Windows ones
//
-// vPos.y = pParent->GetSize().y - (vPos.y + rSize.y);
+ if (pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) ||
+ pParent->IsKindOf(CLASSINFO(wxScrolledWindow))
+ )
+ {
+ wxWindow* pGrandParent = NULL;
+
+ pGrandParent = pParent->GetParent();
+ if (pGrandParent)
+ nTempy = pGrandParent->GetSize().y - (vPos.y + rSize.y);
+ else
+ nTempy = pParent->GetSize().y - (vPos.y + rSize.y);
+ }
+ else
+ nTempy = pParent->GetSize().y - (vPos.y + rSize.y);
+ vPos.y = nTempy;
}
else
{
RECTL vRect;
::WinQueryWindowRect(HWND_DESKTOP, &vRect);
-// vPos.y = vRect.yTop - (vPos.y + rSize.y);
+ hParent = HWND_DESKTOP;
+ vPos.y = vRect.yTop - (vPos.y + rSize.y);
}
m_windowStyle = lStyle;
//
if ( m_windowStyle & wxTE_MULTILINE )
{
+ lSstyle |= MLS_BORDER | MLS_WORDWRAP;
m_bIsMLE = TRUE;
- m_windowStyle |= wxTE_PROCESS_ENTER;
if ((m_windowStyle & wxTE_NO_VSCROLL) == 0)
lSstyle |= MLS_VSCROLL;
}
else
{
- lSstyle |= ES_LEFT;
+ lSstyle |= ES_LEFT | ES_AUTOSCROLL | ES_MARGIN;
if (m_windowStyle & wxHSCROLL)
lSstyle |= ES_AUTOSCROLL;
if (m_windowStyle & wxTE_PASSWORD) // hidden input
lSstyle |= ES_UNREADABLE;
}
+ if ( pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) ||
+ pParent->IsKindOf(CLASSINFO(wxScrolledWindow))
+ )
+ lSstyle |= WS_CLIPSIBLINGS;
if (m_bIsMLE)
{
m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
SetValue(rsValue);
}
SetupColours();
- SetSize( rPos.x
- ,rPos.y
+ SetSize( vPos.x
+ ,vPos.y
,rSize.x
,rSize.y
);
vBkgndColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW);
SetBackgroundColour(vBkgndColour);
SetForegroundColour(GetParent()->GetForegroundColour());
+ if (m_bIsMLE)
+ {
+ ::WinSendMsg( GetHwnd()
+ ,MLM_SETTEXTCOLOR
+ ,(MPARAM)GetParent()->GetForegroundColour().GetPixel()
+ ,(MPARAM)MLE_RGB
+ );
+ }
} // end of wxTextCtrl::SetupColours
// ----------------------------------------------------------------------------
wxGetCharSize(GetHWND(), &nCx, &nCy, (wxFont*)&GetFont());
int wText = DEFAULT_ITEM_WIDTH;
- int hText = EDIT_HEIGHT_FROM_CHAR_HEIGHT(nCy);
+ int hText = (EDIT_HEIGHT_FROM_CHAR_HEIGHT(nCy) * .8);
if (m_windowStyle & wxTE_MULTILINE)
{
return TRUE;
} // end of wxTextCtrl::SetForegroundColour
+bool wxTextCtrl::SetStyle(
+ long lStart
+, long lEnd
+, const wxTextAttr& rStyle
+)
+{
+ HWND hWnd = GetHwnd();
+
+ if (lStart > lEnd)
+ {
+ long lTmp = lStart;
+
+ lStart = lEnd;
+ lEnd = lTmp;
+ }
+
+ //
+ // We can only change the format of the selection, so select the range we
+ // want and restore the old selection later
+ //
+ long lStartOld;
+ long lEndOld;
+
+ GetSelection( &lStartOld
+ ,&lEndOld
+ );
+
+ //
+ // But do we really have to change the selection?
+ //
+ bool bChangeSel = lStart != lStartOld ||
+ lEnd != lEndOld;
+
+ if (bChangeSel)
+ {
+ if (m_bIsMLE)
+ ::WinSendMsg(hWnd, MLM_SETSEL, MPFROM2SHORT((USHORT)lStart, (USHORT)lEnd), 0);
+ else
+ ::WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lStart, (USHORT)lEnd), 0);
+ }
+
+ //
+ // TODO:: finish this part
+ //
+ return TRUE;
+} // end of wxTextCtrl::SetStyle
+