too many changes to list, many regressions were made, master will be UNSTABLE for a few days

This commit is contained in:
Eduardo Bart
2011-12-03 19:41:37 -02:00
parent 19eb56997d
commit f548825faf
80 changed files with 1881 additions and 1843 deletions

View File

@@ -40,13 +40,12 @@ void UIFrameCounter::render()
{
UIWidget::render();
int now = g_clock.ticks();
if(now - m_lastFrameTicks >= 1000) {
if(g_clock.ticksElapsed(m_lastFrameTicks) >= 1000) {
m_fpsText = Fw::mkstr("FPS: ", m_frameCount);
m_lastFrameTicks = now;
m_lastFrameTicks = g_clock.ticks();
m_frameCount = 0;
} else
m_frameCount++;
}
m_frameCount++;
m_font->renderText(m_fpsText, m_rect, m_align, Fw::white);
}

View File

@@ -41,7 +41,7 @@ protected:
private:
Fw::AlignmentFlag m_align;
int m_frameCount;
int m_lastFrameTicks;
ticks_t m_lastFrameTicks;
std::string m_fpsText;
};

View File

@@ -23,7 +23,7 @@
#include "uilineedit.h"
#include <framework/graphics/font.h>
#include <framework/graphics/graphics.h>
#include <framework/platform/platform.h>
#include <framework/platform/platformwindow.h>
#include <framework/core/clock.h>
#include <framework/otml/otmlnode.h>
@@ -56,8 +56,7 @@ void UILineEdit::render()
assert(m_cursorPos <= textLength);
// draw every 333ms
const int delay = 333;
int ticks = g_clock.ticks();
if(ticks - m_cursorTicks <= delay) {
if(g_clock.ticksElapsed(m_cursorTicks) <= delay) {
Rect cursorRect;
// when cursor is at 0 or is the first visible element
if(m_cursorPos == 0 || m_cursorPos == m_startRenderPos)
@@ -65,8 +64,8 @@ void UILineEdit::render()
else
cursorRect = Rect(m_glyphsCoords[m_cursorPos-1].right(), m_glyphsCoords[m_cursorPos-1].top(), 1, m_font->getGlyphHeight());
g_graphics.drawFilledRect(cursorRect);
} else if(ticks - m_cursorTicks >= 2*delay) {
m_cursorTicks = ticks;
} else if(g_clock.ticksElapsed(m_cursorTicks) >= 2*delay) {
m_cursorTicks = g_clock.ticks();
}
}
}
@@ -407,7 +406,7 @@ void UILineEdit::onFocusChange(bool focused, Fw::FocusReason reason)
}
}
bool UILineEdit::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
bool UILineEdit::onKeyPress(uchar keyCode, std::string keyText, int keyboardModifiers)
{
if(keyCode == Fw::KeyDelete) // erase right character
removeCharacter(true);
@@ -422,14 +421,14 @@ bool UILineEdit::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
else if(keyCode == Fw::KeyEnd) // move cursor to last character
setCursorPos(m_text.length());
else if(keyCode == Fw::KeyV && keyboardModifiers == Fw::KeyboardCtrlModifier)
appendText(g_platform.getClipboardText());
appendText(g_window.getClipboardText());
else if(keyCode == Fw::KeyTab) {
if(!m_alwaysActive) {
if(UIWidgetPtr parent = getParent())
parent->focusNextChild(Fw::TabFocusReason);
}
} else if(keyChar != 0)
appendCharacter(keyChar);
} else if(!keyText.empty())
appendText(keyText);
else
return false;

View File

@@ -56,7 +56,7 @@ protected:
virtual void onStyleApply(const OTMLNodePtr& styleNode);
virtual void onGeometryUpdate(const Rect& oldRect, const Rect& newRect);
virtual void onFocusChange(bool focused, Fw::FocusReason reason);
virtual bool onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers);
virtual bool onKeyPress(uchar keyCode, std::string keyText, int keyboardModifiers);
virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button);
private:
@@ -68,7 +68,7 @@ private:
int m_cursorPos;
Point m_startInternalPos;
int m_startRenderPos;
int m_cursorTicks;
ticks_t m_cursorTicks;
int m_textHorizontalMargin;
bool m_textHidden;
bool m_alwaysActive;

View File

@@ -50,56 +50,32 @@ void UIManager::render()
void UIManager::resize(const Size& size)
{
if(m_rootWidget)
m_rootWidget->resize(g_graphics.getScreenSize());
m_rootWidget->resize(g_graphics.getScreenSize());
}
void UIManager::inputEvent(const PlatformEvent& event)
void UIManager::inputEvent(const InputEvent& event)
{
// translate input event to ui events
if(m_rootWidget) {
if(event.type & EventKeyboardAction) {
int keyboardModifiers = Fw::KeyboardNoModifier;
if(event.ctrl)
keyboardModifiers |= Fw::KeyboardCtrlModifier;
if(event.shift)
keyboardModifiers |= Fw::KeyboardShiftModifier;
if(event.alt)
keyboardModifiers |= Fw::KeyboardAltModifier;
if(event.type == EventKeyDown)
m_rootWidget->onKeyPress(event.keycode, event.keychar, keyboardModifiers);
else
m_rootWidget->onKeyRelease(event.keycode, event.keychar, keyboardModifiers);
} else if(event.type & EventMouseAction) {
if(event.type == EventMouseMove) {
m_rootWidget->updateState(Fw::HoverState);
m_rootWidget->onMouseMove(event.mousePos, event.mouseMoved);
}
else if(event.type & EventMouseWheel) {
Fw::MouseWheelDirection dir = Fw::MouseNoWheel;
if(event.type & EventDown)
dir = Fw::MouseWheelDown;
else if(event.type & EventUp)
dir = Fw::MouseWheelUp;
m_rootWidget->onMouseWheel(event.mousePos, dir);
} else {
Fw::MouseButton button = Fw::MouseNoButton;
if(event.type & EventMouseLeftButton)
button = Fw::MouseLeftButton;
else if(event.type & EventMouseMidButton)
button = Fw::MouseMidButton;
else if(event.type & EventMouseRightButton)
button = Fw::MouseRightButton;
if(event.type & EventDown)
m_rootWidget->onMousePress(event.mousePos, button);
else if(event.type & EventUp)
m_rootWidget->onMouseRelease(event.mousePos, button);
}
}
}
switch(event.type) {
case Fw::KeyPressInputEvent:
m_rootWidget->onKeyPress(event.keyCode, event.keyText, event.keyboardModifiers);
break;
case Fw::KeyReleaseInputEvent:
m_rootWidget->onKeyRelease(event.keyCode, event.keyText, event.keyboardModifiers);
break;
case Fw::MousePressInputEvent:
m_rootWidget->onMousePress(event.mousePos, event.mouseButton);
break;
case Fw::MouseReleaseInputEvent:
m_rootWidget->onMouseRelease(event.mousePos, event.mouseButton);
break;
case Fw::MouseMoveInputEvent:
m_rootWidget->updateState(Fw::HoverState);
m_rootWidget->onMouseMove(event.mousePos, event.mouseMoved);
break;
case Fw::MouseWheelInputEvent:
m_rootWidget->onMouseWheel(event.mousePos, event.wheelDirection);
break;
};
}
bool UIManager::importStyles(const std::string& file)

View File

@@ -24,7 +24,7 @@
#define UIMANAGER_H
#include "declarations.h"
#include <framework/platform/platformevent.h>
#include <framework/core/inputevent.h>
#include <framework/otml/declarations.h>
class UIManager
@@ -35,7 +35,7 @@ public:
void render();
void resize(const Size& size);
void inputEvent(const PlatformEvent& event);
void inputEvent(const InputEvent& event);
bool importStyles(const std::string& file);
void importStyleFromOTML(const OTMLNodePtr& styleNode);

View File

@@ -32,7 +32,7 @@
#include <framework/graphics/fontmanager.h>
#include <framework/otml/otmlnode.h>
#include <framework/graphics/graphics.h>
#include <framework/platform/platform.h>
#include <framework/platform/platformwindow.h>
UIWidget::UIWidget()
{
@@ -670,7 +670,7 @@ void UIWidget::updateState(Fw::WidgetState state)
}
else if(state == Fw::HoverState) {
updateChildren = true;
Point mousePos = g_platform.getMouseCursorPos();
Point mousePos = g_window.getMousePos();
UIWidgetPtr widget = asUIWidget();
UIWidgetPtr parent;
do {
@@ -971,9 +971,9 @@ void UIWidget::onHoverChange(bool hovered)
g_ui.getRootWidget()->updateState(Fw::HoverState);
}
bool UIWidget::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
bool UIWidget::onKeyPress(uchar keyCode, std::string keyText, int keyboardModifiers)
{
if(callLuaField<bool>("onKeyPress", keyCode, keyChar, keyboardModifiers))
if(callLuaField<bool>("onKeyPress", keyCode, keyText, keyboardModifiers))
return true;
// do a backup of children list, because it may change while looping it
@@ -989,16 +989,16 @@ bool UIWidget::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
}
for(const UIWidgetPtr& child : children) {
if(child->onKeyPress(keyCode, keyChar, keyboardModifiers))
if(child->onKeyPress(keyCode, keyText, keyboardModifiers))
return true;
}
return false;
}
bool UIWidget::onKeyRelease(uchar keyCode, char keyChar, int keyboardModifiers)
bool UIWidget::onKeyRelease(uchar keyCode, std::string keyText, int keyboardModifiers)
{
if(callLuaField<bool>("onKeyRelease", keyCode, keyChar, keyboardModifiers))
if(callLuaField<bool>("onKeyRelease", keyCode, keyText, keyboardModifiers))
return true;
// do a backup of children list, because it may change while looping it
@@ -1014,7 +1014,7 @@ bool UIWidget::onKeyRelease(uchar keyCode, char keyChar, int keyboardModifiers)
}
for(const UIWidgetPtr& child : children) {
if(child->onKeyRelease(keyCode, keyChar, keyboardModifiers))
if(child->onKeyRelease(keyCode, keyText, keyboardModifiers))
return true;
}

View File

@@ -166,9 +166,9 @@ protected:
/// Triggered when the mouse enters or leaves widget area
virtual void onHoverChange(bool hovered);
/// Triggered when user presses key while widget has focus
virtual bool onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers);
virtual bool onKeyPress(uchar keyCode, std::string keyText, int keyboardModifiers);
/// Triggered when user releases key while widget has focus
virtual bool onKeyRelease(uchar keyCode, char keyChar, int keyboardModifiers);
virtual bool onKeyRelease(uchar keyCode, std::string keyText, int keyboardModifiers);
/// Triggered when a mouse button is pressed down while mouse pointer is inside widget area
virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button);
/// Triggered when a mouse button is released

View File

@@ -146,7 +146,7 @@ bool UIWindow::onMouseMove(const Point& mousePos, const Point& mouseMoved)
return UIWidget::onMouseMove(mousePos, mouseMoved);
}
bool UIWindow::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
bool UIWindow::onKeyPress(uchar keyCode, std::string keyText, int keyboardModifiers)
{
if(keyboardModifiers == Fw::KeyboardNoModifier) {
if(keyCode == Fw::KeyReturn || keyCode == Fw::KeyEnter) {
@@ -157,5 +157,5 @@ bool UIWindow::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
return true;
}
}
return UIWidget::onKeyPress(keyCode, keyChar, keyboardModifiers);
return UIWidget::onKeyPress(keyCode, keyText, keyboardModifiers);
}

View File

@@ -46,7 +46,7 @@ protected:
virtual bool onMousePress(const Point& mousePos, Fw::MouseButton button);
virtual void onMouseRelease(const Point& mousePos, Fw::MouseButton button);
virtual bool onMouseMove(const Point& mousePos, const Point& mouseMoved);
virtual bool onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers);
virtual bool onKeyPress(uchar keyCode, std::string keyText, int keyboardModifiers);
private:
std::string m_title;