codeblocks-17.12-scripting.patch 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. From 22a4af265c78c2d0000c7f234d15b8bf5ff8b2c4 Mon Sep 17 00:00:00 2001
  2. From: fuscated <fuscated@2a5c6006-c6dd-42ca-98ab-0921f2732cef>
  3. Date: Wed, 12 Jun 2019 19:11:23 +0000
  4. Subject: [PATCH] * UI: Fix crash if the list in Settings->Scripting is empty
  5. (ticket 842)
  6. git-svn-id: https://svn.code.sf.net/p/codeblocks/code/trunk@11739 2a5c6006-c6dd-42ca-98ab-0921f2732cef
  7. ---
  8. src/src/scriptingsettingsdlg.cpp | 25 ++++++++++++++++---------
  9. 1 file changed, 16 insertions(+), 9 deletions(-)
  10. diff --git a/src/src/scriptingsettingsdlg.cpp b/src/src/scriptingsettingsdlg.cpp
  11. index 5cb23aaf4..a7f58f0cb 100644
  12. --- a/src/src/scriptingsettingsdlg.cpp
  13. +++ b/src/src/scriptingsettingsdlg.cpp
  14. @@ -101,16 +101,23 @@ void ScriptingSettingsDlg::UpdateState()
  15. wxListCtrl* list = XRCCTRL(*this, "chkStartupScripts", wxListCtrl);
  16. long sel = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
  17. - bool en = sel != -1;
  18. -
  19. - const ScriptEntry& se = m_ScriptsVector[sel];
  20. + bool hasSelection = false;
  21. + bool enabled = false;
  22. + bool registered = false;
  23. + if (sel >= 0 && sel < long(m_ScriptsVector.size()))
  24. + {
  25. + const ScriptEntry& se = m_ScriptsVector[sel];
  26. + enabled = se.enabled;
  27. + registered = se.registered;
  28. + hasSelection = true;
  29. + }
  30. - XRCCTRL(*this, "btnDelete", wxButton)->Enable(en);
  31. - XRCCTRL(*this, "chkEnableScript", wxCheckBox)->Enable(en);
  32. - XRCCTRL(*this, "txtScript", wxTextCtrl)->Enable(en && se.enabled);
  33. - XRCCTRL(*this, "btnBrowseScript", wxButton)->Enable(en && se.enabled);
  34. - XRCCTRL(*this, "chkRegisterScript", wxCheckBox)->Enable(en && se.enabled);
  35. - XRCCTRL(*this, "txtScriptMenu", wxTextCtrl)->Enable(en && se.enabled && se.registered);
  36. + XRCCTRL(*this, "btnDelete", wxButton)->Enable(hasSelection);
  37. + XRCCTRL(*this, "chkEnableScript", wxCheckBox)->Enable(hasSelection);
  38. + XRCCTRL(*this, "txtScript", wxTextCtrl)->Enable(hasSelection && enabled);
  39. + XRCCTRL(*this, "btnBrowseScript", wxButton)->Enable(hasSelection && enabled);
  40. + XRCCTRL(*this, "chkRegisterScript", wxCheckBox)->Enable(hasSelection && enabled);
  41. + XRCCTRL(*this, "txtScriptMenu", wxTextCtrl)->Enable(hasSelection && enabled && registered);
  42. }
  43. void ScriptingSettingsDlg::FillTrusts()
  44. --
  45. 2.21.0