Mercurial > octave
diff libgui/graphics/CheckBoxControl.cc @ 28248:aee0f20c8029
Implement "gray" when uicontrol radiobutton/checkbox are disabled (bug #57128)
* BaseControl.cc (updatePalette): Call setColor() with additional argument of
"QPalette::Active" and again with "QPalette::Inactive" so that colors are set
only for specific roles.
* CheckBoxControl.h (CheckBoxControl): Declare new private member function
update().
* CheckBoxControl.cc (CheckBoxControl): Check for "Enable" property value of
"inactive" and call setCheckable (false) if found.
* CheckBoxControl.cc (update): New function to intercept and handle change to
"Enable" property before forwarding to BaseControl.
* RadioButtonControl.cc (RadioButtonControl): Check for "Enable" property value
of "inactive" and call setCheckable (false) if found.
* RadioButtonControl.cc (update): New function to intercept and handle change
to "Enable" property before forwarding to BaseControl.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 26 Apr 2020 18:15:30 -0700 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
line wrap: on
line diff
--- a/libgui/graphics/CheckBoxControl.cc Sun Apr 26 15:11:51 2020 -0700 +++ b/libgui/graphics/CheckBoxControl.cc Sun Apr 26 18:15:30 2020 -0700 @@ -61,10 +61,37 @@ const graphics_object& go, QCheckBox *box) : ButtonControl (oct_obj, interp, go, box) { + uicontrol::properties& up = properties<uicontrol> (); + box->setAutoFillBackground (true); + if (up.enable_is ("inactive")) + box->setCheckable (false); } CheckBoxControl::~CheckBoxControl (void) { } + void + CheckBoxControl::update (int pId) + { + uicontrol::properties& up = properties<uicontrol> (); + QCheckBox *box = qWidget<QCheckBox> (); + + switch (pId) + { + case uicontrol::properties::ID_ENABLE: + { + if (up.enable_is ("inactive")) + box->setCheckable (false); + else + box->setCheckable (true); + ButtonControl::update (pId); + } + break; + + default: + ButtonControl::update (pId); + break; + } + } };