From 4c4e329c8ff30446ae28ff537b2f62bbf8965bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sun, 8 Dec 2019 22:08:07 -0300 Subject: [PATCH] UINode::setSkin now can be NULL. Added tag to RadioButton::active, RadioButton::inactive, DropDownList::ListBox::item. --HG-- branch : dev --- include/eepp/ui/uilistboxitem.hpp | 4 ++++ src/eepp/ui/uilistbox.cpp | 2 +- src/eepp/ui/uilistboxitem.cpp | 11 +++++++++++ src/eepp/ui/uinode.cpp | 2 ++ src/eepp/ui/uiradiobutton.cpp | 6 +++--- src/eepp/ui/uiwidget.cpp | 6 +++++- 6 files changed, 26 insertions(+), 5 deletions(-) diff --git a/include/eepp/ui/uilistboxitem.hpp b/include/eepp/ui/uilistboxitem.hpp index 6a8d58056..3d469030f 100644 --- a/include/eepp/ui/uilistboxitem.hpp +++ b/include/eepp/ui/uilistboxitem.hpp @@ -12,8 +12,12 @@ class EE_API UIListBoxItem : public UITextView { public: static UIListBoxItem * New(); + static UIListBoxItem * NewWithTag( const std::string& tag ); + UIListBoxItem(); + UIListBoxItem( const std::string& tag ); + virtual ~UIListBoxItem(); virtual Uint32 getType() const; diff --git a/src/eepp/ui/uilistbox.cpp b/src/eepp/ui/uilistbox.cpp index e47e32523..fd69361e2 100644 --- a/src/eepp/ui/uilistbox.cpp +++ b/src/eepp/ui/uilistbox.cpp @@ -188,7 +188,7 @@ Uint32 UIListBox::addListBoxItem( const String& text ) { } UIListBoxItem * UIListBox::createListBoxItem( const String& Name ) { - UIListBoxItem * tItem = UIListBoxItem::New(); + UIListBoxItem * tItem = UIListBoxItem::NewWithTag( mTag + "::item" ); tItem->setParent( mContainer ); tItem->setTheme( mTheme ); tItem->setHorizontalAlign( UI_HALIGN_LEFT )->setVerticalAlign( UI_VALIGN_CENTER ); diff --git a/src/eepp/ui/uilistboxitem.cpp b/src/eepp/ui/uilistboxitem.cpp index 495e238e2..9346599f1 100644 --- a/src/eepp/ui/uilistboxitem.cpp +++ b/src/eepp/ui/uilistboxitem.cpp @@ -8,6 +8,10 @@ UIListBoxItem * UIListBoxItem::New() { return eeNew( UIListBoxItem, () ); } +UIListBoxItem * UIListBoxItem::NewWithTag( const std::string& tag ) { + return eeNew( UIListBoxItem, ( tag ) ); +} + UIListBoxItem::UIListBoxItem() : UITextView( "listbox::item" ) { @@ -15,6 +19,13 @@ UIListBoxItem::UIListBoxItem() : applyDefaultTheme(); } +UIListBoxItem::UIListBoxItem( const std::string& tag ) : + UITextView( tag ) +{ + setLayoutSizeRules( FIXED, FIXED ); + applyDefaultTheme(); +} + UIListBoxItem::~UIListBoxItem() { EventDispatcher * eventDispatcher = getEventDispatcher(); diff --git a/src/eepp/ui/uinode.cpp b/src/eepp/ui/uinode.cpp index fe5ea6264..072db85a4 100644 --- a/src/eepp/ui/uinode.cpp +++ b/src/eepp/ui/uinode.cpp @@ -699,6 +699,8 @@ UINode * UINode::setSkin( UISkin * skin ) { mSkinState->setState( InitialState ); onThemeLoaded(); + } else { + removeSkin(); } return this; diff --git a/src/eepp/ui/uiradiobutton.cpp b/src/eepp/ui/uiradiobutton.cpp index a2cb07fd2..7828444f3 100644 --- a/src/eepp/ui/uiradiobutton.cpp +++ b/src/eepp/ui/uiradiobutton.cpp @@ -16,14 +16,14 @@ UIRadioButton::UIRadioButton() : mActive( false ), mTextSeparation( 4 ) { - mActiveButton = UINode::New(); + mActiveButton = UIWidget::NewWithTag( "radiobutton::active" ); mActiveButton->setVisible( false ); mActiveButton->setEnabled( true ); mActiveButton->setParent( this ); mActiveButton->setPosition( 0, 0 ); mActiveButton->setSize( 16, 16 ); - mInactiveButton = UINode::New(); + mInactiveButton = UIWidget::NewWithTag( "radiobutton::inactive" ); mInactiveButton->setVisible( true ); mInactiveButton->setEnabled( true ); mInactiveButton->setParent( this ); @@ -113,7 +113,7 @@ void UIRadioButton::onSizeChange() { Uint32 UIRadioButton::onMessage( const NodeMessage * Msg ) { switch ( Msg->getMsg() ) { - case NodeMessage::Click: { + case NodeMessage::MouseUp: { if ( Msg->getFlags() & EE_BUTTON_LMASK ) { switchState(); } diff --git a/src/eepp/ui/uiwidget.cpp b/src/eepp/ui/uiwidget.cpp index 25c5d7d74..2ecbffe25 100644 --- a/src/eepp/ui/uiwidget.cpp +++ b/src/eepp/ui/uiwidget.cpp @@ -1093,7 +1093,11 @@ bool UIWidget::applyProperty( const StyleSheetProperty& attribute ) { break; case PropertyId::Skin: mSkinName = attribute.asString(); - setThemeSkin( mSkinName ); + if ( "none" == mSkinName || mSkinName.empty() ) { + removeSkin(); + } else { + setThemeSkin( mSkinName ); + } break; case PropertyId::SkinColor: setSkinColor( attribute.asColor() );