@@ -786,6 +786,7 @@ void Button::catchMouseOwningFlag(const mouse_msg& msg){
786786
787787bool Button::handleEvent (const mouse_msg& msg) {
788788 bool inside = isInside (msg.x , msg.y );
789+ if (disabled) return inside;
789790
790791 // 处理其它控件焦点
791792 if (msg.is_left () && msg.is_up ()){
@@ -944,6 +945,26 @@ void Button::reset(){
944945 ripples.shrink_to_fit ();
945946}
946947
948+ void Button::disable (){
949+ disabled = true ;
950+ needRedraw = true ;
951+ if (this ->parent != nullptr ){
952+ if (Panel* p = dynamic_cast <Panel*>(this ->parent )) {
953+ p->setDirty ();
954+ }
955+ }
956+ }
957+
958+ void Button::enable (){
959+ disabled = false ;
960+ needRedraw = true ;
961+ if (this ->parent != nullptr ){
962+ if (Panel* p = dynamic_cast <Panel*>(this ->parent )) {
963+ p->setDirty ();
964+ }
965+ }
966+ }
967+
947968// InputBox 类实现
948969ButtonBuilder& ButtonBuilder::setIdentifier (const wstring& id) {
949970 identifier = id;
@@ -1264,6 +1285,8 @@ void InputBox::updateIMEPosition() {
12641285
12651286bool InputBox::handleEvent (const mouse_msg& msg) {
12661287 const bool inside = isInside (msg.x , msg.y );
1288+ if (disabled) return inside;
1289+
12671290 // 鼠标移入移出处理
12681291 if (inside) {
12691292 setCursor (IDC_IBEAM);
@@ -1750,6 +1773,26 @@ void InputBox::reset(){
17501773 ripples.shrink_to_fit ();
17511774}
17521775
1776+ void InputBox::disable (){
1777+ disabled = true ;
1778+ needRedraw = true ;
1779+ if (this ->parent != nullptr ){
1780+ if (Panel* p = dynamic_cast <Panel*>(this ->parent )) {
1781+ p->setDirty ();
1782+ }
1783+ }
1784+ }
1785+
1786+ void InputBox::enable (){
1787+ disabled = false ;
1788+ needRedraw = true ;
1789+ if (this ->parent != nullptr ){
1790+ if (Panel* p = dynamic_cast <Panel*>(this ->parent )) {
1791+ p->setDirty ();
1792+ }
1793+ }
1794+ }
1795+
17531796// Slider 类实现
17541797InputBoxBuilder& InputBoxBuilder::setIdentifier (const wstring& id) {
17551798 identifier = id;
@@ -2996,6 +3039,14 @@ bool Toggle::isBackendDirty() const {
29963039 return fabs (knobOffset - knobTarget) > 1e-3 ;
29973040}
29983041
3042+ double Toggle::getWidth (){
3043+ return width * scale;
3044+ }
3045+
3046+ double Toggle::getHeight (){
3047+ return height * scale;
3048+ }
3049+
29993050ToggleBuilder& ToggleBuilder::setCenter (double x, double y) {
30003051 cx = x; cy = y;
30013052 return *this ;
0 commit comments