diff --git a/data/pref.xml b/data/pref.xml
index 80ae13406..a749a4012 100644
--- a/data/pref.xml
+++ b/data/pref.xml
@@ -81,6 +81,9 @@
+
diff --git a/src/app/ui/color_bar.cpp b/src/app/ui/color_bar.cpp
index 231e7fa11..e58c263d9 100644
--- a/src/app/ui/color_bar.cpp
+++ b/src/app/ui/color_bar.cpp
@@ -11,6 +11,7 @@
#include "app/ui/color_bar.h"
+#include "app/app.h"
#include "app/cmd/remap_colors.h"
#include "app/cmd/set_palette.h"
#include "app/color.h"
@@ -20,6 +21,7 @@
#include "app/context_access.h"
#include "app/ini_file.h"
#include "app/modules/gui.h"
+#include "app/pref/preferences.h"
#include "app/transaction.h"
#include "app/ui/skin/skin_theme.h"
#include "app/ui/status_bar.h"
@@ -75,7 +77,8 @@ ColorBar* ColorBar::m_instance = NULL;
ColorBar::ColorBar(int align)
: Box(align)
, m_paletteButton("Edit Palette")
- , m_paletteView(true, this)
+ , m_paletteView(true, this,
+ App::instance()->preferences().colorBar.boxSize() * guiscale())
, m_remapButton("Remap")
, m_fgColor(app::Color::fromRgb(255, 255, 255), IMAGE_RGB)
, m_bgColor(app::Color::fromRgb(0, 0, 0), IMAGE_RGB)
@@ -269,6 +272,11 @@ void ColorBar::onPaletteViewRemapColors(const Remap& remap, const Palette* newPa
}
}
+void ColorBar::onPaletteViewChangeSize(int boxsize)
+{
+ App::instance()->preferences().colorBar.boxSize(boxsize / guiscale());
+}
+
void ColorBar::onFgColorButtonChange(const app::Color& color)
{
if (!m_lock)
diff --git a/src/app/ui/color_bar.h b/src/app/ui/color_bar.h
index 89734f9b2..7f14e237b 100644
--- a/src/app/ui/color_bar.h
+++ b/src/app/ui/color_bar.h
@@ -64,6 +64,7 @@ namespace app {
// PaletteViewDelegate impl
void onPaletteViewIndexChange(int index, ui::MouseButtons buttons) override;
void onPaletteViewRemapColors(const doc::Remap& remap, const doc::Palette* newPalette) override;
+ void onPaletteViewChangeSize(int boxsize) override;
private:
class ScrollableView : public ui::View {
diff --git a/src/app/ui/color_selector.cpp b/src/app/ui/color_selector.cpp
index ddd89ca17..9219b515b 100644
--- a/src/app/ui/color_selector.cpp
+++ b/src/app/ui/color_selector.cpp
@@ -55,7 +55,7 @@ ColorSelector::ColorSelector()
, m_vbox(JI_VERTICAL)
, m_topBox(JI_HORIZONTAL)
, m_color(app::Color::fromMask())
- , m_colorPalette(false, this)
+ , m_colorPalette(false, this, 7*guiscale())
, m_indexButton("Index", 1, kButtonWidget)
, m_rgbButton("RGB", 1, kButtonWidget)
, m_hsvButton("HSB", 1, kButtonWidget)
diff --git a/src/app/ui/palette_view.cpp b/src/app/ui/palette_view.cpp
index 762289ffa..61479132f 100644
--- a/src/app/ui/palette_view.cpp
+++ b/src/app/ui/palette_view.cpp
@@ -51,13 +51,13 @@ WidgetType palette_view_type()
return type;
}
-PaletteView::PaletteView(bool editable, PaletteViewDelegate* delegate)
+PaletteView::PaletteView(bool editable, PaletteViewDelegate* delegate, int boxsize)
: Widget(palette_view_type())
, m_state(State::WAITING)
, m_editable(editable)
, m_delegate(delegate)
, m_columns(16)
- , m_boxsize(7*guiscale())
+ , m_boxsize(boxsize)
, m_currentEntry(-1)
, m_rangeAnchor(-1)
, m_selectedEntries(Palette::MaxColors, false)
@@ -248,6 +248,9 @@ bool PaletteView::onProcessMessage(Message* msg)
int z = delta.x - delta.y;
m_boxsize += z * guiscale();
m_boxsize = MID(4*guiscale(), m_boxsize, 32*guiscale());
+ if (m_delegate)
+ m_delegate->onPaletteViewChangeSize(m_boxsize);
+
view->layout();
}
else {
diff --git a/src/app/ui/palette_view.h b/src/app/ui/palette_view.h
index f4de7ba7f..76518aa4d 100644
--- a/src/app/ui/palette_view.h
+++ b/src/app/ui/palette_view.h
@@ -28,13 +28,14 @@ namespace app {
virtual ~PaletteViewDelegate() { }
virtual void onPaletteViewIndexChange(int index, ui::MouseButtons buttons) { }
virtual void onPaletteViewRemapColors(const doc::Remap& remap, const doc::Palette* newPalette) { }
+ virtual void onPaletteViewChangeSize(int boxsize) { }
};
class PaletteView : public ui::Widget {
public:
typedef std::vector SelectedEntries;
- PaletteView(bool editable, PaletteViewDelegate* delegate);
+ PaletteView(bool editable, PaletteViewDelegate* delegate, int boxsize);
int getColumns() const { return m_columns; }
void setColumns(int columns);