Browse Source

Moved Disabled Image Offset from Button to BorderImage

CheckBox disabled offset behavior
MistMage 6 years ago
parent
commit
63ef7312bf

+ 3 - 3
Source/Urho3D/AngelScript/APITemplates.h

@@ -1309,6 +1309,7 @@ template <class T> void RegisterBorderImage(asIScriptEngine* engine, const char*
     RegisterUIElement<T>(engine, className);
     engine->RegisterObjectMethod(className, "void SetFullImageRect()", asMETHOD(T, SetFullImageRect), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void SetHoverOffset(int, int)", asMETHODPR(T, SetHoverOffset, (int, int), void), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void SetDisabledOffset(int, int)", asMETHODPR(T, SetDisabledOffset, (int, int), void), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_texture(Texture@+)", asMETHOD(T, SetTexture), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "Texture@+ get_texture() const", asMETHOD(T, GetTexture), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_material(Material@+)", asMETHOD(T, SetMaterial), asCALL_THISCALL);
@@ -1321,6 +1322,8 @@ template <class T> void RegisterBorderImage(asIScriptEngine* engine, const char*
     engine->RegisterObjectMethod(className, "const IntRect& get_imageBorder() const", asMETHOD(T, GetImageBorder), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_hoverOffset(const IntVector2&in)", asMETHODPR(T, SetHoverOffset, (const IntVector2&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "const IntVector2& get_hoverOffset() const", asMETHOD(T, GetHoverOffset), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void set_disabledOffset(const IntVector2&in)", asMETHODPR(T, SetDisabledOffset, (const IntVector2&), void), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "const IntVector2& get_disabledOffset() const", asMETHOD(T, GetDisabledOffset), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_blendMode(BlendMode)", asMETHOD(T, SetBlendMode), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "BlendMode get_blendMode() const", asMETHOD(T, GetBlendMode), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_tiled(bool)", asMETHOD(T, SetTiled), asCALL_THISCALL);
@@ -1358,13 +1361,10 @@ template <class T> void RegisterButton(asIScriptEngine* engine, const char* clas
 {
     RegisterBorderImage<T>(engine, className);
     engine->RegisterObjectMethod(className, "void SetPressedOffset(int, int)", asMETHODPR(T, SetPressedOffset, (int, int), void), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "void SetDisabledOffset(int, int)", asMETHODPR(T, SetDisabledOffset, (int, int), void), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void SetPressedChildOffset(int, int)", asMETHODPR(T, SetPressedChildOffset, (int, int), void), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void SetRepeat(float, float)", asMETHOD(T, SetRepeat), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_pressedOffset(const IntVector2&in)", asMETHODPR(T, SetPressedOffset, (const IntVector2&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "const IntVector2& get_pressedOffset() const", asMETHOD(T, GetPressedOffset), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "void set_disabledOffset(const IntVector2&in)", asMETHODPR(T, SetDisabledOffset, (const IntVector2&), void), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "const IntVector2& get_disabledOffset() const", asMETHOD(T, GetDisabledOffset), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_pressedChildOffset(const IntVector2&in)", asMETHODPR(T, SetPressedChildOffset, (const IntVector2&), void), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "const IntVector2& get_pressedChildOffset() const", asMETHOD(T, GetPressedChildOffset), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_repeatDelay(float)", asMETHOD(T, SetRepeatDelay), asCALL_THISCALL);

+ 4 - 0
Source/Urho3D/LuaScript/pkgs/UI/BorderImage.pkg

@@ -14,6 +14,8 @@ class BorderImage : public UIElement
     void SetImageBorder(const IntRect& rect);
     void SetHoverOffset(const IntVector2& offset);
     void SetHoverOffset(int x, int y);
+    void SetDisabledOffset(const IntVector2& offset);
+    void SetDisabledOffset(int x, int y);
     void SetBlendMode(BlendMode mode);
     void SetTiled(bool enable);
     
@@ -22,6 +24,7 @@ class BorderImage : public UIElement
     const IntRect& GetBorder() const;
     const IntRect& GetImageBorder() const;
     const IntVector2& GetHoverOffset() const;
+    const IntVector2& GetDisabledOffset() const;
     BlendMode GetBlendMode() const;
     bool IsTiled() const;
     
@@ -30,6 +33,7 @@ class BorderImage : public UIElement
     tolua_property__get_set IntRect& border;
     tolua_property__get_set IntRect& imageBorder;
     tolua_property__get_set IntVector2& hoverOffset;
+    tolua_property__get_set IntVector2& disabledOffset;
     tolua_property__get_set BlendMode blendMode;
     tolua_property__is_set bool tiled;
 };

+ 0 - 4
Source/Urho3D/LuaScript/pkgs/UI/Button.pkg

@@ -7,8 +7,6 @@ class Button : public BorderImage
     
     void SetPressedOffset(const IntVector2& offset);
     void SetPressedOffset(int x, int y);
-    void SetDisabledOffset(const IntVector2& offset);
-    void SetDisabledOffset(int x, int y);
     void SetPressedChildOffset(const IntVector2& offset);
     void SetPressedChildOffset(int x, int y);
     void SetRepeat(float delay, float rate);
@@ -16,14 +14,12 @@ class Button : public BorderImage
     void SetRepeatRate(float rate);
     
     const IntVector2& GetPressedOffset() const;
-    const IntVector2& GetDisabledOffset() const;
     const IntVector2& GetPressedChildOffset() const;
     float GetRepeatDelay() const;
     float GetRepeatRate() const;
     bool IsPressed() const;
     
     tolua_property__get_set IntVector2& pressedOffset;
-    tolua_property__get_set IntVector2& disabledOffset;
     tolua_property__get_set IntVector2& pressedChildOffset;
     tolua_property__get_set float repeatDelay;
     tolua_property__get_set float repeatRate;

+ 16 - 1
Source/Urho3D/UI/BorderImage.cpp

@@ -41,6 +41,7 @@ BorderImage::BorderImage(Context* context) :
     border_(IntRect::ZERO),
     imageBorder_(IntRect::ZERO),
     hoverOffset_(IntVector2::ZERO),
+    disabledOffset_(IntVector2::ZERO),
     blendMode_(BLEND_REPLACE),
     tiled_(false)
 {
@@ -59,6 +60,7 @@ void BorderImage::RegisterObject(Context* context)
     URHO3D_ACCESSOR_ATTRIBUTE("Border", GetBorder, SetBorder, IntRect, IntRect::ZERO, AM_FILE);
     URHO3D_ACCESSOR_ATTRIBUTE("Image Border", GetImageBorder, SetImageBorder, IntRect, IntRect::ZERO, AM_FILE);
     URHO3D_ACCESSOR_ATTRIBUTE("Hover Image Offset", GetHoverOffset, SetHoverOffset, IntVector2, IntVector2::ZERO, AM_FILE);
+    URHO3D_ACCESSOR_ATTRIBUTE("Disabled Image Offset", GetDisabledOffset, SetDisabledOffset, IntVector2, IntVector2::ZERO, AM_FILE);
     URHO3D_ACCESSOR_ATTRIBUTE("Tiled", IsTiled, SetTiled, bool, false, AM_FILE);
     URHO3D_ENUM_ACCESSOR_ATTRIBUTE("Blend Mode", GetBlendMode, SetBlendMode, BlendMode, blendModeNames, 0, AM_FILE);
     URHO3D_MIXED_ACCESSOR_ATTRIBUTE("Material", GetMaterialAttr, SetMaterialAttr, ResourceRef, ResourceRef(Material::GetTypeStatic()),
@@ -67,7 +69,10 @@ void BorderImage::RegisterObject(Context* context)
 
 void BorderImage::GetBatches(PODVector<UIBatch>& batches, PODVector<float>& vertexData, const IntRect& currentScissor)
 {
-    GetBatches(batches, vertexData, currentScissor, hovering_ || selected_ || HasFocus() ? hoverOffset_ : IntVector2::ZERO);
+    if (enabled_)
+        GetBatches(batches, vertexData, currentScissor, (hovering_ || selected_ || HasFocus()) ? hoverOffset_ : IntVector2::ZERO);
+    else
+        GetBatches(batches, vertexData, currentScissor, disabledOffset_);
 }
 
 void BorderImage::SetTexture(Texture* texture)
@@ -115,6 +120,16 @@ void BorderImage::SetHoverOffset(int x, int y)
     hoverOffset_ = IntVector2(x, y);
 }
 
+void BorderImage::SetDisabledOffset(const IntVector2& offset)
+{
+    disabledOffset_ = offset;
+}
+
+void BorderImage::SetDisabledOffset(int x, int y)
+{
+    disabledOffset_ = IntVector2(x, y);
+}
+
 void BorderImage::SetBlendMode(BlendMode mode)
 {
     blendMode_ = mode;

+ 9 - 0
Source/Urho3D/UI/BorderImage.h

@@ -61,6 +61,10 @@ public:
     void SetHoverOffset(const IntVector2& offset);
     /// Set offset to image rectangle used on hover.
     void SetHoverOffset(int x, int y);
+    /// Set offset to image rectangle used when disabled.
+    void SetDisabledOffset(const IntVector2& offset);
+    /// Set offset to image rectangle used when disabled.
+    void SetDisabledOffset(int x, int y);
     /// Set blend mode.
     void SetBlendMode(BlendMode mode);
     /// Set tiled mode.
@@ -83,6 +87,9 @@ public:
     /// Return offset to image rectangle used on hover.
     const IntVector2& GetHoverOffset() const { return hoverOffset_; }
 
+    /// Return offset to image rectangle used when disabled.
+    const IntVector2& GetDisabledOffset() const { return disabledOffset_; }
+
     /// Return blend mode.
     BlendMode GetBlendMode() const { return blendMode_; }
 
@@ -116,6 +123,8 @@ protected:
     IntRect imageBorder_;
     /// Offset to image rectangle on hover.
     IntVector2 hoverOffset_;
+    /// Offset to image rectangle when disabled.
+    IntVector2 disabledOffset_;
     /// Blend mode flag.
     BlendMode blendMode_;
     /// Tiled flag.

+ 0 - 12
Source/Urho3D/UI/Button.cpp

@@ -38,7 +38,6 @@ extern const char* UI_CATEGORY;
 Button::Button(Context* context) :
     BorderImage(context),
     pressedOffset_(IntVector2::ZERO),
-    disabledOffset_(IntVector2::ZERO),
     pressedChildOffset_(IntVector2::ZERO),
     repeatDelay_(1.0f),
     repeatRate_(0.0f),
@@ -59,7 +58,6 @@ void Button::RegisterObject(Context* context)
     URHO3D_UPDATE_ATTRIBUTE_DEFAULT_VALUE("Is Enabled", true);
     URHO3D_UPDATE_ATTRIBUTE_DEFAULT_VALUE("Focus Mode", FM_FOCUSABLE);
     URHO3D_ACCESSOR_ATTRIBUTE("Pressed Image Offset", GetPressedOffset, SetPressedOffset, IntVector2, IntVector2::ZERO, AM_FILE);
-    URHO3D_ACCESSOR_ATTRIBUTE("Disabled Image Offset", GetDisabledOffset, SetDisabledOffset, IntVector2, IntVector2::ZERO, AM_FILE);
     URHO3D_ACCESSOR_ATTRIBUTE("Pressed Child Offset", GetPressedChildOffset, SetPressedChildOffset, IntVector2, IntVector2::ZERO, AM_FILE);
     URHO3D_ACCESSOR_ATTRIBUTE("Repeat Delay", GetRepeatDelay, SetRepeatDelay, float, 1.0f, AM_FILE);
     URHO3D_ACCESSOR_ATTRIBUTE("Repeat Rate", GetRepeatRate, SetRepeatRate, float, 0.0f, AM_FILE);
@@ -166,16 +164,6 @@ void Button::SetPressedOffset(int x, int y)
     pressedOffset_ = IntVector2(x, y);
 }
 
-void Button::SetDisabledOffset(const IntVector2& offset)
-{
-    disabledOffset_ = offset;
-}
-
-void Button::SetDisabledOffset(int x, int y)
-{
-    disabledOffset_ = IntVector2(x, y);
-}
-
 void Button::SetPressedChildOffset(const IntVector2& offset)
 {
     pressedChildOffset_ = offset;

+ 0 - 9
Source/Urho3D/UI/Button.h

@@ -62,10 +62,6 @@ public:
     void SetPressedOffset(const IntVector2& offset);
     /// Set offset to image rectangle used when pressed.
     void SetPressedOffset(int x, int y);
-    /// Set offset to image rectangle used when disabled.
-    void SetDisabledOffset(const IntVector2& offset);
-    /// Set offset to image rectangle used when disabled.
-    void SetDisabledOffset(int x, int y);
     /// Set offset of child elements when pressed.
     void SetPressedChildOffset(const IntVector2& offset);
     /// Set offset of child elements when pressed.
@@ -80,9 +76,6 @@ public:
     /// Return pressed image offset.
     const IntVector2& GetPressedOffset() const { return pressedOffset_; }
 
-    /// Return disabled image offset.
-    const IntVector2& GetDisabledOffset() const { return disabledOffset_; }
-
     /// Return offset of child elements when pressed.
     const IntVector2& GetPressedChildOffset() const { return pressedChildOffset_; }
 
@@ -101,8 +94,6 @@ protected:
 
     /// Pressed image offset.
     IntVector2 pressedOffset_;
-    /// Disabled image offset.
-    IntVector2 disabledOffset_;
     /// Pressed label offset.
     IntVector2 pressedChildOffset_;
     /// Repeat delay.

+ 7 - 2
Source/Urho3D/UI/CheckBox.cpp

@@ -59,8 +59,13 @@ void CheckBox::RegisterObject(Context* context)
 void CheckBox::GetBatches(PODVector<UIBatch>& batches, PODVector<float>& vertexData, const IntRect& currentScissor)
 {
     IntVector2 offset(IntVector2::ZERO);
-    if (hovering_ || selected_ || HasFocus())
-        offset += hoverOffset_;
+    if (enabled_)
+    {
+        if (hovering_ || selected_ || HasFocus())
+            offset += hoverOffset_;
+    }
+    else
+        offset += disabledOffset_;
     if (checked_)
         offset += checkedOffset_;