diff --git a/bin/assets/ui/uitheme.eta b/bin/assets/ui/uitheme.eta index 40f1b1e21..d81598a53 100644 Binary files a/bin/assets/ui/uitheme.eta and b/bin/assets/ui/uitheme.eta differ diff --git a/bin/assets/ui/uitheme.png b/bin/assets/ui/uitheme.png index b3a3fb5e2..236863c65 100644 Binary files a/bin/assets/ui/uitheme.png and b/bin/assets/ui/uitheme.png differ diff --git a/bin/assets/ui/uitheme/uitheme_tabcontainer_normal.3_0_3_3.9.png b/bin/assets/ui/uitheme/uitheme_tabcontainer_normal.3_0_3_3.9.png index d006647f6..0352b9203 100644 Binary files a/bin/assets/ui/uitheme/uitheme_tabcontainer_normal.3_0_3_3.9.png and b/bin/assets/ui/uitheme/uitheme_tabcontainer_normal.3_0_3_3.9.png differ diff --git a/bin/assets/ui/uitheme1.5x.eta b/bin/assets/ui/uitheme1.5x.eta index 34c26915b..6b9f0bcff 100644 Binary files a/bin/assets/ui/uitheme1.5x.eta and b/bin/assets/ui/uitheme1.5x.eta differ diff --git a/bin/assets/ui/uitheme1.5x.png b/bin/assets/ui/uitheme1.5x.png index f6acf049a..f868ccf95 100644 Binary files a/bin/assets/ui/uitheme1.5x.png and b/bin/assets/ui/uitheme1.5x.png differ diff --git a/bin/assets/ui/uitheme1.5x/uitheme1.5x_tabcontainer_normal.4_0_4_4.9.png b/bin/assets/ui/uitheme1.5x/uitheme1.5x_tabcontainer_normal.4_0_4_4.9.png index eed5f8364..d35bac015 100644 Binary files a/bin/assets/ui/uitheme1.5x/uitheme1.5x_tabcontainer_normal.4_0_4_4.9.png and b/bin/assets/ui/uitheme1.5x/uitheme1.5x_tabcontainer_normal.4_0_4_4.9.png differ diff --git a/bin/assets/ui/uitheme2x.eta b/bin/assets/ui/uitheme2x.eta index 90e92ebe8..434483c62 100644 Binary files a/bin/assets/ui/uitheme2x.eta and b/bin/assets/ui/uitheme2x.eta differ diff --git a/include/eepp/ui/tools/textureatlaseditor.hpp b/include/eepp/ui/tools/textureatlaseditor.hpp index be947b6e6..286386d01 100644 --- a/include/eepp/ui/tools/textureatlaseditor.hpp +++ b/include/eepp/ui/tools/textureatlaseditor.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -52,6 +53,7 @@ class EE_API TextureAtlasEditor { UISpinBox * mSpinDestW; UISpinBox * mSpinDestH; UIListBox * mTextureRegionList; + UIGridLayout * mTextureRegionGrid; UIWinMenu * mWinMenu; UIDropDownList * mTextureFilterList; TextureAtlasTextureRegionEditor * mTextureRegionEditor; diff --git a/include/eepp/ui/uimanager.hpp b/include/eepp/ui/uimanager.hpp index eaa70f06b..b249f35c2 100644 --- a/include/eepp/ui/uimanager.hpp +++ b/include/eepp/ui/uimanager.hpp @@ -177,6 +177,7 @@ class EE_API UIManager { Color mHighlightFocusColor; Color mHighlightOverColor; Color mHighlightInvalidationColor; + Vector2i mMousePos; Vector2i mMouseDownPos; bool mInit; diff --git a/src/eepp/ui/tools/textureatlaseditor.cpp b/src/eepp/ui/tools/textureatlaseditor.cpp index 4e369840c..62b80b6de 100644 --- a/src/eepp/ui/tools/textureatlaseditor.cpp +++ b/src/eepp/ui/tools/textureatlaseditor.cpp @@ -46,59 +46,67 @@ TextureAtlasEditor::TextureAtlasEditor( UIWindow * AttatchTo, const TGEditorClos mUIContainer = mUIWindow->getContainer(); } - std::string layout = - "" - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " Linear" - " Nearest" - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - ""; + std::string layout = R"xml( + + + + + + + + + + + + + + + + + + + Linear + Nearest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )xml"; UIWidgetCreator::addCustomWidgetCallback( "TextureAtlasTextureRegionEditor", cb::Make1( this, &TextureAtlasEditor::createTextureAtlasTextureRegionEditor ) ); @@ -109,6 +117,8 @@ TextureAtlasEditor::TextureAtlasEditor( UIWindow * AttatchTo, const TGEditorClos mUIContainer->bind( "TextureRegionList", mTextureRegionList ); mTextureRegionList->addEventListener( UIEvent::OnItemSelected, cb::Make1( this, &TextureAtlasEditor::onTextureRegionChange ) ); + mUIContainer->bind( "gridlayout", mTextureRegionGrid ); + mUIContainer->bind( "offX", mSpinOffX ); mSpinOffX->addEventListener( UIEvent::OnValueChange, cb::Make1( this, &TextureAtlasEditor::onOffXChange ) ); @@ -314,11 +324,48 @@ void TextureAtlasEditor::fillTextureRegionList() { } mTextureRegionList->getVerticalScrollBar()->setClickStep( 8.f / (Float)mTextureRegionList->getCount() ); + + if ( Res.size() > 0 ) { + mTextureRegionGrid->childsCloseAll(); + + for ( auto it = Res.begin(); it != Res.end(); ++it ) { + TextureRegion * tr = (*it); + + UIImage::New() + ->setDrawable( tr ) + ->setScaleType( UIScaleType::FitInside ) + ->setTooltipText( tr->getName() ) + ->setGravity( UI_HALIGN_CENTER | UI_VALIGN_CENTER ) + ->setParent( mTextureRegionGrid ) + ->addEventListener( UIEvent::MouseClick, cb::Make1( this, &TextureAtlasEditor::onTextureRegionChange ) );; + } + } } void TextureAtlasEditor::onTextureRegionChange( const UIEvent * Event ) { if ( NULL != mTextureAtlasLoader && NULL != mTextureAtlasLoader->getTextureAtlas() ) { - mCurTextureRegion = mTextureAtlasLoader->getTextureAtlas()->getByName( mTextureRegionList->getItemSelectedText() ); + mCurTextureRegion = Event->getControl()->isType( UI_TYPE_IMAGE ) ? + mTextureAtlasLoader->getTextureAtlas()->getByName( static_cast( Event->getControl() )->getTooltipText() ) : + mTextureAtlasLoader->getTextureAtlas()->getByName( mTextureRegionList->getItemSelectedText() ); + + if ( Event->getControl()->isType( UI_TYPE_IMAGE ) ) + mTextureRegionList->setSelected( static_cast( Event->getControl() )->getTooltipText() ); + + UINode * node = mTextureRegionGrid->getFirstChild(); + + while ( node ) { + if ( node->isType( UI_TYPE_IMAGE ) ) { + UIImage * curImage = static_cast( node ); + + if ( curImage->getDrawable() == mCurTextureRegion ) { + curImage->setBackgroundFillEnabled( true )->setColor( Color( "#00000033" ) ); + } else { + curImage->setBackgroundFillEnabled( false ); + } + } + + node = node->getNextNode(); + }; if ( NULL != mCurTextureRegion ) { mTextureRegionEditor->setTextureRegion( mCurTextureRegion ); diff --git a/src/eepp/ui/uimanager.cpp b/src/eepp/ui/uimanager.cpp index 893c7f933..74a60186d 100644 --- a/src/eepp/ui/uimanager.cpp +++ b/src/eepp/ui/uimanager.cpp @@ -216,34 +216,37 @@ void UIManager::update( const Time& elapsed ) { mControl->update( elapsed ); - UINode * pOver = mControl->overFind( mKM->getMousePosFromView( mWindow->getDefaultView() ) ); + Vector2f mousePosf( mKM->getMousePosFromView( mWindow->getDefaultView() ) ); + mMousePos = Vector2i( mousePosf.x, mousePosf.y ); + + UINode * pOver = mControl->overFind( mousePosf ); if ( pOver != mOverControl ) { if ( NULL != mOverControl ) { sendMsg( mOverControl, UIMessage::MouseExit ); - mOverControl->onMouseExit( mKM->getMousePos(), 0 ); + mOverControl->onMouseExit( mMousePos, 0 ); } mOverControl = pOver; if ( NULL != mOverControl ) { sendMsg( mOverControl, UIMessage::MouseEnter ); - mOverControl->onMouseEnter( mKM->getMousePos(), 0 ); + mOverControl->onMouseEnter( mMousePos, 0 ); } } else { if ( NULL != mOverControl ) - mOverControl->onMouseMove( mKM->getMousePos(), mKM->getPressTrigger() ); + mOverControl->onMouseMove( mMousePos, mKM->getPressTrigger() ); } if ( mKM->getPressTrigger() ) { if ( NULL != mOverControl ) { - mOverControl->onMouseDown( mKM->getMousePos(), mKM->getPressTrigger() ); + mOverControl->onMouseDown( mMousePos, mKM->getPressTrigger() ); sendMsg( mOverControl, UIMessage::MouseDown, mKM->getPressTrigger() ); } if ( !mFirstPress ) { mDownControl = mOverControl; - mMouseDownPos = mKM->getMousePos(); + mMouseDownPos = mMousePos; mFirstPress = true; } @@ -255,16 +258,16 @@ void UIManager::update( const Time& elapsed ) { if ( mOverControl != mFocusControl ) setFocusControl( mOverControl ); - mFocusControl->onMouseUp( mKM->getMousePos(), mKM->getReleaseTrigger() ); + mFocusControl->onMouseUp( mMousePos, mKM->getReleaseTrigger() ); sendMsg( mFocusControl, UIMessage::MouseUp, mKM->getReleaseTrigger() ); if ( mKM->getClickTrigger() ) { sendMsg( mFocusControl, UIMessage::Click, mKM->getClickTrigger() ); - mFocusControl->onMouseClick( mKM->getMousePos(), mKM->getClickTrigger() ); + mFocusControl->onMouseClick( mMousePos, mKM->getClickTrigger() ); if ( mKM->getDoubleClickTrigger() ) { sendMsg( mFocusControl, UIMessage::DoubleClick, mKM->getDoubleClickTrigger() ); - mFocusControl->onMouseDoubleClick( mKM->getMousePos(), mKM->getDoubleClickTrigger() ); + mFocusControl->onMouseDoubleClick( mMousePos, mKM->getDoubleClickTrigger() ); } } } @@ -303,7 +306,7 @@ const Time& UIManager::getElapsed() const { } Vector2i UIManager::getMousePos() { - return mKM->getMousePos(); + return mMousePos; } Input * UIManager::getInput() const { diff --git a/src/eepp/ui/uiscrollview.cpp b/src/eepp/ui/uiscrollview.cpp index 9608e6596..93453f4d8 100644 --- a/src/eepp/ui/uiscrollview.cpp +++ b/src/eepp/ui/uiscrollview.cpp @@ -212,7 +212,7 @@ void UIScrollView::onTouchDragValueChange( Vector2f diff ) { bool UIScrollView::isTouchOverAllowedChilds() { bool ret = mViewType == Exclusive ? !mVScroll->isMouseOverMeOrChilds() && !mHScroll->isMouseOverMeOrChilds() : true; - return isMouseOverMeOrChilds() && mScrollView->isMouseOver() && ret; + return isMouseOverMeOrChilds() && mScrollView->isMouseOverMeOrChilds() && ret; } void UIScrollView::loadFromXmlNode( const pugi::xml_node& node ) { diff --git a/src/eepp/ui/uitab.cpp b/src/eepp/ui/uitab.cpp index 71e6de845..0aa3c97fe 100644 --- a/src/eepp/ui/uitab.cpp +++ b/src/eepp/ui/uitab.cpp @@ -185,7 +185,9 @@ void UITab::loadFromXmlNode(const pugi::xml_node & node) { std::string name = ait->name(); String::toLowerInPlace( name ); - if ( "controlowned" == name || "owns" == name ) { + if ( "name" == name || "text" == name ) { + setText( ait->as_string() ); + } else if ( "controlowned" == name || "owns" == name ) { mOwnedName = ait->as_string(); setOwnedControl(); } diff --git a/src/eepp/ui/uithemedefault.cpp b/src/eepp/ui/uithemedefault.cpp index b590f9e6d..20595d9c8 100644 --- a/src/eepp/ui/uithemedefault.cpp +++ b/src/eepp/ui/uithemedefault.cpp @@ -28,7 +28,7 @@ UITabWidgetStyleConfig UIThemeDefault::getTabWidgetStyleConfig() { tabWidgetStyleConfig.TabSeparation = -1; tabWidgetStyleConfig.FontSelectedColor = Color( 255, 255, 255, 255 ); tabWidgetStyleConfig.DrawLineBelowTabs = true; - tabWidgetStyleConfig.LineBelowTabsColor = Color( 0, 0, 0, 255 ); + tabWidgetStyleConfig.LineBelowTabsColor = Color( "#2f3030" ); tabWidgetStyleConfig.LineBelowTabsYOffset = -1; return tabWidgetStyleConfig; } diff --git a/src/eepp/ui/uitouchdragablewidget.cpp b/src/eepp/ui/uitouchdragablewidget.cpp index a62464ce6..13175b3f0 100644 --- a/src/eepp/ui/uitouchdragablewidget.cpp +++ b/src/eepp/ui/uitouchdragablewidget.cpp @@ -81,8 +81,8 @@ void UITouchDragableWidget::update( const Time& time ) { } } else { // Mouse Down - if ( isTouchOverAllowedChilds() && !manager->isControlDragging() ) { - if ( Press & EE_BUTTON_LMASK ) { + if ( Press & EE_BUTTON_LMASK ) { + if ( isTouchOverAllowedChilds() && !manager->isControlDragging() ) { writeCtrlFlag( NODE_FLAG_TOUCH_DRAGGING, 1 ); mTouchDragPoint = Vector2f( manager->getMousePos().x, manager->getMousePos().y );