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()