/////////////////////////////////////////////////////////////////////////////
-// Name: combobox.cpp
+// Name: src/os2/combobox.cpp
// Purpose: wxComboBox class
// Author: David Webster
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#include "wx/combobox.h"
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
+#if wxUSE_COMBOBOX
+
+#include "wx/combobox.h"
+
#ifndef WX_PRECOMP
- #include "wx/setup.h"
#include "wx/settings.h"
#endif
-#if wxUSE_COMBOBOX
-
-#include "wx/combobox.h"
#include "wx/clipbrd.h"
#include "wx/os2/private.h"
IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
-bool wxComboBox::OS2Command(
- WXUINT uParam
-, WXWORD WXUNUSED(wId)
-)
+bool wxComboBox::OS2Command( WXUINT uParam, WXWORD WXUNUSED(wId) )
{
- long lSel = -1L;
- wxString sValue;
+ long lSel = GetSelection();
+ wxString sValue;
switch (uParam)
{
case CBN_LBSELECT:
- if (GetSelection() > -1)
+ if (lSel > -1)
{
- wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED
- ,GetId()
- );
+ wxCommandEvent vEvent( wxEVT_COMMAND_COMBOBOX_SELECTED, GetId() );
- vEvent.SetInt(GetSelection());
+ vEvent.SetInt(lSel);
vEvent.SetEventObject(this);
- vEvent.SetString((char*)GetStringSelection().c_str());
+ vEvent.SetString(GetStringSelection());
+
ProcessCommand(vEvent);
}
break;
case CBN_EFCHANGE:
{
- wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED
- ,GetId()
- );
+ wxCommandEvent vEvent( wxEVT_COMMAND_TEXT_UPDATED, GetId() );
if (lSel == -1L)
sValue = GetValue();
else
- SetValue(sValue);
- vEvent.SetString((char*)GetValue().c_str());
+ sValue = GetStringSelection();
+ vEvent.SetString(sValue);
vEvent.SetEventObject(this);
ProcessCommand(vEvent);
}
lSstyle |= CBS_DROPDOWN;
- if (!OS2CreateControl( "COMBOBOX"
+ if (!OS2CreateControl( _T("COMBOBOX")
,lSstyle
))
return false;
//
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
- SetFont(*wxSMALL_FONT);
-
- int i;
- for (i = 0; i < n; i++)
+ for (int i = 0; i < n; i++)
{
Append(asChoices[i]);
}
,rSize.x
,rSize.y
);
+
+ // Set height to use with sizers i.e. without the dropdown listbox
+ wxFont vFont = GetFont();
+ int nCx,nCy;
+ wxGetCharSize( GetHWND(), &nCx, &nCy, &vFont );
+ int nEditHeight = EDIT_HEIGHT_FROM_CHAR_HEIGHT(nCy);
+ SetBestFittingSize(wxSize(-1,nEditHeight));
+
if (!rsValue.empty())
{
SetValue(rsValue);
return true;
} // end of wxComboBox::Create
+wxString wxComboBox::GetValue() const
+{
+ return wxGetWindowText(GetHwnd());
+}
+
void wxComboBox::SetValue(
const wxString& rsValue
)
if ( HasFlag(wxCB_READONLY) )
SetStringSelection(rsValue);
else
- ::WinSetWindowText(GetHwnd(), rsValue.c_str());
+ ::WinSetWindowText(GetHwnd(), (PSZ)rsValue.c_str());
} // end of wxComboBox::SetValue
//
return lLineLength;
} // end of wxComboBox::GetLastPosition
-void wxComboBox::Replace(
- long lFrom
-, long lTo
-, const wxString& rsValue
-)
+void wxComboBox::Replace( long lFrom,
+ long lTo,
+ const wxString& rsValue )
{
#if wxUSE_CLIPBOARD
HWND hWnd = GetHwnd();
// Paste into edit control
//
::WinSendMsg(hWnd, EM_PASTE, (MPARAM)0, (MPARAM)0L);
+#else
+ wxUnusedVar(lFrom);
+ wxUnusedVar(lTo);
+ wxUnusedVar(rsValue);
#endif
} // end of wxComboBox::Replace
-void wxComboBox::Remove(
- long lFrom
-, long lTo
-)
+void wxComboBox::Remove( long lFrom, long lTo)
{
#if wxUSE_CLIPBOARD
HWND hWnd = GetHwnd();
::WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lFrom, (USHORT)lTo), 0);
::WinSendMsg(hWnd, EM_CUT, (MPARAM)0, (MPARAM)0);
+#else
+ wxUnusedVar(lFrom);
+ wxUnusedVar(lTo);
#endif
} // end of wxComboBox::Remove
-void wxComboBox::SetSelection(
- long lFrom
-, long lTo
-)
+void wxComboBox::SetSelection( long lFrom, long lTo )
{
- HWND hWnd = GetHwnd();
- long lFromChar = 0;
- long lToChar = 0;
+ HWND hWnd = GetHwnd();
+ long lFromChar = 0;
+ long lToChar = 0;
//
// If from and to are both -1, it means
);
} // end of wxComboBox::SetSelection
-void wxComboBox::DoSetSize(
- int nX
-, int nY
-, int nWidth
-, int nHeight
-, int nSizeFlags
-)
-{
- wxControl::DoSetSize( nX
- ,nY
- ,nWidth
- ,nHeight
- ,nSizeFlags
- );
-} // end of wxComboBox::DoSetSize
-
bool wxComboBox::ProcessEditMsg(
WXUINT uMsg
, WXWPARAM wParam
return(HandleSetFocus((WXHWND)(HWND)wParam));
else
return(HandleKillFocus((WXHWND)(HWND)wParam));
- break;
}
return false;
} // end of WinGuiBase_CComboBox::ProcessEditMsg
#endif
// wxUSE_COMBOBOX
-