ArdourButton: add option to expand buttons to be square
This commit is contained in:
parent
0254e7e6b0
commit
2066f7018d
@ -763,7 +763,10 @@ ArdourButton::on_size_request (Gtk::Requisition* req)
|
|||||||
req->width = wh;
|
req->width = wh;
|
||||||
req->height = wh;
|
req->height = wh;
|
||||||
}
|
}
|
||||||
else if (_tweaks & Square) {
|
else if (_tweaks & (Square | ExpandtoSquare)) {
|
||||||
|
if (_squaresize.has_value ()) {
|
||||||
|
req->width = std::max (req->width, _squaresize.value ());
|
||||||
|
}
|
||||||
// currerntly unused (again)
|
// currerntly unused (again)
|
||||||
if (req->width < req->height)
|
if (req->width < req->height)
|
||||||
req->width = req->height;
|
req->width = req->height;
|
||||||
@ -1074,6 +1077,15 @@ ArdourButton::on_size_allocate (Allocation& alloc)
|
|||||||
/* re-center text */
|
/* re-center text */
|
||||||
//_layout->get_pixel_size (_text_width, _text_height);
|
//_layout->get_pixel_size (_text_width, _text_height);
|
||||||
}
|
}
|
||||||
|
if (_tweaks & ExpandtoSquare && alloc.get_width () != alloc.get_height ()) {
|
||||||
|
if (!_squaresize.has_value ()) {
|
||||||
|
_squaresize = std::max (alloc.get_width (), alloc.get_height ());
|
||||||
|
queue_resize ();
|
||||||
|
} else {
|
||||||
|
/* allow widget to shink next time */
|
||||||
|
_squaresize.reset ();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1334,6 +1346,7 @@ ArdourButton::set_tweaks (Tweaks t)
|
|||||||
{
|
{
|
||||||
if (_tweaks != t) {
|
if (_tweaks != t) {
|
||||||
_tweaks = t;
|
_tweaks = t;
|
||||||
|
_squaresize.reset ();
|
||||||
if (get_realized()) {
|
if (get_realized()) {
|
||||||
queue_resize ();
|
queue_resize ();
|
||||||
}
|
}
|
||||||
|
@ -61,12 +61,13 @@ class LIBWIDGETS_API ArdourButton : public CairoWidget , public Gtkmm2ext::Activ
|
|||||||
virtual ~ArdourButton ();
|
virtual ~ArdourButton ();
|
||||||
|
|
||||||
enum Tweaks {
|
enum Tweaks {
|
||||||
Square = 0x1,
|
Square = 0x01,
|
||||||
TrackHeader = 0x2,
|
TrackHeader = 0x02,
|
||||||
OccasionalText = 0x4,
|
OccasionalText = 0x04,
|
||||||
OccasionalLED = 0x8,
|
OccasionalLED = 0x08,
|
||||||
ForceBoxy = 0x10,
|
ForceBoxy = 0x10,
|
||||||
ForceFlat = 0x20,
|
ForceFlat = 0x20,
|
||||||
|
ExpandtoSquare = 0x40,
|
||||||
};
|
};
|
||||||
|
|
||||||
static Tweaks default_tweaks;
|
static Tweaks default_tweaks;
|
||||||
@ -202,6 +203,7 @@ class LIBWIDGETS_API ArdourButton : public CairoWidget , public Gtkmm2ext::Activ
|
|||||||
|
|
||||||
uint32_t outline_color;
|
uint32_t outline_color;
|
||||||
|
|
||||||
|
std::optional<int> _squaresize;
|
||||||
|
|
||||||
cairo_pattern_t* convex_pattern;
|
cairo_pattern_t* convex_pattern;
|
||||||
cairo_pattern_t* concave_pattern;
|
cairo_pattern_t* concave_pattern;
|
||||||
|
Loading…
Reference in New Issue
Block a user