m_search->SetFocus();
+#if wxUSE_MENUS
if ( m_eventType == wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN )
{
// this happens automatically, just like on Mac OS X
m_search->PopupSearchMenu();
}
+#endif // wxUSE_MENUS
}
void OnPaint(wxPaintEvent&)
void wxSearchCtrl::Init()
{
- m_text = 0;
- m_searchButton = 0;
- m_cancelButton = 0;
- m_menu = 0;
+ m_text = NULL;
+ m_searchButton = NULL;
+ m_cancelButton = NULL;
+#if wxUSE_MENUS
+ m_menu = NULL;
+#endif // wxUSE_MENUS
m_searchButtonVisible = true;
m_cancelButtonVisible = false;
- m_searchMenuBitmapUser = false;
m_searchBitmapUser = false;
m_cancelBitmapUser = false;
+#if wxUSE_MENUS
+ m_searchMenuBitmapUser = false;
+#endif // wxUSE_MENUS
}
bool wxSearchCtrl::Create(wxWindow *parent, wxWindowID id,
style &= ~wxBORDER_MASK;
#ifdef __WXGTK__
style |= wxBORDER_SUNKEN;
+#elif defined(__WXMSW__)
+ // Don't set the style explicitly, let GetDefaultBorder() work it out, unless
+ // we will get a sunken border (e.g. on Windows 200) in which case we must
+ // override with a simple border.
+ if (GetDefaultBorder() == wxBORDER_SUNKEN)
+ style |= wxBORDER_SIMPLE;
#else
style |= wxBORDER_SIMPLE;
#endif
m_text = new wxSearchTextCtrl(this, value, style & ~wxBORDER_MASK);
m_text->SetDescriptiveText(_("Search"));
- wxSize sizeText = m_text->GetBestSize();
-
m_searchButton = new wxSearchButton(this,
wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN,
m_searchBitmap);
delete m_text;
delete m_searchButton;
delete m_cancelButton;
+#if wxUSE_MENUS
delete m_menu;
+#endif // wxUSE_MENUS
}
// search control specific interfaces
+#if wxUSE_MENUS
+
void wxSearchCtrl::SetMenu( wxMenu* menu )
{
if ( menu == m_menu )
return m_menu;
}
+#endif // wxUSE_MENUS
+
void wxSearchCtrl::ShowSearchButton( bool show )
{
if ( m_searchButtonVisible == show )
wxSize sizeCancel(0,0);
int searchMargin = 0;
int cancelMargin = 0;
- if ( m_searchButtonVisible || m_menu )
+ if ( m_searchButtonVisible || HasMenu() )
{
sizeSearch = m_searchButton->GetBestSize();
searchMargin = MARGIN;
wxSize sizeCancel(0,0);
int searchMargin = 0;
int cancelMargin = 0;
- if ( m_searchButtonVisible || m_menu )
+ if ( m_searchButtonVisible || HasMenu() )
{
sizeSearch = m_searchButton->GetBestSize();
searchMargin = MARGIN;
sizeCancel = m_cancelButton->GetBestSize();
cancelMargin = MARGIN;
}
- m_searchButton->Show( m_searchButtonVisible || m_menu );
+ m_searchButton->Show( m_searchButtonVisible || HasMenu() );
m_cancelButton->Show( m_cancelButtonVisible );
if ( sizeSearch.x + sizeCancel.x > width )
searchMargin = 0;
cancelMargin = 0;
}
- wxCoord textWidth = width - sizeSearch.x - sizeCancel.x - searchMargin - cancelMargin;
+ wxCoord textWidth = width - sizeSearch.x - sizeCancel.x - searchMargin - cancelMargin - 1;
// position the subcontrols inside the client area
m_searchBitmapUser = bitmap.Ok();
if ( m_searchBitmapUser )
{
- if ( m_searchButton && !m_menu )
+ if ( m_searchButton && !HasMenu() )
{
m_searchButton->SetBitmapLabel( m_searchBitmap );
}
}
}
+#if wxUSE_MENUS
+
void wxSearchCtrl::SetSearchMenuBitmap( const wxBitmap& bitmap )
{
m_searchMenuBitmap = bitmap;
}
}
+#endif // wxUSE_MENUS
+
void wxSearchCtrl::SetCancelBitmap( const wxBitmap& bitmap )
{
m_cancelBitmap = bitmap;
)
{
m_searchBitmap = RenderSearchBitmap(bitmapWidth,bitmapHeight,false);
- if ( !m_menu )
+ if ( !HasMenu() )
{
m_searchButton->SetBitmapLabel(m_searchBitmap);
}
// else this bitmap was set by user, don't alter
}
+#if wxUSE_MENUS
if ( !m_searchMenuBitmapUser )
{
if (
}
// else this bitmap was set by user, don't alter
}
+#endif // wxUSE_MENUS
if ( !m_cancelBitmapUser )
{
m_cancelBitmap.GetWidth() != bitmapHeight
)
{
- m_cancelBitmap = RenderCancelBitmap(bitmapHeight-BORDER,bitmapHeight-BORDER); // square
+ m_cancelBitmap = RenderCancelBitmap(bitmapHeight-BORDER-1,bitmapHeight-BORDER-1); // square
m_cancelButton->SetBitmapLabel(m_cancelBitmap);
}
// else this bitmap was set by user, don't alter
LayoutControls(0, 0, width, height);
}
+#if wxUSE_MENUS
+
void wxSearchCtrl::PopupSearchMenu()
{
if ( m_menu )
}
}
+#endif // wxUSE_MENUS
+
#endif // !wxUSE_NATIVE_SEARCH_CONTROL
#endif // wxUSE_SEARCHCTRL