From 12c1b46a2f848ce995590997d5a28559ee6e3ae9 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 6 Feb 2000 13:51:01 +0000 Subject: [PATCH] Tried to prevent scrollbars from scrolling as per MSW, didn't work. Added DeleteAllItems event and test to listctrl. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5871 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/filedlgg.h | 3 +- samples/listctrl/listtest.cpp | 13 ++++++ samples/listctrl/listtest.h | 1 + src/generic/filedlgg.cpp | 19 ++++++++- src/generic/listctrl.cpp | 32 ++++---------- src/gtk/window.cpp | 79 ----------------------------------- src/gtk1/window.cpp | 79 ----------------------------------- 7 files changed, 43 insertions(+), 183 deletions(-) diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h index aee6a30925..9d39b679f9 100644 --- a/include/wx/generic/filedlgg.h +++ b/include/wx/generic/filedlgg.h @@ -107,7 +107,7 @@ public: void ShowHidden( bool show = TRUE ); long Add( wxFileData *fd, wxListItem &item ); void Update(); - virtual void StatusbarText( char *WXUNUSED(text) ) {}; + virtual void StatusbarText( wxChar *WXUNUSED(text) ) {}; void MakeDir(); void GoToParentDir(); void GoToHomeDir(); @@ -115,6 +115,7 @@ public: void SetWild( const wxString &wild ); void GetDir( wxString &dir ); void OnListDeleteItem( wxListEvent &event ); + void OnListDeleteAllItems( wxListEvent &event ); void OnListEndLabelEdit( wxListEvent &event ); private: diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index 7d3fc9010c..8d2bc895e7 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -56,6 +56,7 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) EVT_LIST_BEGIN_LABEL_EDIT(LIST_CTRL, MyListCtrl::OnBeginLabelEdit) EVT_LIST_END_LABEL_EDIT(LIST_CTRL, MyListCtrl::OnEndLabelEdit) EVT_LIST_DELETE_ITEM(LIST_CTRL, MyListCtrl::OnDeleteItem) + EVT_LIST_DELETE_ALL_ITEMS(LIST_CTRL, MyListCtrl::OnDeleteAllItems) EVT_LIST_GET_INFO(LIST_CTRL, MyListCtrl::OnGetInfo) EVT_LIST_SET_INFO(LIST_CTRL, MyListCtrl::OnSetInfo) EVT_LIST_ITEM_SELECTED(LIST_CTRL, MyListCtrl::OnSelected) @@ -486,6 +487,18 @@ void MyListCtrl::OnDeleteItem(wxListEvent& WXUNUSED(event)) text->WriteText("OnDeleteItem\n"); } +void MyListCtrl::OnDeleteAllItems(wxListEvent& WXUNUSED(event)) +{ + if ( !wxGetApp().GetTopWindow() ) + return; + + wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; + if ( !text ) + return; + + text->WriteText("OnDeleteAllItems\n"); +} + void MyListCtrl::OnGetInfo(wxListEvent& event) { if ( !wxGetApp().GetTopWindow() ) diff --git a/samples/listctrl/listtest.h b/samples/listctrl/listtest.h index aebe3fe242..8258cf17bf 100644 --- a/samples/listctrl/listtest.h +++ b/samples/listctrl/listtest.h @@ -34,6 +34,7 @@ public: void OnBeginLabelEdit(wxListEvent& event); void OnEndLabelEdit(wxListEvent& event); void OnDeleteItem(wxListEvent& event); + void OnDeleteAllItems(wxListEvent& event); void OnGetInfo(wxListEvent& event); void OnSetInfo(wxListEvent& event); void OnSelected(wxListEvent& event); diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp index c2ce7eacf2..5a6e892e78 100644 --- a/src/generic/filedlgg.cpp +++ b/src/generic/filedlgg.cpp @@ -444,11 +444,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxFileCtrl,wxListCtrl); BEGIN_EVENT_TABLE(wxFileCtrl,wxListCtrl) EVT_LIST_DELETE_ITEM(-1, wxFileCtrl::OnListDeleteItem) + EVT_LIST_DELETE_ALL_ITEMS(-1, wxFileCtrl::OnListDeleteAllItems) EVT_LIST_END_LABEL_EDIT(-1, wxFileCtrl::OnListEndLabelEdit) END_EVENT_TABLE() - wxFileCtrl::wxFileCtrl() { m_dirName = wxT("/"); @@ -682,6 +682,23 @@ void wxFileCtrl::OnListDeleteItem( wxListEvent &event ) delete fd; } +void wxFileCtrl::OnListDeleteAllItems( wxListEvent &WXUNUSED(event) ) +{ + wxListItem item; + item.m_mask = wxLIST_MASK_DATA; + + item.m_itemId = GetNextItem( -1, wxLIST_NEXT_ALL ); + while ( item.m_itemId != -1 ) + { + GetItem( item ); + wxFileData *fd = (wxFileData*)item.m_data; + delete fd; + item.m_data = (void*) NULL; + SetItem( item ); + item.m_itemId = GetNextItem( item.m_itemId, wxLIST_NEXT_ALL ); + } +} + void wxFileCtrl::OnListEndLabelEdit( wxListEvent &event ) { wxFileData *fd = (wxFileData*)event.m_item.m_data; diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 6f14abfd3e..6421ecff52 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -1171,6 +1171,8 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, wxWindowID id, wxListMainWindow::~wxListMainWindow() { + DeleteEverything(); + if (m_hilightBrush) delete m_hilightBrush; delete m_renameTimer; @@ -2392,7 +2394,7 @@ void wxListMainWindow::DeleteColumn( int col ) if (node) m_columns.DeleteNode( node ); } -void wxListMainWindow::DeleteAllItems( void ) +void wxListMainWindow::DeleteAllItems() { m_dirty = TRUE; m_current = (wxListLineData *) NULL; @@ -2400,34 +2402,18 @@ void wxListMainWindow::DeleteAllItems( void ) // to make the deletion of all items faster, we don't send the // notifications in this case: this is compatible with wxMSW and // documented in DeleteAllItems() description -#if 0 - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - DeleteLine( line ); - - node = node->Next(); - } -#endif // 0 + wxListEvent event( wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, GetParent()->GetId() ); + event.SetEventObject( GetParent() ); + GetParent()->GetEventHandler()->ProcessEvent( event ); m_lines.Clear(); } -void wxListMainWindow::DeleteEverything( void ) +void wxListMainWindow::DeleteEverything() { - m_dirty = TRUE; - m_current = (wxListLineData *) NULL; - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - DeleteLine( line ); - node = node->Next(); - } - m_lines.Clear(); - m_current = (wxListLineData *) NULL; + DeleteAllItems(); + m_columns.Clear(); } diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index c7e8bc5918..64f720e2ae 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1577,54 +1577,6 @@ static void gtk_window_hscroll_callback( GtkAdjustment *adjust, wxWindow *win ) win->GetEventHandler()->ProcessEvent( event ); } -//----------------------------------------------------------------------------- -// "changed" from m_vAdjust -//----------------------------------------------------------------------------- - -/* -static void gtk_window_vscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - DEBUG_MAIN_THREAD - - if (g_isIdle) - wxapp_install_idle_handler(); - - if (g_blockEventsOnDrag) return; - if (!win->m_hasVMT) return; - - wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK; - int value = (int)(win->m_vAdjust->value+0.5); - - wxScrollWinEvent event( command, value, wxVERTICAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} -*/ - -//----------------------------------------------------------------------------- -// "changed" from m_hAdjust -//----------------------------------------------------------------------------- - -/* -static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - DEBUG_MAIN_THREAD - - if (g_isIdle) - wxapp_install_idle_handler(); - - if (g_blockEventsOnDrag) return; - if (!win->m_hasVMT) return; - - wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK; - int value = (int)(win->m_hAdjust->value+0.5); - - wxScrollWinEvent event( command, value, wxHORIZONTAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} -*/ - //----------------------------------------------------------------------------- // "button_press_event" from scrollbar //----------------------------------------------------------------------------- @@ -2119,13 +2071,6 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id, gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed", (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this ); -/* - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed", - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); - gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed", - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); -*/ - gtk_widget_show( m_wxwindow ); if (m_parent) @@ -3334,33 +3279,9 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible, } if (orient == wxHORIZONTAL) - { -/* - gtk_signal_disconnect_by_func( GTK_OBJECT(m_hAdjust), - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); -*/ - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" ); - -/* - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed", - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); -*/ - } else - { -/* - gtk_signal_disconnect_by_func( GTK_OBJECT(m_vAdjust), - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); -*/ - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" ); - -/* - gtk_signal_connect( GTK_OBJECT(m_vAdjust), "changed", - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); -*/ - } } void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) ) diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index c7e8bc5918..64f720e2ae 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -1577,54 +1577,6 @@ static void gtk_window_hscroll_callback( GtkAdjustment *adjust, wxWindow *win ) win->GetEventHandler()->ProcessEvent( event ); } -//----------------------------------------------------------------------------- -// "changed" from m_vAdjust -//----------------------------------------------------------------------------- - -/* -static void gtk_window_vscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - DEBUG_MAIN_THREAD - - if (g_isIdle) - wxapp_install_idle_handler(); - - if (g_blockEventsOnDrag) return; - if (!win->m_hasVMT) return; - - wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK; - int value = (int)(win->m_vAdjust->value+0.5); - - wxScrollWinEvent event( command, value, wxVERTICAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} -*/ - -//----------------------------------------------------------------------------- -// "changed" from m_hAdjust -//----------------------------------------------------------------------------- - -/* -static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - DEBUG_MAIN_THREAD - - if (g_isIdle) - wxapp_install_idle_handler(); - - if (g_blockEventsOnDrag) return; - if (!win->m_hasVMT) return; - - wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK; - int value = (int)(win->m_hAdjust->value+0.5); - - wxScrollWinEvent event( command, value, wxHORIZONTAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} -*/ - //----------------------------------------------------------------------------- // "button_press_event" from scrollbar //----------------------------------------------------------------------------- @@ -2119,13 +2071,6 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id, gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed", (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this ); -/* - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed", - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); - gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed", - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); -*/ - gtk_widget_show( m_wxwindow ); if (m_parent) @@ -3334,33 +3279,9 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible, } if (orient == wxHORIZONTAL) - { -/* - gtk_signal_disconnect_by_func( GTK_OBJECT(m_hAdjust), - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); -*/ - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" ); - -/* - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed", - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); -*/ - } else - { -/* - gtk_signal_disconnect_by_func( GTK_OBJECT(m_vAdjust), - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); -*/ - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" ); - -/* - gtk_signal_connect( GTK_OBJECT(m_vAdjust), "changed", - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); -*/ - } } void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) ) -- 2.47.2