Add debouncing to the choose symbol dialog.

More potato pc friendly in theory.
This commit is contained in:
Marek Roszko 2021-07-04 21:59:51 -04:00
parent 3b33f94c56
commit d2aeddc6cb
2 changed files with 17 additions and 1 deletions

View File

@ -33,6 +33,7 @@
#include <wx/srchctrl.h>
#include <wx/settings.h>
#include <wx/statbmp.h>
#include <wx/timer.h>
LIB_TREE::LIB_TREE( wxWindow* aParent, LIB_TABLE* aLibTable,
@ -57,6 +58,8 @@ LIB_TREE::LIB_TREE( wxWindow* aParent, LIB_TABLE* aLibTable,
m_query_ctrl->ShowCancelButton( true );
m_debounceTimer = new wxTimer( this );
// Additional visual cue for GTK, which hides the placeholder text on focus
#ifdef __WXGTK__
auto bitmap = new wxStaticBitmap( this, wxID_ANY, wxArtProvider::GetBitmap( wxART_FIND, wxART_FRAME_ICON ) );
@ -70,6 +73,8 @@ LIB_TREE::LIB_TREE( wxWindow* aParent, LIB_TABLE* aLibTable,
m_query_ctrl->Bind( wxEVT_TEXT, &LIB_TREE::onQueryText, this );
m_query_ctrl->Bind( wxEVT_TEXT_ENTER, &LIB_TREE::onQueryEnter, this );
m_query_ctrl->Bind( wxEVT_CHAR_HOOK, &LIB_TREE::onQueryCharHook, this );
Bind( wxEVT_TIMER, &LIB_TREE::onDebounceTimer, this, m_debounceTimer->GetId() );
}
// Tree control
@ -322,7 +327,7 @@ void LIB_TREE::setState( const STATE& aState )
void LIB_TREE::onQueryText( wxCommandEvent& aEvent )
{
Regenerate( false );
m_debounceTimer->StartOnce( 200 );
// Required to avoid interaction with SetHint()
// See documentation for wxTextEntry::SetHint
@ -337,6 +342,12 @@ void LIB_TREE::onQueryEnter( wxCommandEvent& aEvent )
}
void LIB_TREE::onDebounceTimer( wxTimerEvent& aEvent )
{
Regenerate( false );
}
void LIB_TREE::onQueryCharHook( wxKeyEvent& aKeyStroke )
{
auto const sel = m_tree_ctrl->GetSelection();

View File

@ -33,6 +33,8 @@ class wxTextCtrl;
class wxHtmlWindow;
class wxHtmlLinkEvent;
class wxSearchCtrl;
class wxTimer;
class wxTimerEvent;
class ACTION_MENU;
class LIB_ID;
class LIB_TABLE;
@ -167,6 +169,8 @@ protected:
void onPreselect( wxCommandEvent& aEvent );
void onContextMenu( wxDataViewEvent& aEvent );
void onDebounceTimer( wxTimerEvent& aEvent );
protected:
LIB_TABLE* m_lib_table;
@ -175,6 +179,7 @@ protected:
wxSearchCtrl* m_query_ctrl;
wxDataViewCtrl* m_tree_ctrl;
wxHtmlWindow* m_details_ctrl;
wxTimer* m_debounceTimer;
LIB_ID m_last_libid;
};