From 612e12b35fd6c6a9a0739e0656c08b6de85ba61c Mon Sep 17 00:00:00 2001 From: Manuel Dobusch Date: Wed, 2 Mar 2016 16:22:16 +0100 Subject: [PATCH] ui: font size limits Introduced font size limits and prevent ui refresh beyond those limits. Should prevent UI from freezing up with unlocked mouse wheel. --- bin/app/user/ApplicationSettings_template.xml | 3 ++ .../controller/FeatureController.cpp | 24 +++++++++++---- src/lib/settings/ApplicationSettings.cpp | 30 +++++++++++++++++++ src/lib/settings/ApplicationSettings.h | 9 ++++++ src/trial/data/parser/cxx/TaskParseCxx.cpp | 2 +- 5 files changed, 62 insertions(+), 6 deletions(-) diff --git a/bin/app/user/ApplicationSettings_template.xml b/bin/app/user/ApplicationSettings_template.xml index 94195fb0..e07f4192 100644 --- a/bin/app/user/ApplicationSettings_template.xml +++ b/bin/app/user/ApplicationSettings_template.xml @@ -28,6 +28,9 @@ + + + diff --git a/src/lib/component/controller/FeatureController.cpp b/src/lib/component/controller/FeatureController.cpp index 136a3e39..87048686 100644 --- a/src/lib/component/controller/FeatureController.cpp +++ b/src/lib/component/controller/FeatureController.cpp @@ -82,10 +82,11 @@ void FeatureController::handleMessage(MessageActivateTokenLocations* message) void FeatureController::handleMessage(MessageResetZoom* message) { ApplicationSettings* settings = ApplicationSettings::getInstance().get(); + int fontSizeStd = settings->getFontSizeStd(); - if (settings->getFontSize() != 12) + if (settings->getFontSize() != fontSizeStd) { - settings->setFontSize(12); + settings->setFontSize(fontSizeStd); settings->save(); MessageRefresh().refreshUiOnly().dispatch(); @@ -105,13 +106,26 @@ void FeatureController::handleMessage(MessageSwitchColorScheme* message) void FeatureController::handleMessage(MessageZoom* message) { + bool zoomIn = message->zoomIn; + ApplicationSettings* settings = ApplicationSettings::getInstance().get(); - settings->setFontSize(std::max(settings->getFontSize() + (message->zoomIn ? 1 : -1), 5)); - settings->save(); int fontSize = settings->getFontSize(); - int standardSize = 12; + int standardSize = settings->getFontSizeStd(); + int maxSize = settings->getFontSizeMax(); + int minSize = settings->getFontSizeMin(); + if (fontSize >= maxSize && zoomIn + || fontSize <= minSize && !zoomIn) + { + return; + } + + // settings->setFontSize(std::max(settings->getFontSize() + (message->zoomIn ? 1 : -1), 5)); + settings->setFontSize((settings->getFontSize() + (message->zoomIn ? 1 : -1))); + settings->save(); + + fontSize = settings->getFontSize(); int zoom = (fontSize * 100) / standardSize; std::stringstream text; diff --git a/src/lib/settings/ApplicationSettings.cpp b/src/lib/settings/ApplicationSettings.cpp index 9942831d..c15c714a 100644 --- a/src/lib/settings/ApplicationSettings.cpp +++ b/src/lib/settings/ApplicationSettings.cpp @@ -87,6 +87,36 @@ void ApplicationSettings::setColorSchemePath(const std::string& colorSchemePath) setValue("application/color_scheme", colorSchemePath); } +int ApplicationSettings::getFontSizeMax() const +{ + return getValue("application/font_size_max", 24); +} + +void ApplicationSettings::setFontSizeMax(const int fontSizeMax) +{ + setValue("application/font_size_max", fontSizeMax); +} + +int ApplicationSettings::getFontSizeMin() const +{ + return getValue("application/font_size_min", 4); +} + +void ApplicationSettings::setFontSizeMin(const int fontSizeMin) +{ + setValue("application/font_size_min", fontSizeMin); +} + +int ApplicationSettings::getFontSizeStd() const +{ + return getValue("application/font_size_std", 12); +} + +void ApplicationSettings::setFontSizeStd(const int fontSizeStd) +{ + setValue("application/font_size_std", fontSizeStd); +} + int ApplicationSettings::getCodeTabWidth() const { return getValue("code/tab_width", 4); diff --git a/src/lib/settings/ApplicationSettings.h b/src/lib/settings/ApplicationSettings.h index 9bff9c34..35e2681e 100644 --- a/src/lib/settings/ApplicationSettings.h +++ b/src/lib/settings/ApplicationSettings.h @@ -38,6 +38,15 @@ public: std::string getColorSchemePath() const; void setColorSchemePath(const std::string& colorSchemePath); + int getFontSizeMax() const; + void setFontSizeMax(const int fontSizeMax); + + int getFontSizeMin() const; + void setFontSizeMin(const int fontSizeMin); + + int getFontSizeStd() const; + void setFontSizeStd(const int fontSizeStd); + // code int getCodeTabWidth() const; void setCodeTabWidth(int codeTabWidth); diff --git a/src/trial/data/parser/cxx/TaskParseCxx.cpp b/src/trial/data/parser/cxx/TaskParseCxx.cpp index 5e3d25f0..e024f92d 100644 --- a/src/trial/data/parser/cxx/TaskParseCxx.cpp +++ b/src/trial/data/parser/cxx/TaskParseCxx.cpp @@ -28,7 +28,7 @@ void TaskParseCxx::exit() { m_client->finishParsing(); - MessageFinishedParsing(0, 0, 0, 0).dispatch(); + MessageFinishedParsing(0, 0, 0, ErrorCountInfo()).dispatch(); } void TaskParseCxx::interrupt()