mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Replace itemClicked() by currentItemChanged() in Bt device selection
This fixes two problems: 1) Using the keybord or clicking below the list and moving the mouse up while holding the mouse button did not properly update the status message and the save button. For example, one could save with a non- paired device selected. 2) The code assumed that a device is selected if the save button is active, but the save button was not disabled on scan. Thus, one could provoke a crash by selecting an item, scanning and then pressing save. This problem is fixed indirectly, because the save button is now always disabled if the selection is cleared. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
a64b70db4a
commit
617c6d3564
2 changed files with 10 additions and 5 deletions
|
@ -46,8 +46,8 @@ BtDeviceSelectionDialog::BtDeviceSelectionDialog(QWidget *parent) :
|
|||
ui->save->setEnabled(false);
|
||||
|
||||
// Add event for item selection
|
||||
connect(ui->discoveredDevicesList, SIGNAL(itemClicked(QListWidgetItem*)),
|
||||
this, SLOT(itemClicked(QListWidgetItem*)));
|
||||
connect(ui->discoveredDevicesList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
|
||||
this, SLOT(currentItemChanged(QListWidgetItem*,QListWidgetItem*)));
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
ULONG ulRetCode = SUCCESS;
|
||||
|
@ -172,7 +172,6 @@ void BtDeviceSelectionDialog::on_clear_clicked()
|
|||
{
|
||||
ui->dialogStatus->setText(tr("Remote devices list was cleared."));
|
||||
ui->discoveredDevicesList->clear();
|
||||
ui->save->setEnabled(false);
|
||||
|
||||
if (remoteDeviceDiscoveryAgent->isActive()) {
|
||||
// Stop the SDP agent if the clear button is pressed and enable the Scan button
|
||||
|
@ -263,8 +262,14 @@ void BtDeviceSelectionDialog::addRemoteDevice(const QBluetoothDeviceInfo &remote
|
|||
ui->discoveredDevicesList->addItem(item);
|
||||
}
|
||||
|
||||
void BtDeviceSelectionDialog::itemClicked(QListWidgetItem *item)
|
||||
void BtDeviceSelectionDialog::currentItemChanged(QListWidgetItem *item, QListWidgetItem *)
|
||||
{
|
||||
// If the list is cleared, we get a signal with a null item pointer
|
||||
if (!item) {
|
||||
ui->save->setEnabled(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// By default we assume that the devices are paired
|
||||
QBluetoothDeviceInfo remoteDeviceInfo = item->data(Qt::UserRole).value<QBluetoothDeviceInfo>();
|
||||
QString statusMessage = tr("The device %1 can be used for connection. You can press the Save button.")
|
||||
|
|
|
@ -68,7 +68,7 @@ private slots:
|
|||
void remoteDeviceScanFinished();
|
||||
void hostModeStateChanged(QBluetoothLocalDevice::HostMode mode);
|
||||
void addRemoteDevice(const QBluetoothDeviceInfo &remoteDeviceInfo);
|
||||
void itemClicked(QListWidgetItem *item);
|
||||
void currentItemChanged(QListWidgetItem *item,QListWidgetItem *previous);
|
||||
void displayPairingMenu(const QPoint &pos);
|
||||
void pairingFinished(const QBluetoothAddress &address,QBluetoothLocalDevice::Pairing pairing);
|
||||
void error(QBluetoothLocalDevice::Error error);
|
||||
|
|
Loading…
Reference in a new issue