浏览代码

Fix callbacks of toggle buttons. Fixes game options window

Ivan Savenko 2 年之前
父节点
当前提交
062311d24a
共有 2 个文件被更改,包括 15 次插入1 次删除
  1. 14 1
      client/gui/InterfaceObjectConfigurable.cpp
  2. 1 0
      client/gui/InterfaceObjectConfigurable.h

+ 14 - 1
client/gui/InterfaceObjectConfigurable.cpp

@@ -300,7 +300,7 @@ std::shared_ptr<CToggleButton> InterfaceObjectConfigurable::buildToggleButton(co
 		assert(imgOrder.size() >= 4);
 		button->setImageOrder(imgOrder[0].Integer(), imgOrder[1].Integer(), imgOrder[2].Integer(), imgOrder[3].Integer());
 	}
-	loadButtonCallback(button, config["callback"]);
+	loadToggleButtonCallback(button, config["callback"]);
 	return button;
 }
 
@@ -340,6 +340,19 @@ void InterfaceObjectConfigurable::loadButtonBorderColor(std::shared_ptr<CButton>
 	button->setBorderColor(color);
 }
 
+void InterfaceObjectConfigurable::loadToggleButtonCallback(std::shared_ptr<CToggleButton> button, const JsonNode & config) const
+{
+	if(config.isNull())
+		return;
+
+	std::string callbackName = config.String();
+
+	if (callbacks.count(callbackName) > 0)
+		button->addCallback(callbacks.at(callbackName));
+	else
+		logGlobal->error("Invalid callback '%s' in widget", callbackName );
+}
+
 void InterfaceObjectConfigurable::loadButtonCallback(std::shared_ptr<CButton> button, const JsonNode & config) const
 {
 	if(config.isNull())

+ 1 - 0
client/gui/InterfaceObjectConfigurable.h

@@ -75,6 +75,7 @@ protected:
 	std::pair<std::string, std::string> readHintText(const JsonNode &) const;
 	EShortcut readHotkey(const JsonNode &) const;
 	
+	void loadToggleButtonCallback(std::shared_ptr<CToggleButton> button, const JsonNode & config) const;
 	void loadButtonCallback(std::shared_ptr<CButton> button, const JsonNode & config) const;
 	void loadButtonHotkey(std::shared_ptr<CButton> button, const JsonNode & config) const;
 	void loadButtonBorderColor(std::shared_ptr<CButton> button, const JsonNode & config) const;