diff --git a/src/control/Control.cpp b/src/control/Control.cpp index bf8bd9c0..ed8b7622 100644 --- a/src/control/Control.cpp +++ b/src/control/Control.cpp @@ -348,6 +348,7 @@ void Control::initWindow(MainWindow* win) eraserSizeChanged(); hilighterSizeChanged(); updateDeletePageButton(); + toolFillChanged(); this->clipboardHandler = new ClipboardHandler(this, win->getXournal()->getWidget()); @@ -1816,6 +1817,8 @@ void Control::toolFillChanged() XOJ_CHECK_TYPE(Control); fireActionSelected(GROUP_FILL, toolHandler->getFill() != -1 ? ACTION_TOOL_FILL : ACTION_NONE); + fireActionSelected(GROUP_PEN_FILL, toolHandler->getPenFillEnabled() != -1 ? ACTION_TOOL_PEN_FILL : ACTION_NONE); + fireActionSelected(GROUP_HILIGHTER_FILL, toolHandler->getHilighterFillEnabled() != -1 ? ACTION_TOOL_HILIGHTER_FILL : ACTION_NONE); } /** diff --git a/src/control/Tool.cpp b/src/control/Tool.cpp index ba027e67..c42d48ea 100644 --- a/src/control/Tool.cpp +++ b/src/control/Tool.cpp @@ -64,6 +64,34 @@ void Tool::setSize(ToolSize size) this->size = size; } +bool Tool::getFill() +{ + XOJ_CHECK_TYPE(Tool); + + return this->fill; +} + +void Tool::setFill(bool fill) +{ + XOJ_CHECK_TYPE(Tool); + + this->fill = fill; +} + +int Tool::getFillAlpha() +{ + XOJ_CHECK_TYPE(Tool); + + return this->fillAlpha; +} + +void Tool::setFillAlpha(int fillAlpha) +{ + XOJ_CHECK_TYPE(Tool); + + this->fillAlpha = fillAlpha; +} + void Tool::setCapability(int capability, bool enabled) { XOJ_CHECK_TYPE(Tool); diff --git a/src/control/Tool.h b/src/control/Tool.h index 784de852..16e719ce 100644 --- a/src/control/Tool.h +++ b/src/control/Tool.h @@ -119,6 +119,11 @@ public: ToolSize getSize(); void setSize(ToolSize size); + bool getFill(); + void setFill(bool fill); + int getFillAlpha(); + void setFillAlpha(int fillAlpha); + DrawingType getDrawingType(); void setDrawingType(DrawingType drawingType); diff --git a/src/control/ToolHandler.cpp b/src/control/ToolHandler.cpp index 1eb70c14..81d2e613 100644 --- a/src/control/ToolHandler.cpp +++ b/src/control/ToolHandler.cpp @@ -13,15 +13,10 @@ ToolHandler::ToolHandler(ToolListener* listener, ActionHandler* actionHandler, S { XOJ_INIT_TYPE(ToolHandler); - this->colorFound = false; - this->listener = NULL; - this->actionHandler = NULL; this->settings = settings; - this->lastSelectedTool = NULL; initTools(); this->listener = listener; this->actionHandler = actionHandler; - this->eraserType = ERASER_TYPE_DEFAULT; } @@ -495,6 +490,12 @@ void ToolHandler::saveSettings() st.setString("size", value); } + if (t->type == TOOL_PEN || t->type == TOOL_HILIGHTER) + { + st.setInt("fill", t->getFill()); + st.setInt("fillAlpha", t->getFillAlpha()); + } + if (t->type == TOOL_ERASER) { if (this->eraserType == ERASER_TYPE_DELETE_STROKE) @@ -548,8 +549,18 @@ void ToolHandler::loadSettings() t->setDrawingType(drawingTypeFromString(drawingType)); } - string value; + int fill = -1; + if (st.getInt("fill", fill)) + { + t->setFill(fill); + } + int fillAlpha = -1; + if (st.getInt("fillAlpha", fillAlpha)) + { + t->setFillAlpha(fillAlpha); + } + string value; if (t->hasCapability(TOOL_CAP_SIZE) && st.getString("size", value)) { if (value == "VERY_THIN") t->setSize(TOOL_SIZE_VERY_FINE); diff --git a/src/control/ToolHandler.h b/src/control/ToolHandler.h index 410c22c5..8529c152 100644 --- a/src/control/ToolHandler.h +++ b/src/control/ToolHandler.h @@ -121,7 +121,7 @@ private: /** * Last selected tool, reference with color values etc. */ - LastSelectedTool* lastSelectedTool; + LastSelectedTool* lastSelectedTool = NULL; EraserType eraserType; @@ -130,9 +130,11 @@ private: * so its a "predefined" color for us, but may it is * not in the list, so its a "custom" color for us */ - bool colorFound; - ToolListener* listener; - ActionHandler* actionHandler; + bool colorFound = false; + + ToolListener* listener = NULL; + + ActionHandler* actionHandler = NULL; Settings* settings; }; diff --git a/src/control/settings/Settings.cpp b/src/control/settings/Settings.cpp index 77ed79fc..8c25c662 100644 --- a/src/control/settings/Settings.cpp +++ b/src/control/settings/Settings.cpp @@ -1728,7 +1728,7 @@ void SElement::setInt(const string name, const int value) XOJ_CHECK_TYPE_OBJ(&attrib, SAttribute); attrib.iValue = value; - attrib.type = ATTRIBUTE_TYPE_INT_HEX; + attrib.type = ATTRIBUTE_TYPE_INT; } void SElement::setBool(const string name, const bool value)