#pragma hdrstop
#endif
-#if wxUSE_CHOICE
+#if wxUSE_CHOICE && !defined(__SMARTPHONE__)
#ifndef WX_PRECOMP
#include "wx/choice.h"
{
// initialize wxControl
if ( !CreateControl(parent, id, pos, size, style, validator, name) )
- return FALSE;
+ return false;
// now create the real HWND
if ( !MSWCreateControl(wxT("COMBOBOX"), _T(""), pos, size) )
- return FALSE;
+ return false;
// choice/combobox normally has "white" (depends on colour scheme, of
// and now we may finally size the control properly (if needed)
SetBestSize(size);
- return TRUE;
+ return true;
}
bool wxChoice::Create(wxWindow *parent,
{
MSG *msg = (MSG *) pMsg;
- // don't preprocess "ESC" if combobox is dropped down
- if ( msg->message == WM_KEYDOWN && msg->wParam == VK_ESCAPE )
+ // if the dropdown list is visible, don't preprocess certain keys
+ if ( msg->message == WM_KEYDOWN
+ && (msg->wParam == VK_ESCAPE || msg->wParam == VK_RETURN) )
{
if (::SendMessage(GetHwndOf(this), CB_GETDROPPEDSTATE, 0, 0))
{
{
// we need to refresh our size in order to have enough space for the
// newly added items
- UpdateVisibleHeight();
+ if ( !IsFrozen() )
+ UpdateVisibleHeight();
}
return n;
}
else // ok
{
- UpdateVisibleHeight();
+ if ( !IsFrozen() )
+ UpdateVisibleHeight();
}
return n;
SendMessage(GetHwnd(), CB_DELETESTRING, n, 0);
- UpdateVisibleHeight();
+ if ( !IsFrozen() )
+ UpdateVisibleHeight();
}
void wxChoice::Clear()
SendMessage(GetHwnd(), CB_RESETCONTENT, 0, 0);
- UpdateVisibleHeight();
+ if ( !IsFrozen() )
+ UpdateVisibleHeight();
}
void wxChoice::Free()
for ( int i = 0; i < count; i++ )
{
// as CB_FINDSTRINGEXACT is case insensitive, be case insensitive too
- if ( GetString(i).IsSameAs(s, FALSE) )
+ if ( GetString(i).IsSameAs(s, false) )
return i;
}
void wxChoice::UpdateVisibleHeight()
{
// be careful to not change the width here
- DoSetSize(-1, -1, -1, GetSize().y, wxSIZE_USE_EXISTING);
+ DoSetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, GetSize().y, wxSIZE_USE_EXISTING);
}
void wxChoice::DoMoveWindow(int x, int y, int width, int height)
// total height of the control including the drop down list -- but only
// sometimes, and normally it isn't... I have no idea about what to do with
// this
- wxControl::DoGetSize(w, h);
+ wxControl::DoGetSize(w, h);
}
void wxChoice::DoSetSize(int x, int y,
// the height which we must pass to Windows should be the total height of
// the control including the drop down list while the height given to us
// is, of course, just the height of the permanently visible part of it
- if ( height != -1 )
+ if ( height != wxDefaultCoord )
{
// don't make the drop down list too tall, arbitrarily limit it to 40
// items max and also don't leave it empty
size_t nItems = GetCount();
if ( !nItems )
nItems = 9;
- else if ( nItems > 39 )
- nItems = 39;
+ else if ( nItems > 24 )
+ nItems = 24;
// add space for the drop down list
const int hItem = SendMessage(GetHwnd(), CB_GETITEMHEIGHT, 0, 0);
// if the height specified for the visible part of the control is
// different from the current one, we need to change it separately
// as it is not affected by normal WM_SETSIZE
- if ( height != -1 )
+ if ( height != wxDefaultCoord )
{
const int delta = heightOrig - GetSize().y;
if ( delta )
SendMessage(GetHwnd(), CB_SETITEMHEIGHT, (WPARAM)-1, h + delta);
}
}
+#else
+ wxUnusedVar(heightOrig);
#endif
}
if ( param != CBN_SELCHANGE)
{
// "selection changed" is the only event we're after
- return FALSE;
+ return false;
}
int n = GetSelection();
ProcessCommand(event);
}
- return TRUE;
+ return true;
}
WXHBRUSH wxChoice::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSED(nCtlColor),
return (WXHBRUSH)brush->GetResourceHandle();
}
-#endif // wxUSE_CHOICE
+#endif // wxUSE_CHOICE && !__SMARTPHONE__