diff options
-rw-r--r-- | src/defaults.cpp | 1 | ||||
-rw-r--r-- | src/gui/minimap.cpp | 33 | ||||
-rw-r--r-- | src/gui/minimap.h | 5 | ||||
-rw-r--r-- | src/gui/setup_other.cpp | 3 |
4 files changed, 32 insertions, 10 deletions
diff --git a/src/defaults.cpp b/src/defaults.cpp index 4fb00525f..f482a4cef 100644 --- a/src/defaults.cpp +++ b/src/defaults.cpp @@ -304,6 +304,7 @@ DefaultsData* getConfigDefaults() AddDEF("screenActionButton2", Input::KEY_PICKUP); AddDEF("screenActionButton3", Input::KEY_PATHFIND); AddDEF("screenButtonsFormat", 0); + AddDEF("autoresizeminimaps", false); return configData; } diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index b30703a7e..72772b880 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -52,10 +52,14 @@ Minimap::Minimap(): mCustomMapImage(false), mMapOriginX(0), mMapOriginY(0), - mTextPopup(new TextPopup) + mTextPopup(new TextPopup), + mAutoResize(config.getBoolValue("autoresizeminimaps")) { setWindowName("Minimap"); mShow = config.getValueBool(getWindowName() + "Show", true); + + config.addListener("autoresizeminimaps", this); + setDefaultSize(5, 25, 100, 100); // set this to false as the minimap window size is changed //depending on the map size @@ -76,6 +80,7 @@ Minimap::Minimap(): Minimap::~Minimap() { config.setValue(getWindowName() + "Show", mShow); + config.removeListeners(this); if (mMapImage) { @@ -174,12 +179,11 @@ void Minimap::setMap(const Map *const map) if (mMapImage && map) { - const int offsetX = 2 * getPadding(); - const int offsetY = getTitleBarHeight() + getPadding(); - const int mapWidth = mMapImage->mBounds.w < 100 ? - mMapImage->mBounds.w + offsetX : 100; - const int mapHeight = mMapImage->mBounds.h < 100 ? - mMapImage->mBounds.h + offsetY : 100; + const int width = mMapImage->mBounds.w + 2 * getPadding(); + const int height = mMapImage->mBounds.h + + getTitleBarHeight() + getPadding(); + const int mapWidth = mMapImage->mBounds.w < 100 ? width : 100; + const int mapHeight = mMapImage->mBounds.h < 100 ? height : 100; setMinWidth(mapWidth); setMinHeight(mapHeight); @@ -189,8 +193,13 @@ void Minimap::setMap(const Map *const map) mHeightProportion = static_cast<float>( mMapImage->mBounds.h) / static_cast<float>(map->getHeight()); - setMaxWidth(mMapImage->mBounds.w + offsetX); - setMaxHeight(mMapImage->mBounds.h + offsetY); + setMaxWidth(width); + setMaxHeight(height); + if (mAutoResize) + { + setWidth(width); + setHeight(height); + } setDefaultSize(getX(), getY(), getWidth(), getHeight()); resetToDefaultSize(); @@ -455,3 +464,9 @@ void Minimap::screenToMap(int &x, int &y) x = (x - a.x - mMapOriginX + mWidthProportion) / mWidthProportion; y = (y - a.y - mMapOriginY + mHeightProportion) / mHeightProportion; } + +void Minimap::optionChanged(const std::string &name) +{ + if (name == "autoresizeminimaps") + mAutoResize = config.getBoolValue("autoresizeminimaps"); +} diff --git a/src/gui/minimap.h b/src/gui/minimap.h index 2fe1458ab..6efe8a786 100644 --- a/src/gui/minimap.h +++ b/src/gui/minimap.h @@ -38,7 +38,7 @@ class TextPopup; * * \ingroup Interface */ -class Minimap final : public Window +class Minimap final : public Window, public ConfigListener { public: Minimap(); @@ -70,6 +70,8 @@ class Minimap final : public Window void screenToMap(int &x, int &y); + void optionChanged(const std::string &name); + private: Image *mMapImage; float mWidthProportion; @@ -79,6 +81,7 @@ class Minimap final : public Window int mMapOriginX; int mMapOriginY; TextPopup *mTextPopup; + bool mAutoResize; }; extern Minimap *minimap; diff --git a/src/gui/setup_other.cpp b/src/gui/setup_other.cpp index ce0464055..965382f71 100644 --- a/src/gui/setup_other.cpp +++ b/src/gui/setup_other.cpp @@ -120,6 +120,9 @@ Setup_Other::Setup_Other(const Widget2 *const widget) : new SetupItemIntTextField(_("Scroll radius"), "", "ScrollRadius", this, "ScrollRadiusEvent", 0, 32); + new SetupItemCheckBox(_("Auto resize minimaps"), "", "autoresizeminimaps", + this, "autoresizeminimapsEvent"); + new SetupItemLabel(_("Moving"), "", this); |