From 4415e3d049bded6db423af730a110ed9746baef2 Mon Sep 17 00:00:00 2001 From: Dimitris Panokostas Date: Sun, 21 Jan 2018 18:24:53 +0100 Subject: [PATCH] Fixed bug where the Add Directory panel would not show the Directory Requester until a key was pressed --- src/osdep/gui/EditFilesysVirtual.cpp | 2 +- src/osdep/gui/PanelHD.cpp | 56 +++++++++++++++++----------- src/osdep/gui/SelectFolder.cpp | 1 + 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/osdep/gui/EditFilesysVirtual.cpp b/src/osdep/gui/EditFilesysVirtual.cpp index 8d443a9b..1addb0b9 100644 --- a/src/osdep/gui/EditFilesysVirtual.cpp +++ b/src/osdep/gui/EditFilesysVirtual.cpp @@ -231,9 +231,9 @@ static void EditFilesysVirtualLoop() SDL_Event event; while (SDL_PollEvent(&event)) { + gotEvent = 1; if (event.type == SDL_KEYDOWN) { - gotEvent = 1; switch (event.key.keysym.sym) { case VK_ESCAPE: diff --git a/src/osdep/gui/PanelHD.cpp b/src/osdep/gui/PanelHD.cpp index fee2f126..642d1c40 100644 --- a/src/osdep/gui/PanelHD.cpp +++ b/src/osdep/gui/PanelHD.cpp @@ -160,10 +160,13 @@ class AddVirtualHDActionListener : public gcn::ActionListener public: void action(const gcn::ActionEvent& actionEvent) override { - if (EditFilesysVirtual(-1)) - gui_force_rtarea_hdchange(); - cmdAddDirectory->requestFocus(); - RefreshPanelHD(); + if (actionEvent.getSource() == cmdAddDirectory) + { + if (EditFilesysVirtual(-1)) + gui_force_rtarea_hdchange(); + cmdAddDirectory->requestFocus(); + RefreshPanelHD(); + } } }; @@ -175,10 +178,13 @@ class AddHardfileActionListener : public gcn::ActionListener public: void action(const gcn::ActionEvent& actionEvent) override { - if (EditFilesysHardfile(-1)) - gui_force_rtarea_hdchange(); - cmdAddHardfile->requestFocus(); - RefreshPanelHD(); + if (actionEvent.getSource() == cmdAddHardfile) + { + if (EditFilesysHardfile(-1)) + gui_force_rtarea_hdchange(); + cmdAddHardfile->requestFocus(); + RefreshPanelHD(); + } } }; @@ -190,10 +196,13 @@ class CreateHardfileActionListener : public gcn::ActionListener public: void action(const gcn::ActionEvent& actionEvent) override { - if (CreateFilesysHardfile()) - gui_force_rtarea_hdchange(); - cmdCreateHardfile->requestFocus(); - RefreshPanelHD(); + if (actionEvent.getSource() == cmdCreateHardfile) + { + if (CreateFilesysHardfile()) + gui_force_rtarea_hdchange(); + cmdCreateHardfile->requestFocus(); + RefreshPanelHD(); + } } }; @@ -205,18 +214,21 @@ class CDCheckActionListener : public gcn::ActionListener public: void action(const gcn::ActionEvent& actionEvent) override { - if (changed_prefs.cdslots[0].inuse) + if (actionEvent.getSource() == chkCD) { - changed_prefs.cdslots[0].inuse = false; - changed_prefs.cdslots[0].type = SCSI_UNIT_DISABLED; + if (changed_prefs.cdslots[0].inuse) + { + changed_prefs.cdslots[0].inuse = false; + changed_prefs.cdslots[0].type = SCSI_UNIT_DISABLED; + } + else + { + changed_prefs.cdslots[0].inuse = true; + changed_prefs.cdslots[0].type = SCSI_UNIT_IMAGE; + } + RefreshPanelHD(); + RefreshPanelQuickstart(); } - else - { - changed_prefs.cdslots[0].inuse = true; - changed_prefs.cdslots[0].type = SCSI_UNIT_IMAGE; - } - RefreshPanelHD(); - RefreshPanelQuickstart(); } }; diff --git a/src/osdep/gui/SelectFolder.cpp b/src/osdep/gui/SelectFolder.cpp index b025cc79..88442b1e 100644 --- a/src/osdep/gui/SelectFolder.cpp +++ b/src/osdep/gui/SelectFolder.cpp @@ -359,6 +359,7 @@ bool SelectFolder(const char* title, char* value) UpdateGuiScreen(); SelectFolderLoop(); + ExitSelectFolder(); if (dialogResult) {