mirror of
https://github.com/edubart/otclient.git
synced 2025-10-20 06:23:26 +02:00
too many changes to list, many regressions were made, master will be UNSTABLE for a few days
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ protected:
|
||||
private:
|
||||
Fw::AlignmentFlag m_align;
|
||||
int m_frameCount;
|
||||
int m_lastFrameTicks;
|
||||
ticks_t m_lastFrameTicks;
|
||||
std::string m_fpsText;
|
||||
};
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user