diff --git a/include/eepp/graphics/drawablegroup.hpp b/include/eepp/graphics/drawablegroup.hpp index 21753ccd5..34743b560 100644 --- a/include/eepp/graphics/drawablegroup.hpp +++ b/include/eepp/graphics/drawablegroup.hpp @@ -50,6 +50,8 @@ class EE_API DrawableGroup : public Drawable { virtual void onPositionChange(); + virtual void onAlphaChange(); + void update(); }; diff --git a/include/eepp/ui/tools/uicolorpicker.hpp b/include/eepp/ui/tools/uicolorpicker.hpp index 841c5dfe1..6fdc97330 100644 --- a/include/eepp/ui/tools/uicolorpicker.hpp +++ b/include/eepp/ui/tools/uicolorpicker.hpp @@ -47,6 +47,8 @@ class EE_API UIColorPicker { UIWindow* getUIWindow() const; + void closePicker(); + protected: UIWindow* mUIWindow; Node* mUIContainer; @@ -70,6 +72,8 @@ class EE_API UIColorPicker { Uint8 mDefModalAlpha; bool mUpdating; + void onKeyDown( const KeyEvent& event ); + void windowClose( const Event* Event ); Texture* createHueTexture( const Sizef& size ); diff --git a/include/eepp/ui/uicodeeditor.hpp b/include/eepp/ui/uicodeeditor.hpp index 42b5faca2..fd0127f8c 100644 --- a/include/eepp/ui/uicodeeditor.hpp +++ b/include/eepp/ui/uicodeeditor.hpp @@ -312,7 +312,7 @@ class EE_API UICodeEditor : public UIWidget, public TextDocument::Client { virtual Uint32 onTextInput( const TextInputEvent& event ); - virtual Uint32 onKeyDown( const KeyEvent& Event ); + virtual Uint32 onKeyDown( const KeyEvent& event ); virtual Uint32 onMouseDown( const Vector2i& position, const Uint32& flags ); diff --git a/src/eepp/graphics/convexshapedrawable.cpp b/src/eepp/graphics/convexshapedrawable.cpp index b38dccba7..775d05fd6 100644 --- a/src/eepp/graphics/convexshapedrawable.cpp +++ b/src/eepp/graphics/convexshapedrawable.cpp @@ -59,7 +59,12 @@ void ConvexShapeDrawable::updateVertex() { if ( mIndexColor.empty() ) { mVertexBuffer->addColor( mColor ); } else { - mVertexBuffer->addColor( mIndexColor[i & mIndexColor.size()] ); + if ( mColor.a == 255 ) { + mVertexBuffer->addColor( mIndexColor[i & mIndexColor.size()] ); + } else { + mVertexBuffer->addColor( + Color( mIndexColor[i & mIndexColor.size()] ).blendAlpha( mColor.a ) ); + } } } @@ -70,7 +75,7 @@ void ConvexShapeDrawable::updateVertex() { if ( mIndexColor.empty() ) { mVertexBuffer->addColor( mColor ); } else { - mVertexBuffer->addColor( mIndexColor[0] ); + mVertexBuffer->addColor( Color( mIndexColor[0] ).blendAlpha( mColor.a ) ); } for ( Uint32 i = 0; i < mPolygon.getSize(); i++ ) { @@ -78,7 +83,12 @@ void ConvexShapeDrawable::updateVertex() { if ( mIndexColor.empty() ) { mVertexBuffer->addColor( mColor ); } else { - mVertexBuffer->addColor( mIndexColor[i & mIndexColor.size()] ); + if ( mColor.a == 255 ) { + mVertexBuffer->addColor( mIndexColor[i & mIndexColor.size()] ); + } else { + mVertexBuffer->addColor( + Color( mIndexColor[i & mIndexColor.size()] ).blendAlpha( mColor.a ) ); + } } } @@ -86,7 +96,8 @@ void ConvexShapeDrawable::updateVertex() { if ( mIndexColor.empty() ) { mVertexBuffer->addColor( mColor ); } else { - mVertexBuffer->addColor( mIndexColor[mIndexColor.size() - 1] ); + mVertexBuffer->addColor( + Color( mIndexColor[mIndexColor.size() - 1] ).blendAlpha( mColor.a ) ); } break; diff --git a/src/eepp/graphics/drawablegroup.cpp b/src/eepp/graphics/drawablegroup.cpp index 9e704345a..ded863283 100644 --- a/src/eepp/graphics/drawablegroup.cpp +++ b/src/eepp/graphics/drawablegroup.cpp @@ -105,6 +105,13 @@ void DrawableGroup::onPositionChange() { mNeedsUpdate = true; } +void DrawableGroup::onAlphaChange() { + for ( std::size_t i = 0; i < mGroup.size(); i++ ) { + Drawable* drawable = mGroup[i]; + drawable->setAlpha( getAlpha() ); + } +} + void DrawableGroup::update() { Sizef nSize( mSize ); diff --git a/src/eepp/graphics/rectangledrawable.cpp b/src/eepp/graphics/rectangledrawable.cpp index 2cdcab9c3..c2dfd58f8 100644 --- a/src/eepp/graphics/rectangledrawable.cpp +++ b/src/eepp/graphics/rectangledrawable.cpp @@ -54,8 +54,17 @@ void RectangleDrawable::draw( const Vector2f& position, const Sizef& size ) { if ( mCorners == 0 ) { if ( mUsingRectColors ) { - drawRectangle( Rectf( mPosition, mSize ), mRectColors.TopLeft, mRectColors.BottomLeft, - mRectColors.BottomRight, mRectColors.TopRight, mRotation, mScale ); + if ( mColor.a == 255 ) { + drawRectangle( Rectf( mPosition, mSize ), mRectColors.TopLeft, + mRectColors.BottomLeft, mRectColors.BottomRight, + mRectColors.TopRight, mRotation, mScale ); + } else { + drawRectangle( + Rectf( mPosition, mSize ), Color( mRectColors.TopLeft ).blendAlpha( mColor.a ), + Color( mRectColors.BottomLeft ).blendAlpha( mColor.a ), + Color( mRectColors.BottomRight ).blendAlpha( mColor.a ), + Color( mRectColors.TopRight ).blendAlpha( mColor.a ), mRotation, mScale ); + } } else { drawRectangle( Rectf( mPosition, mSize ), mColor, mColor, mColor, mColor, mRotation, mScale ); diff --git a/src/eepp/ui/tools/uicolorpicker.cpp b/src/eepp/ui/tools/uicolorpicker.cpp index 27af64f38..e75202225 100644 --- a/src/eepp/ui/tools/uicolorpicker.cpp +++ b/src/eepp/ui/tools/uicolorpicker.cpp @@ -259,12 +259,11 @@ UIColorPicker::UIColorPicker( UIWindow* attachTo, const UIColorPicker::ColorPick mRoot->getUISceneNode()->getUIThemeManager()->getControlsFadeOutTime() ) ); } } - mUIWindow->getModalControl()->addEventListener( Event::MouseClick, [&]( const Event* ) { - if ( mModalAlpha != 0.f && - mRoot->getUISceneNode()->getUIThemeManager()->getDefaultEffectsEnabled() ) - mUIWindow->getModalControl()->runAction( Actions::FadeOut::New( - mRoot->getUISceneNode()->getUIThemeManager()->getControlsFadeOutTime() ) ); - mUIWindow->closeWindow(); + mUIWindow->getModalControl()->addEventListener( Event::MouseClick, + [&]( const Event* ) { closePicker(); } ); + mUIWindow->addEventListener( Event::KeyDown, [&]( const Event* event ) { + const KeyEvent* keyEvent = static_cast( event ); + onKeyDown( *keyEvent ); } ); } @@ -291,6 +290,8 @@ UIColorPicker::UIColorPicker( UIWindow* attachTo, const UIColorPicker::ColorPick } } ); + mRoot->setFocus(); + registerEvents(); } @@ -324,6 +325,20 @@ UIWindow* UIColorPicker::getUIWindow() const { return mUIWindow; } +void UIColorPicker::closePicker() { + if ( mModalAlpha != 0.f && + mRoot->getUISceneNode()->getUIThemeManager()->getDefaultEffectsEnabled() ) + mUIWindow->getModalControl()->runAction( Actions::FadeOut::New( + mRoot->getUISceneNode()->getUIThemeManager()->getControlsFadeOutTime() ) ); + mUIWindow->closeWindow(); +} + +void UIColorPicker::onKeyDown( const KeyEvent& event ) { + if ( event.getKeyCode() == KEY_ESCAPE ) { + closePicker(); + } +} + Uint8 UIColorPicker::getModalAlpha() const { return mModalAlpha; } diff --git a/src/eepp/ui/uiborderdrawable.cpp b/src/eepp/ui/uiborderdrawable.cpp index 4de06f5e2..c32186639 100644 --- a/src/eepp/ui/uiborderdrawable.cpp +++ b/src/eepp/ui/uiborderdrawable.cpp @@ -98,7 +98,7 @@ Color UIBorderDrawable::getColorLeft() const { void UIBorderDrawable::setColorLeft( const Color& colorLeft ) { if ( mBorders.left.color != colorLeft ) { - mBorders.left.color = colorLeft; + mBorders.left.color = Color( colorLeft ).blendAlpha( mColor.a ); mBorders.left.realColor = colorLeft; mColorNeedsUpdate = true; } @@ -110,7 +110,7 @@ Color UIBorderDrawable::getColorRight() const { void UIBorderDrawable::setColorRight( const Color& colorRight ) { if ( mBorders.right.color != colorRight ) { - mBorders.right.color = colorRight; + mBorders.right.color = Color( colorRight ).blendAlpha( mColor.a ); mBorders.right.realColor = colorRight; mColorNeedsUpdate = true; } @@ -122,7 +122,7 @@ Color UIBorderDrawable::getColorTop() const { void UIBorderDrawable::setColorTop( const Color& colorTop ) { if ( mBorders.top.color != colorTop ) { - mBorders.top.color = colorTop; + mBorders.top.color = Color( colorTop ).blendAlpha( mColor.a ); mBorders.top.realColor = colorTop; mColorNeedsUpdate = true; } @@ -134,7 +134,7 @@ Color UIBorderDrawable::getColorBottom() const { void UIBorderDrawable::setColorBottom( const Color& colorBottom ) { if ( mBorders.bottom.color != colorBottom ) { - mBorders.bottom.color = colorBottom; + mBorders.bottom.color = Color( colorBottom ).blendAlpha( mColor.a ); mBorders.bottom.realColor = colorBottom; mColorNeedsUpdate = true; } diff --git a/src/eepp/ui/uicodeeditor.cpp b/src/eepp/ui/uicodeeditor.cpp index a9c24a797..d2d0d412a 100644 --- a/src/eepp/ui/uicodeeditor.cpp +++ b/src/eepp/ui/uicodeeditor.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -588,8 +589,11 @@ void UICodeEditor::checkColorPickerAction() { } } if ( colorPicker ) - colorPicker->getUIWindow()->addEventListener( Event::OnWindowClose, - [&]( const Event* ) { setFocus(); } ); + colorPicker->getUIWindow()->addEventListener( + Event::OnWindowClose, [&]( const Event* ) { + if ( !SceneManager::instance()->isShootingDown() ) + setFocus(); + } ); } } diff --git a/src/eepp/ui/uinodedrawable.cpp b/src/eepp/ui/uinodedrawable.cpp index ee44d0096..cbb4d24fa 100644 --- a/src/eepp/ui/uinodedrawable.cpp +++ b/src/eepp/ui/uinodedrawable.cpp @@ -294,11 +294,11 @@ void UINodeDrawable::LayerDrawable::draw( const Vector2f& position, const Sizef& if ( mDrawable == NULL ) return; - mDrawable->setAlpha( getAlpha() ); - if ( mNeedsUpdate ) update(); + mDrawable->setAlpha( getAlpha() ); + switch ( mRepeat ) { case Repeat::NoRepeat: mDrawable->draw( mPosition + mOffset, mDrawableSize ); diff --git a/src/tools/codeeditor/codeeditor.cpp b/src/tools/codeeditor/codeeditor.cpp index be45f5da5..f8c424e14 100644 --- a/src/tools/codeeditor/codeeditor.cpp +++ b/src/tools/codeeditor/codeeditor.cpp @@ -947,8 +947,11 @@ void App::init( const std::string& file, const Float& pidelDensity ) { mTheme = UITheme::load( "uitheme", "uitheme", "", font, resPath + "assets/ui/breeze.css" ); mUISceneNode->setStyleSheet( mTheme->getStyleSheet() ); - mUISceneNode->getUIThemeManager()->setDefaultTheme( mTheme )->setDefaultFont( font )->add( - mTheme ); + mUISceneNode->getUIThemeManager() + //->setDefaultEffectsEnabled( true ) + ->setDefaultTheme( mTheme ) + ->setDefaultFont( font ) + ->add( mTheme ); auto colorSchemes = SyntaxColorScheme::loadFromFile( resPath + "assets/colorschemes/colorschemes.conf" );