Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 34 additions & 9 deletions src/connectdlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,10 @@ CConnectDlg::CConnectDlg ( CClient* pNCliP, CClientSettings* pNSetP, const bool
cbxServerAddr->setMaxCount ( MAX_NUM_SERVER_ADDR_ITEMS );
cbxServerAddr->setInsertPolicy ( QComboBox::NoInsert );

// install event filter to catch FocusIn
cbxServerAddr->installEventFilter ( this );
lvwServers->installEventFilter ( this );

// set up list view for connected clients (note that the last column size
// must not be specified since this column takes all the remaining space)
#ifdef ANDROID
Expand Down Expand Up @@ -276,8 +280,6 @@ CConnectDlg::CConnectDlg ( CClient* pNCliP, CClientSettings* pNSetP, const bool
QObject::connect ( edtFilter, &QLineEdit::textEdited, this, &CConnectDlg::OnFilterTextEdited );

// combo boxes
QObject::connect ( cbxServerAddr, &QComboBox::editTextChanged, this, &CConnectDlg::OnServerAddrEditTextChanged );

QObject::connect ( cbxDirectory, static_cast<void ( QComboBox::* ) ( int )> ( &QComboBox::activated ), this, &CConnectDlg::OnDirectoryChanged );

// check boxes
Expand Down Expand Up @@ -333,6 +335,7 @@ void CConnectDlg::RequestServerList()

// clear server list view
lvwServers->clear();
savedServer = nullptr;

// update list combo box (disable events to avoid a signal)
cbxDirectory->blockSignals ( true );
Expand Down Expand Up @@ -661,13 +664,6 @@ void CConnectDlg::OnServerListItemDoubleClicked ( QTreeWidgetItem* Item, int )
}
}

void CConnectDlg::OnServerAddrEditTextChanged ( const QString& )
{
// in the server address combo box, a text was changed, remove selection
// in the server list (if any)
lvwServers->clearSelection();
}

void CConnectDlg::OnCustomDirectoriesChanged()
{

Expand Down Expand Up @@ -1195,3 +1191,32 @@ void CConnectDlg::OnCurrentServerItemChanged ( QTreeWidgetItem* current, QTreeWi
QAccessible::updateAccessibility ( new QAccessibleAnnouncementEvent ( lvwServers, announcement ) );
#endif
}

bool CConnectDlg::eventFilter ( QObject* obj, QEvent* event )
{
if ( obj == cbxServerAddr && event->type() == QEvent::FocusIn )
{
// check for a selected server before clearing the selection in the list
QList<QTreeWidgetItem*> CurSelListItemList = lvwServers->selectedItems();

if ( CurSelListItemList.count() > 0 )
{
// there was a selected item - save it before deselecting
savedServer = GetParentListViewItem ( CurSelListItemList[0] );
}
// remove selection in the server list (if any)
lvwServers->clearSelection();
Comment thread
softins marked this conversation as resolved.
}

if ( obj == lvwServers && event->type() == QEvent::FocusIn )
{
if ( savedServer )
{
// re-select any previously-selected server on regaining focus
lvwServers->setCurrentItem ( savedServer );
savedServer = nullptr;
}
}

return QDialog::eventFilter ( obj, event );
}
4 changes: 3 additions & 1 deletion src/connectdlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ class CConnectDlg : public CBaseDlg, private Ui_CConnectDlgBase
void EmitCLServerListPingMes ( const CHostAddress& haServerAddress, const bool bNeedVersion );
void UpdateDirectoryComboBox();

bool eventFilter ( QObject* obj, QEvent* event ) override;
CMappedTreeWidgetItem* savedServer;

CClient* pClient;
CClientSettings* pSettings;

Expand All @@ -145,7 +148,6 @@ class CConnectDlg : public CBaseDlg, private Ui_CConnectDlgBase

public slots:
void OnServerListItemDoubleClicked ( QTreeWidgetItem* Item, int );
void OnServerAddrEditTextChanged ( const QString& );
void OnDirectoryChanged ( int iTypeIdx );
void OnFilterTextEdited ( const QString& ) { UpdateListFilter(); }
void OnExpandAllStateChanged ( int value ) { ShowAllMusicians ( value == Qt::Checked ); }
Expand Down
Loading