fix compilation in wxUSE_MENUS==0 case to fix wxDFB build [backport from HEAD]

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45828 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-05-05 14:51:51 +00:00
parent aec0c095e4
commit 762b9d2f34
3 changed files with 79 additions and 32 deletions

View File

@@ -47,10 +47,12 @@ public:
const wxValidator& validator = wxDefaultValidator, const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSearchCtrlNameStr); const wxString& name = wxSearchCtrlNameStr);
#if wxUSE_MENUS
// get/set search button menu // get/set search button menu
// -------------------------- // --------------------------
virtual void SetMenu( wxMenu* menu ); virtual void SetMenu( wxMenu* menu );
virtual wxMenu* GetMenu(); virtual wxMenu* GetMenu();
#endif // wxUSE_MENUS
// get/set search options // get/set search options
// ---------------------- // ----------------------
@@ -197,8 +199,10 @@ public:
// search control generic only // search control generic only
void SetSearchBitmap( const wxBitmap& bitmap ); void SetSearchBitmap( const wxBitmap& bitmap );
void SetSearchMenuBitmap( const wxBitmap& bitmap );
void SetCancelBitmap( const wxBitmap& bitmap ); void SetCancelBitmap( const wxBitmap& bitmap );
#if wxUSE_MENUS
void SetSearchMenuBitmap( const wxBitmap& bitmap );
#endif // wxUSE_MENUS
protected: protected:
virtual void DoSetValue(const wxString& value, int flags = 0); virtual void DoSetValue(const wxString& value, int flags = 0);
@@ -219,27 +223,46 @@ protected:
void OnSetFocus( wxFocusEvent& event ); void OnSetFocus( wxFocusEvent& event );
void OnSize( wxSizeEvent& event ); void OnSize( wxSizeEvent& event );
bool HasMenu() const
{
#if wxUSE_MENUS
return m_menu != NULL;
#else // !wxUSE_MENUS
return false;
#endif // wxUSE_MENUS/!wxUSE_MENUS
}
private: private:
friend class wxSearchButton; friend class wxSearchButton;
#if wxUSE_MENUS
void PopupSearchMenu(); void PopupSearchMenu();
#endif // wxUSE_MENUS
// the subcontrols // the subcontrols
wxSearchTextCtrl *m_text; wxSearchTextCtrl *m_text;
wxSearchButton *m_searchButton; wxSearchButton *m_searchButton;
wxSearchButton *m_cancelButton; wxSearchButton *m_cancelButton;
#if wxUSE_MENUS
wxMenu *m_menu; wxMenu *m_menu;
#endif // wxUSE_MENUS
bool m_searchButtonVisible; bool m_searchButtonVisible;
bool m_cancelButtonVisible; bool m_cancelButtonVisible;
bool m_searchBitmapUser; bool m_searchBitmapUser;
bool m_searchMenuBitmapUser;
bool m_cancelBitmapUser; bool m_cancelBitmapUser;
#if wxUSE_MENUS
bool m_searchMenuBitmapUser;
#endif // wxUSE_MENUS
wxBitmap m_searchBitmap; wxBitmap m_searchBitmap;
wxBitmap m_searchMenuBitmap;
wxBitmap m_cancelBitmap; wxBitmap m_cancelBitmap;
#if wxUSE_MENUS
wxBitmap m_searchMenuBitmap;
#endif // wxUSE_MENUS
private: private:
DECLARE_DYNAMIC_CLASS(wxSearchCtrl) DECLARE_DYNAMIC_CLASS(wxSearchCtrl)

View File

@@ -52,9 +52,11 @@ public:
wxSearchCtrlBase() { } wxSearchCtrlBase() { }
virtual ~wxSearchCtrlBase() { } virtual ~wxSearchCtrlBase() { }
// search control // search control
#if wxUSE_MENUS
virtual void SetMenu(wxMenu *menu) = 0; virtual void SetMenu(wxMenu *menu) = 0;
virtual wxMenu *GetMenu() = 0; virtual wxMenu *GetMenu() = 0;
#endif // wxUSE_MENUS
// get/set options // get/set options
virtual void ShowSearchButton( bool show ) = 0; virtual void ShowSearchButton( bool show ) = 0;

View File

@@ -68,17 +68,17 @@ static wxColor wxStepColour(const wxColor& c, int ialpha)
{ {
if (ialpha == 100) if (ialpha == 100)
return c; return c;
double r = c.Red(), g = c.Green(), b = c.Blue(); double r = c.Red(), g = c.Green(), b = c.Blue();
double bg; double bg;
// ialpha is 0..200 where 0 is completely black // ialpha is 0..200 where 0 is completely black
// and 200 is completely white and 100 is the same // and 200 is completely white and 100 is the same
// convert that to normal alpha 0.0 - 1.0 // convert that to normal alpha 0.0 - 1.0
ialpha = wxMin(ialpha, 200); ialpha = wxMin(ialpha, 200);
ialpha = wxMax(ialpha, 0); ialpha = wxMax(ialpha, 0);
double alpha = ((double)(ialpha - 100.0))/100.0; double alpha = ((double)(ialpha - 100.0))/100.0;
if (ialpha > 100) if (ialpha > 100)
{ {
// blend with white // blend with white
@@ -91,11 +91,11 @@ static wxColor wxStepColour(const wxColor& c, int ialpha)
bg = 0.0; bg = 0.0;
alpha = 1.0 + alpha; // 0 = transparent fg; 1 = opaque fg alpha = 1.0 + alpha; // 0 = transparent fg; 1 = opaque fg
} }
r = wxBlendColour(r, bg, alpha); r = wxBlendColour(r, bg, alpha);
g = wxBlendColour(g, bg, alpha); g = wxBlendColour(g, bg, alpha);
b = wxBlendColour(b, bg, alpha); b = wxBlendColour(b, bg, alpha);
return wxColour((unsigned char)r, (unsigned char)g, (unsigned char)b); return wxColour((unsigned char)r, (unsigned char)g, (unsigned char)b);
} }
@@ -114,7 +114,7 @@ public:
{ {
m_search = search; m_search = search;
m_defaultFG = GetForegroundColour(); m_defaultFG = GetForegroundColour();
// remove the default minsize, the searchctrl will have one instead // remove the default minsize, the searchctrl will have one instead
SetSizeHints(wxDefaultCoord,wxDefaultCoord); SetSizeHints(wxDefaultCoord,wxDefaultCoord);
} }
@@ -125,15 +125,15 @@ public:
{ {
ChangeValue(wxEmptyString); ChangeValue(wxEmptyString);
} }
m_descriptiveText = text; m_descriptiveText = text;
} }
wxString GetDescriptiveText() const wxString GetDescriptiveText() const
{ {
return m_descriptiveText; return m_descriptiveText;
} }
protected: protected:
void OnText(wxCommandEvent& eventText) void OnText(wxCommandEvent& eventText)
{ {
@@ -178,12 +178,12 @@ protected:
SetForegroundColour(m_defaultFG); SetForegroundColour(m_defaultFG);
} }
} }
private: private:
wxSearchCtrl* m_search; wxSearchCtrl* m_search;
wxString m_descriptiveText; wxString m_descriptiveText;
wxColour m_defaultFG; wxColour m_defaultFG;
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
@@ -228,11 +228,13 @@ protected:
m_search->SetFocus(); m_search->SetFocus();
#if wxUSE_MENUS
if ( m_eventType == wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN ) if ( m_eventType == wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN )
{ {
// this happens automatically, just like on Mac OS X // this happens automatically, just like on Mac OS X
m_search->PopupSearchMenu(); m_search->PopupSearchMenu();
} }
#endif // wxUSE_MENUS
} }
void OnPaint(wxPaintEvent&) void OnPaint(wxPaintEvent&)
@@ -294,17 +296,21 @@ wxSearchCtrl::wxSearchCtrl(wxWindow *parent, wxWindowID id,
void wxSearchCtrl::Init() void wxSearchCtrl::Init()
{ {
m_text = 0; m_text = NULL;
m_searchButton = 0; m_searchButton = NULL;
m_cancelButton = 0; m_cancelButton = NULL;
m_menu = 0; #if wxUSE_MENUS
m_menu = NULL;
#endif // wxUSE_MENUS
m_searchButtonVisible = true; m_searchButtonVisible = true;
m_cancelButtonVisible = false; m_cancelButtonVisible = false;
m_searchMenuBitmapUser = false;
m_searchBitmapUser = false; m_searchBitmapUser = false;
m_cancelBitmapUser = false; m_cancelBitmapUser = false;
#if wxUSE_MENUS
m_searchMenuBitmapUser = false;
#endif // wxUSE_MENUS
} }
bool wxSearchCtrl::Create(wxWindow *parent, wxWindowID id, bool wxSearchCtrl::Create(wxWindow *parent, wxWindowID id,
@@ -326,7 +332,7 @@ bool wxSearchCtrl::Create(wxWindow *parent, wxWindowID id,
m_text = new wxSearchTextCtrl(this, value, style & ~wxBORDER_MASK); m_text = new wxSearchTextCtrl(this, value, style & ~wxBORDER_MASK);
m_text->SetDescriptiveText(_("Search")); m_text->SetDescriptiveText(_("Search"));
wxSize sizeText = m_text->GetBestSize(); wxSize sizeText = m_text->GetBestSize();
m_searchButton = new wxSearchButton(this,wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN,m_searchBitmap); m_searchButton = new wxSearchButton(this,wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN,m_searchBitmap);
@@ -352,11 +358,15 @@ wxSearchCtrl::~wxSearchCtrl()
delete m_text; delete m_text;
delete m_searchButton; delete m_searchButton;
delete m_cancelButton; delete m_cancelButton;
#if wxUSE_MENUS
delete m_menu; delete m_menu;
#endif // wxUSE_MENUS
} }
// search control specific interfaces // search control specific interfaces
#if wxUSE_MENUS
void wxSearchCtrl::SetMenu( wxMenu* menu ) void wxSearchCtrl::SetMenu( wxMenu* menu )
{ {
if ( menu == m_menu ) if ( menu == m_menu )
@@ -382,7 +392,7 @@ void wxSearchCtrl::SetMenu( wxMenu* menu )
} }
} }
wxRect rect = GetRect(); wxRect rect = GetRect();
LayoutControls(0, 0, rect.GetWidth(), rect.GetHeight()); LayoutControls(0, 0, rect.GetWidth(), rect.GetHeight());
} }
wxMenu* wxSearchCtrl::GetMenu() wxMenu* wxSearchCtrl::GetMenu()
@@ -390,6 +400,8 @@ wxMenu* wxSearchCtrl::GetMenu()
return m_menu; return m_menu;
} }
#endif // wxUSE_MENUS
void wxSearchCtrl::ShowSearchButton( bool show ) void wxSearchCtrl::ShowSearchButton( bool show )
{ {
if ( m_searchButtonVisible == show ) if ( m_searchButtonVisible == show )
@@ -452,7 +464,7 @@ wxSize wxSearchCtrl::DoGetBestSize() const
wxSize sizeCancel(0,0); wxSize sizeCancel(0,0);
int searchMargin = 0; int searchMargin = 0;
int cancelMargin = 0; int cancelMargin = 0;
if ( m_searchButtonVisible || m_menu ) if ( m_searchButtonVisible || HasMenu() )
{ {
sizeSearch = m_searchButton->GetBestSize(); sizeSearch = m_searchButton->GetBestSize();
searchMargin = MARGIN; searchMargin = MARGIN;
@@ -482,7 +494,7 @@ void wxSearchCtrl::LayoutControls(int x, int y, int width, int height)
{ {
if ( !m_text ) if ( !m_text )
return; return;
wxSize sizeText = m_text->GetBestSize(); wxSize sizeText = m_text->GetBestSize();
// make room for the search menu & clear button // make room for the search menu & clear button
int horizontalBorder = ( sizeText.y - sizeText.y * 14 / 21 ) / 2; int horizontalBorder = ( sizeText.y - sizeText.y * 14 / 21 ) / 2;
@@ -495,7 +507,7 @@ void wxSearchCtrl::LayoutControls(int x, int y, int width, int height)
wxSize sizeCancel(0,0); wxSize sizeCancel(0,0);
int searchMargin = 0; int searchMargin = 0;
int cancelMargin = 0; int cancelMargin = 0;
if ( m_searchButtonVisible || m_menu ) if ( m_searchButtonVisible || HasMenu() )
{ {
sizeSearch = m_searchButton->GetBestSize(); sizeSearch = m_searchButton->GetBestSize();
searchMargin = MARGIN; searchMargin = MARGIN;
@@ -505,7 +517,7 @@ void wxSearchCtrl::LayoutControls(int x, int y, int width, int height)
sizeCancel = m_cancelButton->GetBestSize(); sizeCancel = m_cancelButton->GetBestSize();
cancelMargin = MARGIN; cancelMargin = MARGIN;
} }
m_searchButton->Show( m_searchButtonVisible || m_menu ); m_searchButton->Show( m_searchButtonVisible || HasMenu() );
m_cancelButton->Show( m_cancelButtonVisible ); m_cancelButton->Show( m_cancelButtonVisible );
if ( sizeSearch.x + sizeCancel.x > width ) if ( sizeSearch.x + sizeCancel.x > width )
@@ -520,9 +532,9 @@ void wxSearchCtrl::LayoutControls(int x, int y, int width, int height)
// position the subcontrols inside the client area // position the subcontrols inside the client area
m_searchButton->SetSize(x, y + ICON_OFFSET - 1, sizeSearch.x, height); m_searchButton->SetSize(x, y + ICON_OFFSET - 1, sizeSearch.x, height);
m_text->SetSize( x + sizeSearch.x + searchMargin, m_text->SetSize( x + sizeSearch.x + searchMargin,
y + ICON_OFFSET - BORDER, y + ICON_OFFSET - BORDER,
textWidth, textWidth,
height); height);
m_cancelButton->SetSize(x + sizeSearch.x + searchMargin + textWidth + cancelMargin, m_cancelButton->SetSize(x + sizeSearch.x + searchMargin + textWidth + cancelMargin,
y + ICON_OFFSET - 1, sizeCancel.x, height); y + ICON_OFFSET - 1, sizeCancel.x, height);
@@ -803,7 +815,7 @@ void wxSearchCtrl::SetSearchBitmap( const wxBitmap& bitmap )
m_searchBitmapUser = bitmap.Ok(); m_searchBitmapUser = bitmap.Ok();
if ( m_searchBitmapUser ) if ( m_searchBitmapUser )
{ {
if ( m_searchButton && !m_menu ) if ( m_searchButton && !HasMenu() )
{ {
m_searchButton->SetBitmapLabel( m_searchBitmap ); m_searchButton->SetBitmapLabel( m_searchBitmap );
} }
@@ -815,6 +827,8 @@ void wxSearchCtrl::SetSearchBitmap( const wxBitmap& bitmap )
} }
} }
#if wxUSE_MENUS
void wxSearchCtrl::SetSearchMenuBitmap( const wxBitmap& bitmap ) void wxSearchCtrl::SetSearchMenuBitmap( const wxBitmap& bitmap )
{ {
m_searchMenuBitmap = bitmap; m_searchMenuBitmap = bitmap;
@@ -833,6 +847,8 @@ void wxSearchCtrl::SetSearchMenuBitmap( const wxBitmap& bitmap )
} }
} }
#endif // wxUSE_MENUS
void wxSearchCtrl::SetCancelBitmap( const wxBitmap& bitmap ) void wxSearchCtrl::SetCancelBitmap( const wxBitmap& bitmap )
{ {
m_cancelBitmap = bitmap; m_cancelBitmap = bitmap;
@@ -989,7 +1005,7 @@ wxBitmap wxSearchCtrl::RenderSearchBitmap( int x, int y, bool renderDrop )
mem.DrawPolygon(WXSIZEOF(dropPolygon),dropPolygon,multiplier*triangleX,multiplier*triangleY); mem.DrawPolygon(WXSIZEOF(dropPolygon),dropPolygon,multiplier*triangleX,multiplier*triangleY);
} }
mem.SelectObject(wxNullBitmap); mem.SelectObject(wxNullBitmap);
//=============================================================================== //===============================================================================
// end drawing code // end drawing code
//=============================================================================== //===============================================================================
@@ -1114,7 +1130,7 @@ void wxSearchCtrl::RecalcBitmaps()
) )
{ {
m_searchBitmap = RenderSearchBitmap(bitmapWidth,bitmapHeight,false); m_searchBitmap = RenderSearchBitmap(bitmapWidth,bitmapHeight,false);
if ( !m_menu ) if ( !HasMenu() )
{ {
m_searchButton->SetBitmapLabel(m_searchBitmap); m_searchButton->SetBitmapLabel(m_searchBitmap);
} }
@@ -1122,6 +1138,7 @@ void wxSearchCtrl::RecalcBitmaps()
// else this bitmap was set by user, don't alter // else this bitmap was set by user, don't alter
} }
#if wxUSE_MENUS
if ( !m_searchMenuBitmapUser ) if ( !m_searchMenuBitmapUser )
{ {
if ( if (
@@ -1138,6 +1155,7 @@ void wxSearchCtrl::RecalcBitmaps()
} }
// else this bitmap was set by user, don't alter // else this bitmap was set by user, don't alter
} }
#endif // wxUSE_MENUS
if ( !m_cancelBitmapUser ) if ( !m_cancelBitmapUser )
{ {
@@ -1174,6 +1192,8 @@ void wxSearchCtrl::OnSize( wxSizeEvent& WXUNUSED(event) )
LayoutControls(0, 0, width, height); LayoutControls(0, 0, width, height);
} }
#if wxUSE_MENUS
void wxSearchCtrl::PopupSearchMenu() void wxSearchCtrl::PopupSearchMenu()
{ {
if ( m_menu ) if ( m_menu )
@@ -1183,6 +1203,8 @@ void wxSearchCtrl::PopupSearchMenu()
} }
} }
#endif // wxUSE_MENUS
#endif // !wxUSE_NATIVE_SEARCH_CONTROL #endif // !wxUSE_NATIVE_SEARCH_CONTROL
#endif // wxUSE_SEARCHCTRL #endif // wxUSE_SEARCHCTRL