Skip to content

Commit c161662

Browse files
committed
Fixed when opening the context menu on the Device node in ProjectView may open the wrong Device window
1 parent 9747104 commit c161662

File tree

3 files changed

+34
-22
lines changed

3 files changed

+34
-22
lines changed

changelog.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,5 +158,5 @@ List of changes of new v0.4 version of ModbusTools:
158158
* Added 'Font' settings for LogView
159159
* Added 'Font' settings for Output script window
160160
* Added 'Enable Script' setting for server device
161-
162-
161+
* When closing the script editor window, synchronized the code with the current project
162+
* Fixed when opening the context menu on the Device node in ProjectView may open the wrong Device window

src/server/gui/server_ui.cpp

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -625,10 +625,10 @@ void mbServerUi::menuSlotDeviceNew()
625625

626626
void mbServerUi::menuSlotDeviceEdit()
627627
{
628-
mbServerDevice *d = m_deviceManager->activeDevice();
629-
if (!d)
628+
mbServerDeviceUi *deviceUi = this->activeDeviceUi();
629+
if (!deviceUi)
630630
return;
631-
editDevice(d);
631+
editDevice(deviceUi->device());
632632
}
633633

634634
void mbServerUi::menuSlotDeviceDelete()
@@ -638,9 +638,10 @@ void mbServerUi::menuSlotDeviceDelete()
638638
mbServerProject *project = core()->project();
639639
if (!project)
640640
return;
641-
mbServerDevice *device = m_deviceManager->activeDevice();
642-
if (!device)
641+
mbServerDeviceUi *deviceUi = this->activeDeviceUi();
642+
if (!deviceUi)
643643
return;
644+
mbServerDevice *device = deviceUi->device();
644645
QMessageBox::StandardButton res = QMessageBox::question(this,
645646
QStringLiteral("Delete Device"),
646647
QString("Are you sure you want to delete '%1'?").arg(device->name()),
@@ -677,9 +678,10 @@ void mbServerUi::menuSlotDeviceImport()
677678
void mbServerUi::menuSlotDeviceExport()
678679
{
679680
mbServerProject *project = core()->project();
680-
if (project && m_deviceManager->activeDevice())
681+
mbServerDeviceUi *deviceUi = this->activeDeviceUi();
682+
if (project && deviceUi)
681683
{
682-
mbServerDevice *current = m_deviceManager->activeDevice();
684+
mbServerDevice *current = deviceUi->device();
683685
QString file = m_dialogs->getSaveFileName(this,
684686
QString("Export Device '%1'").arg(current->name()),
685687
QString(),
@@ -691,7 +693,7 @@ void mbServerUi::menuSlotDeviceExport()
691693

692694
void mbServerUi::menuSlotDeviceMemoryZerro()
693695
{
694-
if (mbServerDeviceUi *deviceUi = m_deviceManager->activeDeviceUi())
696+
if (mbServerDeviceUi *deviceUi = this->activeDeviceUi())
695697
{
696698
deviceUi->slotMemoryZerro();
697699
m_project->setModifiedFlag(true);
@@ -700,7 +702,7 @@ void mbServerUi::menuSlotDeviceMemoryZerro()
700702

701703
void mbServerUi::menuSlotDeviceMemoryZerroAll()
702704
{
703-
if (mbServerDeviceUi *deviceUi = m_deviceManager->activeDeviceUi())
705+
if (mbServerDeviceUi *deviceUi = this->activeDeviceUi())
704706
{
705707
deviceUi->slotMemoryZerroAll();
706708
m_project->setModifiedFlag(true);
@@ -709,7 +711,7 @@ void mbServerUi::menuSlotDeviceMemoryZerroAll()
709711

710712
void mbServerUi::menuSlotDeviceMemoryImport()
711713
{
712-
if (mbServerDeviceUi *deviceUi = m_deviceManager->activeDeviceUi())
714+
if (mbServerDeviceUi *deviceUi = this->activeDeviceUi())
713715
{
714716
QString file = dialogs()->getOpenFileName(this,
715717
QStringLiteral("Import memory values ..."),
@@ -739,7 +741,7 @@ void mbServerUi::menuSlotDeviceMemoryImport()
739741
void mbServerUi::menuSlotDeviceMemoryExport()
740742
{
741743
const int columnCount = 10;
742-
if (mbServerDeviceUi *deviceUi = m_deviceManager->activeDeviceUi())
744+
if (mbServerDeviceUi *deviceUi = this->activeDeviceUi())
743745
{
744746
QString file = dialogs()->getSaveFileName(this,
745747
QStringLiteral("Export memory values ..."),
@@ -764,23 +766,23 @@ void mbServerUi::menuSlotDeviceMemoryExport()
764766

765767
void mbServerUi::menuSlotDeviceScriptInit()
766768
{
767-
mbServerDevice *device = m_deviceManager->activeDevice();
768-
if (device)
769-
windowManager()->showDeviceScript(device, mbServerDevice::Script_Init);
769+
mbServerDeviceUi *deviceUi = this->activeDeviceUi();
770+
if (deviceUi)
771+
windowManager()->showDeviceScript(deviceUi->device(), mbServerDevice::Script_Init);
770772
}
771773

772774
void mbServerUi::menuSlotDeviceScriptLoop()
773775
{
774-
mbServerDevice *device = m_deviceManager->activeDevice();
775-
if (device)
776-
windowManager()->showDeviceScript(device, mbServerDevice::Script_Loop);
776+
mbServerDeviceUi *deviceUi = this->activeDeviceUi();
777+
if (deviceUi)
778+
windowManager()->showDeviceScript(deviceUi->device(), mbServerDevice::Script_Loop);
777779
}
778780

779781
void mbServerUi::menuSlotDeviceScriptFinal()
780782
{
781-
mbServerDevice *device = m_deviceManager->activeDevice();
782-
if (device)
783-
windowManager()->showDeviceScript(device, mbServerDevice::Script_Final);
783+
mbServerDeviceUi *deviceUi = this->activeDeviceUi();
784+
if (deviceUi)
785+
windowManager()->showDeviceScript(deviceUi->device(), mbServerDevice::Script_Final);
784786
}
785787

786788
void mbServerUi::menuSlotSimActionNew()
@@ -1234,3 +1236,12 @@ void mbServerUi::saveProjectInner()
12341236
device->setScript(se->scriptType(), se->toPlainText());
12351237
}
12361238
}
1239+
1240+
mbServerDeviceUi *mbServerUi::activeDeviceUi() const
1241+
{
1242+
mbServerProjectUi *project = projectUi();
1243+
QWidget* focusWidget = QApplication::focusWidget();
1244+
if (focusWidget && (project == focusWidget || project->isAncestorOf(focusWidget)))
1245+
return m_deviceManager->deviceUi(project->currentDevice());
1246+
return m_deviceManager->activeDeviceUi();
1247+
}

src/server/gui/server_ui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ private Q_SLOTS:
202202
void editDeviceRefPrivate(mbServerDeviceRef *device);
203203
void editDevicePrivate(mbServerDevice *device);
204204
void saveProjectInner() override;
205+
mbServerDeviceUi *activeDeviceUi() const;
205206

206207
private:
207208
Ui::mbServerUi *ui;

0 commit comments

Comments
 (0)