mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 16:57:53 -06:00
Try to fix selection of overridden option when TextCtrl is focused
Note: the problem was observed only under OSX
This commit is contained in:
parent
b7d6c93c36
commit
7c2e199472
2 changed files with 33 additions and 1 deletions
|
@ -342,9 +342,40 @@ void TextCtrl::BUILD() {
|
||||||
window = dynamic_cast<wxWindow*>(temp);
|
window = dynamic_cast<wxWindow*>(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TextCtrl::value_was_changed()
|
||||||
|
{
|
||||||
|
if (m_value.empty())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
boost::any val = m_value;
|
||||||
|
wxString ret_str = static_cast<wxTextCtrl*>(window)->GetValue();
|
||||||
|
// update m_value!
|
||||||
|
get_value_by_opt_type(ret_str);
|
||||||
|
|
||||||
|
switch (m_opt.type) {
|
||||||
|
case coInt:
|
||||||
|
return boost::any_cast<int>(m_value) != boost::any_cast<int>(val);
|
||||||
|
case coPercent:
|
||||||
|
case coPercents:
|
||||||
|
case coFloats:
|
||||||
|
case coFloat: {
|
||||||
|
if (m_opt.nullable && std::isnan(boost::any_cast<double>(m_value)) &&
|
||||||
|
std::isnan(boost::any_cast<double>(val)))
|
||||||
|
return false;
|
||||||
|
return boost::any_cast<double>(m_value) != boost::any_cast<double>(val);
|
||||||
|
}
|
||||||
|
case coString:
|
||||||
|
case coStrings:
|
||||||
|
case coFloatOrPercent:
|
||||||
|
return boost::any_cast<std::string>(m_value) != boost::any_cast<std::string>(val);
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TextCtrl::propagate_value()
|
void TextCtrl::propagate_value()
|
||||||
{
|
{
|
||||||
if (is_defined_input_value<wxTextCtrl>(window, m_opt.type))
|
if (is_defined_input_value<wxTextCtrl>(window, m_opt.type) && value_was_changed())
|
||||||
on_change_field();
|
on_change_field();
|
||||||
else
|
else
|
||||||
on_kill_focus();
|
on_kill_focus();
|
||||||
|
|
|
@ -281,6 +281,7 @@ public:
|
||||||
~TextCtrl() {}
|
~TextCtrl() {}
|
||||||
|
|
||||||
void BUILD();
|
void BUILD();
|
||||||
|
bool value_was_changed();
|
||||||
// Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER
|
// Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER
|
||||||
void propagate_value();
|
void propagate_value();
|
||||||
wxWindow* window {nullptr};
|
wxWindow* window {nullptr};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue