X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/47a8a4d5cc3e8fcb2efee4787cb9d244104beea5..235cdc6dd78d5bfb5a3007e6214e77be8cb667b4:/samples/controls/controls.cpp diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index 6ca2a7abd4..6cd37657df 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -1015,7 +1015,6 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) // sizer panel = new wxPanel(m_book); - panel->SetAutoLayout( true ); wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL ); @@ -1192,22 +1191,24 @@ void MyPanel::OnChangeColour(wxCommandEvent& WXUNUSED(event)) void MyPanel::OnListBox( wxCommandEvent &event ) { - if (event.GetInt() == -1) - { - m_text->AppendText( _T("ListBox has no selections anymore\n") ); - return; - } - wxListBox *listbox = event.GetId() == ID_LISTBOX ? m_listbox : m_listboxSorted; + bool deselect = false; + if (listbox->HasFlag(wxLB_MULTIPLE) || listbox->HasFlag(wxLB_EXTENDED)) + { + deselect = !event.IsSelection(); + if (deselect) + m_text->AppendText( _T("ListBox deselection event\n") ); + } + m_text->AppendText( _T("ListBox event selection string is: '") ); m_text->AppendText( event.GetString() ); m_text->AppendText( _T("'\n") ); // can't use GetStringSelection() with multiple selections, there could be // more than one of them - if ( !listbox->HasFlag(wxLB_MULTIPLE) ) + if ( !listbox->HasFlag(wxLB_MULTIPLE) && !listbox->HasFlag(wxLB_EXTENDED) ) { m_text->AppendText( _T("ListBox control selection string is: '") ); m_text->AppendText( listbox->GetStringSelection() ); @@ -1312,10 +1313,10 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event ) #if wxUSE_CHOICE -static const wxChar *GetDataString(wxClientData *data) +static wxString GetDataString(wxClientData *data) { - return data ? wx_static_cast(wxStringClientData *, data)->GetData().c_str() - : _T("none"); + return data ? wx_static_cast(wxStringClientData *, data)->GetData() + : wxString("none"); } void MyPanel::OnChoice( wxCommandEvent &event ) @@ -1333,8 +1334,8 @@ void MyPanel::OnChoice( wxCommandEvent &event ) _T("data \"%s\"/\"%s\""), (int)event.GetInt(), sel, - event.GetString().c_str(), - choice->GetStringSelection().c_str(), + event.GetString(), + choice->GetStringSelection(), GetDataString(dataEvt), GetDataString(dataCtrl)); } @@ -1933,24 +1934,30 @@ void MyFrame::OnSize( wxSizeEvent& event ) void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) ) { // track the window which has the focus in the status bar - static wxWindow *s_windowFocus = (wxWindow *)NULL; + static wxWindow *s_windowFocus = NULL; wxWindow *focus = wxWindow::FindFocus(); - if ( focus && (focus != s_windowFocus) ) + if ( focus != s_windowFocus ) { s_windowFocus = focus; wxString msg; - msg.Printf( + if ( focus ) + { + msg.Printf( + _T("Focus: %s") #ifdef __WXMSW__ - _T("Focus: %s, HWND = %08x"), -#else - _T("Focus: %s"), + , _T(", HWND = %08x") #endif - s_windowFocus->GetClassInfo()->GetClassName() + , s_windowFocus->GetName().c_str() #ifdef __WXMSW__ - , (unsigned int) s_windowFocus->GetHWND() + , (unsigned int) s_windowFocus->GetHWND() #endif - ); + ); + } + else + { + msg = _T("No focus"); + } #if wxUSE_STATUSBAR SetStatusText(msg);