// Name: src/mac/carbon/srchctrl.cpp
// Purpose: implements mac carbon wxSearchCtrl
// Author: Vince Harron
-// Modified by:
// Created: 2006-02-19
-// RCS-ID:
+// RCS-ID: $Id$
// Copyright: Vince Harron
// License: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
-#ifndef WX_PRECOMP
- #include "wx/menu.h"
-#endif //WX_PRECOMP
-
#if wxUSE_SEARCHCTRL
#include "wx/srchctrl.h"
-#if USE_NATIVE_SEARCH_CONTROL
+#ifndef WX_PRECOMP
+ #include "wx/menu.h"
+#endif //WX_PRECOMP
+
+#if wxUSE_NATIVE_SEARCH_CONTROL
#include "wx/mac/uma.h"
#include "wx/mac/carbon/private/mactext.h"
static const EventTypeSpec eventList[] =
{
{ kEventClassSearchField, kEventSearchFieldCancelClicked } ,
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
{ kEventClassSearchField, kEventSearchFieldSearchClicked } ,
+#endif
};
class wxMacSearchFieldControl : public wxMacUnicodeTextControl
virtual void SetSearchMenu( wxMenu* menu );
virtual wxMenu* GetSearchMenu() const;
+
+ virtual void SetDescriptiveText(const wxString& text);
+ virtual wxString GetDescriptiveText() const;
+
protected :
virtual void CreateControl( wxTextCtrl* peer, const Rect* bounds, CFStringRef crf );
void wxMacSearchFieldControl::CreateControl( wxTextCtrl* /*peer*/, const Rect* bounds, CFStringRef crf )
{
OptionBits attributes = 0;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
if ( UMAGetSystemVersion() >= 0x1040 )
{
attributes = kHISearchFieldAttributesSearchIcon;
}
+#endif
HIRect hibounds = { { bounds->left, bounds->top }, { bounds->right-bounds->left, bounds->bottom-bounds->top } };
- verify_noerr( HISearchFieldCreate(
+ verify_noerr( HISearchFieldCreate(
&hibounds,
attributes,
0, // MenuRef
CFSTR("Search"),
&m_controlRef
) );
- HIViewSetVisible (m_controlRef, true);
+ HIViewSetVisible (m_controlRef, true);
}
// search field options
-void wxMacSearchFieldControl::SetSearchButtonVisible( bool show )
+void wxMacSearchFieldControl::ShowSearchButton( bool show )
{
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
if ( UMAGetSystemVersion() >= 0x1040 )
{
OptionBits set = 0;
}
HISearchFieldChangeAttributes( m_controlRef, set, clear );
}
+#endif
}
-bool wxMacSearchFieldControl::GetSearchButtonVisible() const
-{
+bool wxMacSearchFieldControl::IsSearchButtonVisible() const
+{
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
OptionBits attributes = 0;
verify_noerr( HISearchFieldGetAttributes( m_controlRef, &attributes ) );
return ( attributes & kHISearchFieldAttributesSearchIcon ) != 0;
+#else
+ return false;
+#endif
}
-void wxMacSearchFieldControl::SetCancelButtonVisible( bool show )
+void wxMacSearchFieldControl::ShowCancelButton( bool show )
{
OptionBits set = 0;
OptionBits clear = 0;
HISearchFieldChangeAttributes( m_controlRef, set, clear );
}
-bool wxMacSearchFieldControl::GetCancelButtonVisible() const
-{
+bool wxMacSearchFieldControl::IsCancelButtonVisible() const
+{
OptionBits attributes = 0;
verify_noerr( HISearchFieldGetAttributes( m_controlRef, &attributes ) );
return ( attributes & kHISearchFieldAttributesCancel ) != 0;
return m_menu;
}
+
+void wxMacSearchFieldControl::SetDescriptiveText(const wxString& text)
+{
+ verify_noerr( HISearchFieldSetDescriptiveText(
+ m_controlRef,
+ wxMacCFStringHolder( text, wxFont::GetDefaultEncoding() )));
+}
+
+wxString wxMacSearchFieldControl::GetDescriptiveText() const
+{
+ CFStringRef cfStr;
+ verify_noerr( HISearchFieldCopyDescriptiveText( m_controlRef, &cfStr ));
+ if ( cfStr )
+ {
+ return wxMacCFStringHolder(cfStr).AsString();
+ }
+ else
+ {
+ return wxEmptyString;
+ }
+}
+
#endif
// ============================================================================
ControlRef controlRef ;
wxSearchCtrl* thisWindow = (wxSearchCtrl*) data ;
- wxTextCtrl* textCtrl = wxDynamicCast( thisWindow , wxTextCtrl ) ;
cEvent.GetParameter( kEventParamDirectObject , &controlRef ) ;
switch( GetEventKind( event ) )
case kEventSearchFieldCancelClicked :
thisWindow->MacSearchFieldCancelHit( handler , event ) ;
break ;
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
case kEventSearchFieldSearchClicked :
thisWindow->MacSearchFieldSearchHit( handler , event ) ;
break ;
+#endif
}
return result ;
// --------
wxSearchCtrl::wxSearchCtrl()
-{
+{
Init();
}
// it seems to return a default width of about 16, which is way too small here.
if (size.GetWidth() < 100)
size.SetWidth(100);
-
+
return size;
}
return m_menu;
}
-void wxSearchCtrl::SetSearchButtonVisible( bool show )
+void wxSearchCtrl::ShowSearchButton( bool show )
{
- if ( GetSearchButtonVisible() == show )
+ if ( IsSearchButtonVisible() == show )
{
// no change
return;
}
- GetPeer()->SetSearchButtonVisible( show );
+ GetPeer()->ShowSearchButton( show );
}
-bool wxSearchCtrl::GetSearchButtonVisible() const
+bool wxSearchCtrl::IsSearchButtonVisible() const
{
- return GetPeer()->GetSearchButtonVisible();
+ return GetPeer()->IsSearchButtonVisible();
}
-void wxSearchCtrl::SetCancelButtonVisible( bool show )
+void wxSearchCtrl::ShowCancelButton( bool show )
{
- if ( GetCancelButtonVisible() == show )
+ if ( IsCancelButtonVisible() == show )
{
// no change
return;
}
- GetPeer()->SetCancelButtonVisible( show );
+ GetPeer()->ShowCancelButton( show );
+}
+
+bool wxSearchCtrl::IsCancelButtonVisible() const
+{
+ return GetPeer()->IsCancelButtonVisible();
+}
+
+void wxSearchCtrl::SetDescriptiveText(const wxString& text)
+{
+ GetPeer()->SetDescriptiveText(text);
}
-bool wxSearchCtrl::GetCancelButtonVisible() const
+wxString wxSearchCtrl::GetDescriptiveText() const
{
- return GetPeer()->GetCancelButtonVisible();
+ return GetPeer()->GetDescriptiveText();
}
wxInt32 wxSearchCtrl::MacSearchFieldSearchHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
{
- wxCommandEvent event(wxEVT_COMMAND_SEARCHCTRL_SEARCH, m_windowId );
+ wxCommandEvent event(wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, m_windowId );
event.SetEventObject(this);
ProcessCommand(event);
return eventNotHandledErr ;
wxInt32 wxSearchCtrl::MacSearchFieldCancelHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
{
- wxCommandEvent event(wxEVT_COMMAND_SEARCHCTRL_CANCEL, m_windowId );
+ wxCommandEvent event(wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, m_windowId );
event.SetEventObject(this);
ProcessCommand(event);
return eventNotHandledErr ;
}
}
-#endif // USE_NATIVE_SEARCH_CONTROL
+#endif // wxUSE_NATIVE_SEARCH_CONTROL
#endif // wxUSE_SEARCHCTRL