Prepare a boxy, no round borders, button-style
authorRobin Gareus <robin@gareus.org>
Tue, 2 Oct 2018 19:27:55 +0000 (21:27 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 2 Oct 2018 19:28:49 +0000 (21:28 +0200)
libs/gtkmm2ext/cairo_widget.cc
libs/gtkmm2ext/gtkmm2ext/cairo_widget.h
libs/widgets/ardour_button.cc

index 4cf3fc3ae667e925f4f128f68fa6ed2d2b4da101..7741de86ca7d0db226279075a7caf6d48d69daf2 100644 (file)
@@ -34,6 +34,7 @@
 static const char* has_cairo_widget_background_info = "has_cairo_widget_background_info";
 
 bool CairoWidget::_flat_buttons = false;
+bool CairoWidget::_boxy_buttons = false;
 bool CairoWidget::_widget_prelight = true;
 
 sigc::slot<void,Gtk::Widget*> CairoWidget::focus_handler;
@@ -542,6 +543,13 @@ CairoWidget::set_flat_buttons (bool yn)
        _flat_buttons = yn;
 }
 
+void
+CairoWidget::set_boxy_buttons (bool yn)
+{
+       _boxy_buttons = yn;
+}
+
+
 void
 CairoWidget::set_widget_prelight (bool yn)
 {
index 6d8c1f5d55ce960be514fc15000dce26f7b676f8..cc70e9bce10c89bd3ce7c5d8556e641b3eaaa851 100644 (file)
@@ -85,7 +85,9 @@ public:
        uint32_t background_color ();
 
        static void set_flat_buttons (bool yn);
+       static void set_boxy_buttons (bool yn);
        static bool flat_buttons() { return _flat_buttons; }
+       static bool boxy_buttons() { return _boxy_buttons; }
 
        static void set_widget_prelight (bool yn);
        static bool widget_prelight() { return _widget_prelight; }
@@ -132,6 +134,7 @@ protected:
        bool                   _need_bg;
 
        static bool     _flat_buttons;
+       static bool     _boxy_buttons;
        static bool     _widget_prelight;
        bool            _grabbed;
 
index 145d46d94c8a97920bdabf7a422ce4b21e981e4f..b80e993db4a886257feb03e3e5668af32eefaaa2 100644 (file)
@@ -257,7 +257,7 @@ ArdourButton::render (Cairo::RefPtr<Cairo::Context> const& ctx, cairo_rectangle_
        uint32_t text_color;
        uint32_t led_color;
 
-       const float corner_radius = std::max(2.f, _corner_radius * UIConfigurationBase::instance().get_ui_scale());
+       const float corner_radius = _boxy_buttons ? 0 : std::max(2.f, _corner_radius * UIConfigurationBase::instance().get_ui_scale());
 
        if (_update_colors) {
                set_colors ();