From 37f3f904c783cd8e2f6d3fde75beb809fc7698d7 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Tue, 7 Feb 2012 02:55:20 -0200 Subject: [PATCH] some fixes in MainWindow move --- modules/core_styles/styles/windows.otui | 5 +++++ modules/core_widgets/uicheckbox.lua | 1 + modules/core_widgets/uiminiwindow.lua | 1 + modules/core_widgets/uipopupmenu.lua | 3 +-- modules/core_widgets/uiwindow.lua | 3 ++- src/framework/luascript/luaobject.cpp | 12 ++++++++++++ src/framework/luascript/luaobject.h | 2 ++ src/framework/ui/uiwidget.cpp | 5 ++++- src/framework/ui/uiwidget.h | 2 +- 9 files changed, 29 insertions(+), 5 deletions(-) diff --git a/modules/core_styles/styles/windows.otui b/modules/core_styles/styles/windows.otui index e87190d5..dc05d0ac 100644 --- a/modules/core_styles/styles/windows.otui +++ b/modules/core_styles/styles/windows.otui @@ -8,13 +8,18 @@ Window < UIWindow image-source: /core_styles/images/window.png image-border: 4 image-border-top: 20 + opacity: 1 padding-top: 28 padding-left: 16 padding-right: 16 padding-bottom: 16 + $disabled: color: #aaaaaa88 + $pressed: + opacity: 0.8 + MainWindow < Window anchors.centerIn: parent diff --git a/modules/core_widgets/uicheckbox.lua b/modules/core_widgets/uicheckbox.lua index 7ba4c97d..09685d2d 100644 --- a/modules/core_widgets/uicheckbox.lua +++ b/modules/core_widgets/uicheckbox.lua @@ -10,5 +10,6 @@ end function UICheckBox:onMouseRelease(mousePos, mouseButton) if self:isPressed() and self:containsPoint(mousePos) then self:setChecked(not self:isChecked()) + return true end end diff --git a/modules/core_widgets/uiminiwindow.lua b/modules/core_widgets/uiminiwindow.lua index 2efd620b..d82b6963 100644 --- a/modules/core_widgets/uiminiwindow.lua +++ b/modules/core_widgets/uiminiwindow.lua @@ -10,6 +10,7 @@ function UIMiniWindow:onMousePress(mousePos, mouseButton) if parent:getClassName() ~= 'UIMiniWindowContainer' then self:raise() end + return true end function UIMiniWindow:onDragEnter(mousePos) diff --git a/modules/core_widgets/uipopupmenu.lua b/modules/core_widgets/uipopupmenu.lua index f34d39da..cf049507 100644 --- a/modules/core_widgets/uipopupmenu.lua +++ b/modules/core_widgets/uipopupmenu.lua @@ -51,9 +51,8 @@ function UIPopupMenu:onMousePress(mousePos, mouseButton) -- clicks outside menu area destroys the menu if not self:containsPoint(mousePos) then self:destroy() - return true end - return false + return true end function UIPopupMenu:onKeyPress(keyCode, keyboardModifiers) diff --git a/modules/core_widgets/uiwindow.lua b/modules/core_widgets/uiwindow.lua index fa1fda25..c9810e59 100644 --- a/modules/core_widgets/uiwindow.lua +++ b/modules/core_widgets/uiwindow.lua @@ -18,7 +18,8 @@ function UIWindow:onKeyPress(keyCode, keyboardModifiers) end function UIWindow:onMousePress(mousePos, mouseButton) - + self:raise() + return true end function UIWindow:onDragEnter(mousePos) diff --git a/src/framework/luascript/luaobject.cpp b/src/framework/luascript/luaobject.cpp index b1909527..da442833 100644 --- a/src/framework/luascript/luaobject.cpp +++ b/src/framework/luascript/luaobject.cpp @@ -32,6 +32,18 @@ LuaObject::~LuaObject() releaseLuaFieldsTable(); } +bool LuaObject::hasLuaField(const std::string& field) +{ + bool ret = false; + if(m_fieldsTableRef != -1) { + g_lua.getRef(m_fieldsTableRef); + g_lua.getField(field); // push the field value + ret = !g_lua.isNil(); + g_lua.pop(2); + } + return ret; +} + void LuaObject::releaseLuaFieldsTable() { if(m_fieldsTableRef != -1) { diff --git a/src/framework/luascript/luaobject.h b/src/framework/luascript/luaobject.h index 87ffedc7..6df4a81f 100644 --- a/src/framework/luascript/luaobject.h +++ b/src/framework/luascript/luaobject.h @@ -40,6 +40,8 @@ public: template R callLuaField(const std::string& field, const T&... args); + bool hasLuaField(const std::string& field); + /// Sets a field in this lua object template void setLuaField(const std::string& key, const T& value); diff --git a/src/framework/ui/uiwidget.cpp b/src/framework/ui/uiwidget.cpp index 8cc28f65..cf1ad80f 100644 --- a/src/framework/ui/uiwidget.cpp +++ b/src/framework/ui/uiwidget.cpp @@ -1191,7 +1191,10 @@ bool UIWidget::onMousePress(const Point& mousePos, Fw::MouseButton button) } else m_clickTimer.restart(); } - return callLuaField("onMousePress", mousePos, button); + + if(hasLuaField("onMousePress")) + return callLuaField("onMousePress", mousePos, button); + return true; } bool UIWidget::onMouseRelease(const Point& mousePos, Fw::MouseButton button) diff --git a/src/framework/ui/uiwidget.h b/src/framework/ui/uiwidget.h index 65b065ea..9f816002 100644 --- a/src/framework/ui/uiwidget.h +++ b/src/framework/ui/uiwidget.h @@ -319,7 +319,7 @@ public: void setPaddingRight(int padding) { m_padding.right = padding; updateLayout(); } void setPaddingBottom(int padding) { m_padding.bottom = padding; updateLayout(); } void setPaddingLeft(int padding) { m_padding.left = padding; updateLayout(); } - void setOpacity(float opacity) { m_opacity = opacity; } + void setOpacity(float opacity) { m_opacity = std::min(std::max(opacity, 0.0f), 1.0f); } int getX() { return m_rect.x(); } int getY() { return m_rect.y(); }