summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorBen Loftis <ben@glw.com>2012-12-06 20:48:44 +0000
committerBen Loftis <ben@glw.com>2012-12-06 20:48:44 +0000
commit92e5a13fd41eba37a2634caf921606b7d915c557 (patch)
tree07bdc131a1f0a640983ae66a771104f3bec41ec1 /gtk2_ardour
parent9884773eea9764b6dacd3ade6a1d49cf389fe398 (diff)
several theme changes. changed drawing of rounded_rectangle to be more correct. operation and feel should be more consistent. rec-mute-solo buttons are now dull until enabled. this might be debatable. otherwise if it looks weird, try loading Window->Theme Manager and clicking Restore Defaults
git-svn-id: svn://localhost/ardour2/branches/3.0@13611 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour3_ui_default.conf137
-rw-r--r--gtk2_ardour/ardour3_widget_list.rc1
-rw-r--r--gtk2_ardour/ardour_button.cc115
-rw-r--r--gtk2_ardour/ardour_button.h6
-rw-r--r--gtk2_ardour/ardour_ui2.cc13
-rw-r--r--gtk2_ardour/audio_clock.cc3
-rw-r--r--gtk2_ardour/automation_time_axis.cc1
-rw-r--r--gtk2_ardour/canvas_vars.h1
-rw-r--r--gtk2_ardour/editor.cc51
-rw-r--r--gtk2_ardour/editor.h15
-rw-r--r--gtk2_ardour/editor_actions.cc9
-rw-r--r--gtk2_ardour/mixer_strip.cc4
-rw-r--r--gtk2_ardour/route_ui.cc3
-rw-r--r--gtk2_ardour/stereo_panner.cc2
14 files changed, 211 insertions, 150 deletions
diff --git a/gtk2_ardour/ardour3_ui_default.conf b/gtk2_ardour/ardour3_ui_default.conf
index b6678035ad..f74f293fea 100644
--- a/gtk2_ardour/ardour3_ui_default.conf
+++ b/gtk2_ardour/ardour3_ui_default.conf
@@ -179,66 +179,65 @@
<Option name="processor control button: led active" value="ff0000ff"/>
<Option name="processor control button: text" value="ffffffff"/>
<Option name="processor control button: text active" value="ffffffff"/>
- <Option name="monitor button: fill start" value="5d5856ff"/>
- <Option name="monitor button: fill end" value="564d48ff"/>
- <Option name="monitor button: fill start active" value="46a344ff"/>
- <Option name="monitor button: fill end active" value="3c723bff"/>
+ <Option name="monitor button: fill start" value="5f5a58ff"/>
+ <Option name="monitor button: fill end" value="3f3a38ff"/>
+ <Option name="monitor button: fill start active" value="553500ff"/>
+ <Option name="monitor button: fill end active" value="e58505ff"/>
<Option name="monitor button: led" value="660000ff"/>
<Option name="monitor button: led active" value="ff0000ff"/>
<Option name="monitor button: text" value="aaaaa3ff"/>
<Option name="monitor button: text active" value="1a1a1aff"/>
- <Option name="solo isolate: fill start" value="5d5856ff"/>
- <Option name="solo isolate: fill end" value="564d48ff"/>
+ <Option name="solo isolate: fill start" value="5f5a58ff"/>
+ <Option name="solo isolate: fill end" value="504442ff"/>
<Option name="solo isolate: fill start active" value="5d5856ff"/>
<Option name="solo isolate: fill end active" value="564d48ff"/>
<Option name="solo isolate: led" value="660000ff"/>
<Option name="solo isolate: led active" value="ff0000ff"/>
<Option name="solo isolate: text" value="c7c7d8ff"/>
<Option name="solo isolate: text active" value="c8c8d9ff"/>
- <Option name="solo safe: fill start" value="5d5856ff"/>
- <Option name="solo safe: fill end" value="564d48ff"/>
+ <Option name="solo safe: fill start" value="5f5a58ff"/>
+ <Option name="solo safe: fill end" value="504442ff"/>
<Option name="solo safe: fill start active" value="5d5856ff"/>
<Option name="solo safe: fill end active" value="564d48ff"/>
<Option name="solo safe: led" value="660000ff"/>
<Option name="solo safe: led active" value="ff0000ff"/>
<Option name="solo safe: text" value="c7c7d8ff"/>
<Option name="solo safe: text active" value="c8c8d9ff"/>
- <Option name="monitor section cut: fill start" value="5d5856ff"/>
- <Option name="monitor section cut: fill end" value="564d48ff"/>
- <Option name="monitor section cut: fill start active" value="f7bb0aff"/>
- <Option name="monitor section cut: fill end active" value="ed8f00ff"/>
+ <Option name="monitor section cut: fill start" value="5f5a58ff"/>
+ <Option name="monitor section cut: fill end" value="3f3a38ff"/>
+ <Option name="monitor section cut: fill start active" value="5f4943ff"/>
+ <Option name="monitor section cut: fill end active" value="ffa500ff"/>
<Option name="monitor section cut: led" value="473812ff"/>
<Option name="monitor section cut: led active" value="78cb4eff"/>
<Option name="monitor section cut: text" value="c7c7d8ff"/>
<Option name="monitor section cut: text active" value="000000ff"/>
- <Option name="monitor section dim: fill start" value="5d5856ff"/>
- <Option name="monitor section dim: fill end" value="564d48ff"/>
- <Option name="monitor section dim: fill start active" value="04af02ff"/>
- <Option name="monitor section dim: fill end active" value="008a00ff"/>
- <Option name="monitor section dim: led" value="473812ff"/>
+ <Option name="monitor section dim: fill start" value="5f5a58ff"/>
+ <Option name="monitor section dim: fill end" value="3f3a38ff"/>
+ <Option name="monitor section dim: fill start active" value="553500ff"/>
+ <Option name="monitor section dim: fill end active" value="e58505ff"/>
<Option name="monitor section dim: led active" value="78cb4eff"/>
<Option name="monitor section dim: text" value="c8c8d9ff"/>
<Option name="monitor section dim: text active" value="c8c8d9ff"/>
- <Option name="monitor section solo: fill start" value="5d5856ff"/>
- <Option name="monitor section solo: fill end" value="564d48ff"/>
- <Option name="monitor section solo: fill start active" value="f4f395ff"/>
- <Option name="monitor section solo: fill end active" value="fffe1dff"/>
+ <Option name="monitor section solo: fill start" value="5f5a58ff"/>
+ <Option name="monitor section solo: fill end" value="3f3a38ff"/>
+ <Option name="monitor section solo: fill start active" value="104506ff"/>
+ <Option name="monitor section solo: fill end active" value="4dbb00ff"/>
<Option name="monitor section solo: led" value="473812ff"/>
<Option name="monitor section solo: led active" value="ffa500ff"/>
<Option name="monitor section solo: text" value="00000000"/>
<Option name="monitor section solo: text active" value="00000000"/>
- <Option name="monitor section invert: fill start" value="5d5856ff"/>
- <Option name="monitor section invert: fill end" value="564d48ff"/>
- <Option name="monitor section invert: fill start active" value="03af01ff"/>
- <Option name="monitor section invert: fill end active" value="008a00ff"/>
+ <Option name="monitor section invert: fill start" value="5f5a58ff"/>
+ <Option name="monitor section invert: fill end" value="3f3a38ff"/>
+ <Option name="monitor section invert: fill start active" value="222260ff"/>
+ <Option name="monitor section invert: fill end active" value="4242d0ff"/>
<Option name="monitor section invert: led" value="473812ff"/>
<Option name="monitor section invert: led active" value="78cb4eff"/>
<Option name="monitor section invert: text" value="00000000"/>
<Option name="monitor section invert: text active" value="00000000"/>
- <Option name="monitor section mono: fill start" value="5d5856ff"/>
- <Option name="monitor section mono: fill end" value="564d48ff"/>
- <Option name="monitor section mono: fill start active" value="04af02ff"/>
- <Option name="monitor section mono: fill end active" value="008a00ff"/>
+ <Option name="monitor section mono: fill start" value="5f5a58ff"/>
+ <Option name="monitor section mono: fill end" value="3f3a38ff"/>
+ <Option name="monitor section mono: fill start active" value="222260ff"/>
+ <Option name="monitor section mono: fill end active" value="3232c0ff"/>
<Option name="monitor section mono: led" value="473812ff"/>
<Option name="monitor section mono: led active" value="78cb4eff"/>
<Option name="monitor section mono: text" value="c7c7d8ff"/>
@@ -299,26 +298,34 @@
<Option name="feedback alert: led active" value="00000000"/>
<Option name="feedback alert: text" value="969696ff"/>
<Option name="feedback alert: text active" value="e5e5e5ff"/>
- <Option name="mute button: fill start" value="af8a14ff"/>
- <Option name="mute button: fill end" value="745127ff"/>
- <Option name="mute button: fill start active" value="ffc300ff"/>
- <Option name="mute button: fill end active" value="ea8400ff"/>
+ <Option name="mute button: fill start" value="565659ff"/>
+ <Option name="mute button: fill end" value="484853ff"/>
+ <Option name="mute button: fill start active" value="5f4943ff"/>
+ <Option name="mute button: fill end active" value="ffa500ff"/>
<Option name="mute button: led" value="00000000"/>
<Option name="mute button: led active" value="00000000"/>
<Option name="mute button: text" value="bfbfbfff"/>
<Option name="mute button: text active" value="191919ff"/>
- <Option name="solo button: fill start" value="a09865ff"/>
- <Option name="solo button: fill end" value="4c5b2aff"/>
- <Option name="solo button: fill start active" value="fffd9bff"/>
- <Option name="solo button: fill end active" value="ffff00ff"/>
+ <Option name="solo button: fill start" value="565659ff"/>
+ <Option name="solo button: fill end" value="484853ff"/>
+ <Option name="solo button: fill start active" value="104506ff"/>
+ <Option name="solo button: fill end active" value="4dbb00ff"/>
<Option name="solo button: led" value="00000000"/>
<Option name="solo button: led active" value="00000000"/>
<Option name="solo button: text" value="bfbfbfff"/>
<Option name="solo button: text active" value="191919ff"/>
- <Option name="record enable button: fill start" value="603f3fff"/>
+ <Option name="invert button: fill start" value="565659ff"/>
+ <Option name="invert button: fill end" value="484853ff"/>
+ <Option name="invert button: fill start active" value="222260ff"/>
+ <Option name="invert button: fill end active" value="4242d0ff"/>
+ <Option name="invert button: led" value="473812ff"/>
+ <Option name="invert button: led active" value="78cb4eff"/>
+ <Option name="invert button: text" value="bfbfbfff"/>
+ <Option name="invert button: text active" value="bfbfbfff"/>
+ <Option name="record enable button: fill start" value="5f3f3fff"/>
<Option name="record enable button: fill end" value="3d2828ff"/>
- <Option name="record enable button: fill start active" value="fb0c0cff"/>
- <Option name="record enable button: fill end active" value="b50f0fff"/>
+ <Option name="record enable button: fill start active" value="280b0bff"/>
+ <Option name="record enable button: fill end active" value="b50e0eff"/>
<Option name="record enable button: led" value="00000000"/>
<Option name="record enable button: led active" value="00000000"/>
<Option name="record enable button: text" value="a5a5a5ff"/>
@@ -331,9 +338,9 @@
<Option name="send alert button: led active" value="00000000"/>
<Option name="send alert button: text" value="ccccccff"/>
<Option name="send alert button: text active" value="000000ff"/>
- <Option name="transport button: fill start" value="656867ff"/>
- <Option name="transport button: fill end" value="333333ff"/>
- <Option name="transport button: fill start active" value="a1ff43ff"/>
+ <Option name="transport button: fill start" value="616268ff"/>
+ <Option name="transport button: fill end" value="505159ff"/>
+ <Option name="transport button: fill start active" value="145409ff"/>
<Option name="transport button: fill end active" value="00a300ff"/>
<Option name="transport button: led" value="00000000"/>
<Option name="transport button: led active" value="00000000"/>
@@ -341,14 +348,14 @@
<Option name="transport button: text active" value="00000000"/>
<Option name="transport recenable button: fill start" value="5f3f3fff"/>
<Option name="transport recenable button: fill end" value="3d2828ff"/>
- <Option name="transport recenable button: fill start active" value="f80b0bff"/>
+ <Option name="transport recenable button: fill start active" value="280b0bff"/>
<Option name="transport recenable button: fill end active" value="b50e0eff"/>
<Option name="transport recenable button: led" value="00000000"/>
<Option name="transport recenable button: led active" value="00000000"/>
<Option name="transport recenable button: text" value="00000000"/>
<Option name="transport recenable button: text active" value="00000000"/>
<Option name="transport option button: fill start" value="636470ff"/>
- <Option name="transport option button: fill end" value="4a4b51ff"/>
+ <Option name="transport option button: fill end" value="54555dff"/>
<Option name="transport option button: fill start active" value="636470ff"/>
<Option name="transport option button: fill end active" value="4a4b51ff"/>
<Option name="transport option button: led" value="4f3300ff"/>
@@ -356,9 +363,9 @@
<Option name="transport option button: text" value="c7c7d8ff"/>
<Option name="transport option button: text active" value="c8c8d9ff"/>
<Option name="transport active option button: fill start" value="606b60ff"/>
- <Option name="transport active option button: fill end" value="555d54ff"/>
- <Option name="transport active option button: fill start active" value="a1ff43ff"/>
- <Option name="transport active option button: fill end active" value="00a300ff"/>
+ <Option name="transport active option button: fill end" value="495348ff"/>
+ <Option name="transport active option button: fill start active" value="154515ff"/>
+ <Option name="transport active option button: fill end active" value="20a320ff"/>
<Option name="transport active option button: led" value="4f3300ff"/>
<Option name="transport active option button: led active" value="ffa500ff"/>
<Option name="transport active option button: text" value="c7c7d8ff"/>
@@ -373,46 +380,46 @@
<Option name="plugin bypass button: text active" value="c8c8d9ff"/>
<Option name="punch button: fill start" value="603f3fff"/>
<Option name="punch button: fill end" value="3d2828ff"/>
- <Option name="punch button: fill start active" value="fb0c0cff"/>
- <Option name="punch button: fill end active" value="b50f0fff"/>
+ <Option name="punch button: fill start active" value="503010ff"/>
+ <Option name="punch button: fill end active" value="f03020ff"/>
<Option name="punch button: led" value="00000000"/>
<Option name="punch button: led active" value="00000000"/>
<Option name="punch button: text" value="a5a5a5ff"/>
<Option name="punch button: text active" value="d8d8d8ff"/>
- <Option name="mouse mode button: fill start" value="6e8755ff"/>
- <Option name="mouse mode button: fill end" value="274e00ff"/>
- <Option name="mouse mode button: fill start active" value="c5ff95ff"/>
+ <Option name="mouse mode button: fill start" value="636470ff"/>
+ <Option name="mouse mode button: fill end" value="54555dff"/>
+ <Option name="mouse mode button: fill start active" value="145409ff"/>
<Option name="mouse mode button: fill end active" value="14ae08ff"/>
<Option name="mouse mode button: led" value="4f3300ff"/>
<Option name="mouse mode button: led active" value="ffa500ff"/>
- <Option name="mouse mode button: text" value="c7c7d8ff"/>
+ <Option name="mouse mode button: text" value="f2f2f2ff"/>
<Option name="mouse mode button: text active" value="000000ff"/>
<Option name="zoom button: fill start" value="626370ff"/>
- <Option name="zoom button: fill end" value="4a4b51ff"/>
- <Option name="zoom button: fill start active" value="4d4d4dff"/>
- <Option name="zoom button: fill end active" value="121212ff"/>
+ <Option name="zoom button: fill end" value="54555dff"/>
+ <Option name="zoom button: fill start active" value="202025ff"/>
+ <Option name="zoom button: fill end active" value="404045ff"/>
<Option name="zoom button: led" value="4f3300ff"/>
<Option name="zoom button: led active" value="ffa500ff"/>
<Option name="zoom button: text" value="c7c7d8ff"/>
<Option name="zoom button: text active" value="c8c8d9ff"/>
- <Option name="route button: fill start" value="56565dff"/>
- <Option name="route button: fill end" value="484856ff"/>
+ <Option name="route button: fill start" value="565659ff"/>
+ <Option name="route button: fill end" value="484853ff"/>
<Option name="route button: fill start active" value="4d4d4dff"/>
<Option name="route button: fill end active" value="121212ff"/>
<Option name="route button: led" value="4f3300ff"/>
<Option name="route button: led active" value="ffa500ff"/>
<Option name="route button: text" value="c7c7d8ff"/>
<Option name="route button: text active" value="c8c8d9ff"/>
- <Option name="mixer strip button: fill start" value="56565dff"/>
- <Option name="mixer strip button: fill end" value="484856ff"/>
- <Option name="mixer strip button: fill start active" value="ffd993ff"/>
+ <Option name="mixer strip button: fill start" value="565659ff"/>
+ <Option name="mixer strip button: fill end" value="484853ff"/>
+ <Option name="mixer strip button: fill start active" value="5f4943ff"/>
<Option name="mixer strip button: fill end active" value="ffa500ff"/>
<Option name="mixer strip button: led" value="4f3300ff"/>
<Option name="mixer strip button: led active" value="ffa500ff"/>
- <Option name="mixer strip button: text" value="c7c7d7ff"/>
+ <Option name="mixer strip button: text" value="c7c7d8ff"/>
<Option name="mixer strip button: text active" value="000000ff"/>
- <Option name="mixer strip name button: fill start" value="56565dff"/>
- <Option name="mixer strip name button: fill end" value="484856ff"/>
+ <Option name="mixer strip name button: fill start" value="565659ff"/>
+ <Option name="mixer strip name button: fill end" value="484853ff"/>
<Option name="mixer strip name button: fill start active" value="4d4d4dff"/>
<Option name="mixer strip name button: fill end active" value="121212ff"/>
<Option name="mixer strip name button: led" value="4f3300ff"/>
diff --git a/gtk2_ardour/ardour3_widget_list.rc b/gtk2_ardour/ardour3_widget_list.rc
index 14d72ff233..63d402aca1 100644
--- a/gtk2_ardour/ardour3_widget_list.rc
+++ b/gtk2_ardour/ardour3_widget_list.rc
@@ -361,6 +361,7 @@ widget "*processor fader" style:highest "processor"
widget "*processor postfader" style:highest "processor"
widget "*MonitorSectionLabel" style:highest "very_small_text"
widget "*mute button" style:highest "monitor"
+widget "*invert button" style:highest "monitor"
widget "*send alert button" style:highest "small_text"
widget "*solo button" style:highest "monitor"
widget "*rude solo" style:highest "small_text"
diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc
index 303e52de64..f24b60148d 100644
--- a/gtk2_ardour/ardour_button.cc
+++ b/gtk2_ardour/ardour_button.cc
@@ -38,6 +38,8 @@
#include "i18n.h"
+#define REFLECTION_HEIGHT 2
+
using namespace Gdk;
using namespace Gtk;
using namespace Glib;
@@ -57,7 +59,7 @@ ArdourButton::ArdourButton (Element e)
, _text_width (0)
, _text_height (0)
, _diameter (11.0)
- , _corner_radius (5.0)
+ , _corner_radius (4.0)
, _corner_mask (0xf)
, border_color (0)
, fill_color_active (0)
@@ -83,7 +85,7 @@ ArdourButton::ArdourButton (const std::string& str, Element e)
, _text_width (0)
, _text_height (0)
, _diameter (11.0)
- , _corner_radius (5.0)
+ , _corner_radius (4.0)
, _corner_mask (0xf)
, border_color (0)
, fill_color_active (0)
@@ -186,17 +188,14 @@ ArdourButton::render (cairo_t* cr)
float r,g,b,a;
- if (_elements & Edge) {
- rounded_function (cr, 0, 0, get_width(), get_height(), _corner_radius);
- UINT_TO_RGBA (border_color, &r, &g, &b, &a);
- //cairo_set_source_rgba (cr, r/255.0,g/255.0,b/255.0,a/255.0); //TODO: why doesn't this work?
- cairo_set_source_rgba (cr, 0,0,0,0.9);
- cairo_fill (cr);
- }
-
- if (_elements & Body) {
+ if ((_elements & Body)==Body) {
if (_elements & Edge) {
- rounded_function (cr, 1, 1, get_width()-2, get_height()-2, _corner_radius - 1.0);
+
+ cairo_set_source_rgba (cr, 0, 0, 0, 1);
+ rounded_function(cr, 0, 0, get_width(), get_height(), _corner_radius);
+ cairo_fill (cr);
+
+ rounded_function (cr, 1, 1, get_width()-2, get_height()-2, _corner_radius - 1.5);
} else {
rounded_function (cr, 0, 0, get_width(), get_height(), _corner_radius);
}
@@ -204,45 +203,55 @@ ArdourButton::render (cairo_t* cr)
if (active_state() == Gtkmm2ext::ImplicitActive) {
//background color
cairo_set_source (cr, fill_pattern);
- cairo_fill_preserve (cr);
+ cairo_fill (cr);
//border
UINT_TO_RGBA (fill_color_active, &r, &g, &b, &a);
- cairo_set_line_width (cr, 2.0);
-// rounded_function (cr, 3, 3, get_width()-6, get_height()-6, _corner_radius - 1.0);
+ cairo_set_line_width (cr, 1.0);
+ rounded_function (cr, 2, 2, get_width()-4, get_height()-4, _corner_radius - 1.5);
cairo_set_source_rgba (cr, r/255.0, g/255.0, b/255.0, a/255.0);
cairo_stroke (cr);
- //reflection
- if (!_flat_buttons) {
- rounded_function (cr, 2, 2, get_width()-4, get_height()/2-2, _corner_radius - 1.0);
- cairo_set_source (cr, shine_pattern);
- cairo_fill (cr);
- }
- } else if (active_state() == Gtkmm2ext::ExplicitActive) {
+ } else if (active_state() == Gtkmm2ext::ExplicitActive || ((_elements & Indicator)==Indicator) ) {
//background color
cairo_set_source (cr, fill_pattern_active);
cairo_fill (cr);
- //reflection
- if (!_flat_buttons) {
- rounded_function (cr, 2, 2, get_width()-4, get_height()/2-2, _corner_radius - 1.0);
- cairo_set_source (cr, shine_pattern);
- cairo_fill (cr);
- }
} else {
//background color
cairo_set_source (cr, fill_pattern);
cairo_fill (cr);
- //reflection
- if (!_flat_buttons) {
- rounded_function (cr, 2, 2, get_width()-4, get_height()/2-2, _corner_radius - 1.0);
- cairo_set_source (cr, shine_pattern);
- cairo_fill (cr);
- }
+ }
+ }
+
+ if ( ((_elements & FlatFace)==FlatFace) && (active_state() != Gtkmm2ext::ExplicitActive) ) {
+
+ if ( !_flat_buttons ) {
+ float rheight = get_height()*0.5-REFLECTION_HEIGHT;
+ Gtkmm2ext::rounded_rectangle (cr, 2, 3, get_width()-4, rheight, _corner_radius-1);
+ cairo_set_source (cr, shine_pattern);
+ cairo_fill (cr);
+ }
+
+ if (active_state() == Gtkmm2ext::ExplicitActive) {
+
+ UINT_TO_RGBA (fill_color_active, &r, &g, &b, &a);
+ cairo_set_line_width (cr, 2.0);
+ rounded_function (cr, 2, 2, get_width()-4, get_height()-4, _corner_radius - 2.0);
+ cairo_set_source_rgba (cr, r/255.0, g/255.0, b/255.0, a/255.0);
+ cairo_fill (cr);
+
+ } else {
+
+ UINT_TO_RGBA (fill_color_inactive, &r, &g, &b, &a);
+ cairo_set_line_width (cr, 2.0);
+ rounded_function (cr, 2, 2, get_width()-4, get_height()-4, _corner_radius - 2.0);
+ cairo_set_source_rgba (cr, r/255.0, g/255.0, b/255.0, a/255.0);
+ cairo_fill (cr);
+
}
}
@@ -267,7 +276,7 @@ ArdourButton::render (cairo_t* cr)
text_margin = 10;
}
- if ((_elements & Text) && !_text.empty()) {
+ if ( ((_elements & Text)==Text) && !_text.empty()) {
cairo_new_path (cr);
@@ -286,7 +295,7 @@ ArdourButton::render (cairo_t* cr)
pango_cairo_show_layout (cr, _layout->gobj());
}
- if (_elements & Indicator) {
+ if (((_elements & Indicator)==Indicator)) {
/* move to the center of the indicator/led */
@@ -317,14 +326,7 @@ ArdourButton::render (cairo_t* cr)
cairo_arc (cr, 0, 0, _diameter/2-3, 0, 2 * M_PI);
cairo_fill(cr);
- //reflection
- cairo_scale(cr, 0.7, 0.7);
- cairo_arc (cr, 0, 0, _diameter/2-3, 0, 2 * M_PI);
- cairo_set_source (cr, reflection_pattern);
- cairo_fill (cr);
-
cairo_restore (cr);
-
}
@@ -332,7 +334,18 @@ ArdourButton::render (cairo_t* cr)
if ((visual_state() & Gtkmm2ext::Insensitive)) {
rounded_function (cr, 0, 0, get_width(), get_height(), _corner_radius);
- cairo_set_source_rgba (cr, 0.905, 0.917, 0.925, 0.5);
+ cairo_set_source_rgba (cr, 0.505, 0.517, 0.525, 0.5);
+ cairo_fill (cr);
+ }
+
+ //reflection
+ bool show_reflection = (active_state() == Gtkmm2ext::ExplicitActive);
+ show_reflection &= !_flat_buttons;
+ show_reflection &= !((_elements & Indicator)==Indicator);
+ if ( show_reflection ) {
+ float rheight = get_height()*0.5-REFLECTION_HEIGHT;
+ Gtkmm2ext::rounded_rectangle (cr, 2, get_height()*0.5-1, get_width()-4, rheight, _corner_radius-1);
+ cairo_set_source (cr, shine_pattern);
cairo_fill (cr);
}
@@ -443,7 +456,6 @@ ArdourButton::set_colors ()
if (_elements & Body) {
- shine_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height()/2-2);
start_color = ARDOUR_UI::config()->color_by_name (string_compose ("%1: fill start active", get_name()));
if (_flat_buttons) {
@@ -458,8 +470,10 @@ ArdourButton::set_colors ()
active_b = b/255.0;
active_a = a/255.0;
- cairo_pattern_add_color_stop_rgba (shine_pattern, 0, 1,1,1,0.1);
- cairo_pattern_add_color_stop_rgba (shine_pattern, 0.2, 1,1,1,0.4);
+ shine_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height());
+ cairo_pattern_add_color_stop_rgba (shine_pattern, 0, 1,1,1,0.0);
+ cairo_pattern_add_color_stop_rgba (shine_pattern, 0.5, 1,1,1,0.1);
+ cairo_pattern_add_color_stop_rgba (shine_pattern, 0.7, 1,1,1,0.2);
cairo_pattern_add_color_stop_rgba (shine_pattern, 1, 1,1,1,0.1);
fill_pattern = cairo_pattern_create_linear (0.0, 0.0, 0.0, get_height()-3);
@@ -825,6 +839,13 @@ ArdourButton::set_elements (Element e)
}
void
+ArdourButton::add_elements (Element e)
+{
+ _elements = (ArdourButton::Element) (_elements | e);
+ set_colors ();
+}
+
+void
ArdourButton::set_flat_buttons (bool yn)
{
_flat_buttons = yn;
diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h
index 016d80686c..e148d1a783 100644
--- a/gtk2_ardour/ardour_button.h
+++ b/gtk2_ardour/ardour_button.h
@@ -14,7 +14,6 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
*/
#ifndef __gtk2_ardour_ardour_button_h__
@@ -38,6 +37,7 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
Body = 0x2,
Text = 0x4,
Indicator = 0x8,
+ FlatFace = 0x10,
};
static Element default_elements;
@@ -53,7 +53,7 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
enum Tweaks {
ShowClick = 0x1,
- NoModel = 0x4,
+ NoModel = 0x2,
};
Tweaks tweaks() const { return _tweaks; }
@@ -64,6 +64,7 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
Element elements() const { return _elements; }
void set_elements (Element);
+ void add_elements (Element);
void set_corner_radius (float);
void set_rounded_corner_mask (int);
@@ -116,6 +117,7 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable
float _corner_radius;
int _corner_mask;
+ uint32_t bg_color;
uint32_t border_color;
uint32_t fill_color_active;
uint32_t fill_color_inactive;
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 81b5175389..3e69c48e27 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -241,8 +241,10 @@ ARDOUR_UI::setup_transport ()
static_cast<Widget*> (&transport_frame), 1));
auto_return_button.set_text(_("Auto Return"));
+
follow_edits_button.set_text(_("Follow Edits"));
- auto_input_button.set_text (_("Auto Input"));
+
+// auto_input_button.set_text (_("Auto Input"));
click_button.set_image (get_icon (X_("metronome")));
act = ActionManager::get_action ("Transport", "ToggleClick");
@@ -335,6 +337,8 @@ ARDOUR_UI::setup_transport ()
transport_button_size_group->add_widget (roll_button);
transport_button_size_group->add_widget (stop_button);
+ goto_start_button.set_size_request (-1, 40);
+
HBox* tbox1 = manage (new HBox);
HBox* tbox2 = manage (new HBox);
HBox* tbox = manage (new HBox);
@@ -349,15 +353,12 @@ ARDOUR_UI::setup_transport ()
tbox2->set_spacing (2);
tbox->set_spacing (2);
+ tbox1->pack_start (midi_panic_button, false, false, 5);
tbox1->pack_start (click_button, false, false, 5);
- tbox1->pack_start (midi_panic_button, false, false);
tbox1->pack_start (goto_start_button, false, false);
tbox1->pack_start (goto_end_button, false, false);
tbox1->pack_start (auto_loop_button, false, false);
- play_selection_button.set_rounded_corner_mask (0x1); /* upper left only */
- roll_button.set_rounded_corner_mask (0x2); /* upper right only */
-
tbox2->pack_start (play_selection_button, false, false);
tbox2->pack_start (roll_button, false, false);
tbox2->pack_start (stop_button, false, false);
@@ -387,7 +388,7 @@ ARDOUR_UI::setup_transport ()
VBox* transport_vbox = manage (new VBox);
transport_vbox->set_name ("TransportBase");
- transport_vbox->set_border_width (3);
+ transport_vbox->set_border_width (0);
transport_vbox->set_spacing (3);
transport_vbox->pack_start (*tbox, true, true, 0);
transport_vbox->pack_start (*shuttle_box, false, false, 0);
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index 0d34e2fe25..18153ac785 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -85,7 +85,7 @@ AudioClock::AudioClock (const string& clock_name, bool transient, const string&
, info_height (0)
, upper_height (0)
, mode_based_info_ratio (1.0)
- , corner_radius (9)
+ , corner_radius (4)
, font_size (10240)
, editing (false)
, bbt_reference_time (-1)
@@ -94,7 +94,6 @@ AudioClock::AudioClock (const string& clock_name, bool transient, const string&
, last_sdelta (0)
, dragging (false)
, drag_field (Field (0))
-
{
set_flags (CAN_FOCUS);
diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc
index c72602bf6c..262f495f84 100644
--- a/gtk2_ardour/automation_time_axis.cc
+++ b/gtk2_ardour/automation_time_axis.cc
@@ -181,6 +181,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (
controls_table.attach (auto_button, 6, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
if (_controller) {
+ _controller.get()->set_size_request(-1, 24);
/* add bar controller */
controls_table.attach (*_controller.get(), 0, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND);
/* note that this handler connects *before* the default handler */
diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h
index b4a570836e..9255b62e7e 100644
--- a/gtk2_ardour/canvas_vars.h
+++ b/gtk2_ardour/canvas_vars.h
@@ -171,6 +171,7 @@ BUTTON_VARS(RudeSolo, "rude solo")
BUTTON_VARS(RudeIsolate, "rude isolate")
BUTTON_VARS(RudeAudition, "rude audition")
BUTTON_VARS(FeedbackAlert, "feedback alert")
+BUTTON_VARS(InvertButton, "invert button")
BUTTON_VARS(MuteButton, "mute button")
BUTTON_VARS(SoloButton, "solo button")
BUTTON_VARS(RecEnableButton, "record enable button")
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index e986306976..304f25b146 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -652,11 +652,13 @@ Editor::Editor ()
/* nudge stuff */
- nudge_forward_button.add (*(manage (new Image (::get_icon("nudge_right")))));
- nudge_backward_button.add (*(manage (new Image (::get_icon("nudge_left")))));
+ nudge_forward_button.set_name ("zoom button");
+ nudge_forward_button.add_elements (ArdourButton::FlatFace);
+ nudge_forward_button.set_image(::get_icon("nudge_right"));
- nudge_forward_button.set_name ("TransportButton");
- nudge_backward_button.set_name ("TransportButton");
+ nudge_backward_button.set_name ("zoom button");
+ nudge_backward_button.add_elements (ArdourButton::FlatFace);
+ nudge_backward_button.set_image(::get_icon("nudge_left"));
fade_context_menu.set_name ("ArdourContextMenu");
@@ -2857,7 +2859,7 @@ Editor::setup_toolbar ()
mouse_mode_size_group->add_widget (internal_edit_button);
/* make them just a bit bigger */
- mouse_move_button.set_size_request (-1, 25);
+ mouse_move_button.set_size_request (-1, 30);
mouse_mode_hbox->set_spacing (2);
@@ -2916,19 +2918,25 @@ Editor::setup_toolbar ()
RefPtr<Action> act;
zoom_in_button.set_name ("zoom button");
- zoom_in_button.add (*(manage (new Image (::get_icon ("zoom_in")))));
+ zoom_in_button.add_elements ( ArdourButton::FlatFace );
+ zoom_in_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
+ zoom_in_button.set_image(::get_icon ("zoom_in"));
act = ActionManager::get_action (X_("Editor"), X_("temporal-zoom-in"));
- act->connect_proxy (zoom_in_button);
+ zoom_in_button.set_related_action (act);
zoom_out_button.set_name ("zoom button");
- zoom_out_button.add (*(manage (new Image (::get_icon ("zoom_out")))));
+ zoom_out_button.add_elements ( ArdourButton::FlatFace );
+ zoom_out_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
+ zoom_out_button.set_image(::get_icon ("zoom_out"));
act = ActionManager::get_action (X_("Editor"), X_("temporal-zoom-out"));
- act->connect_proxy (zoom_out_button);
+ zoom_out_button.set_related_action (act);
zoom_out_full_button.set_name ("zoom button");
- zoom_out_full_button.add (*(manage (new Image (::get_icon ("zoom_full")))));
+ zoom_out_full_button.add_elements ( ArdourButton::FlatFace );
+ zoom_out_full_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
+ zoom_out_full_button.set_image(::get_icon ("zoom_full"));
act = ActionManager::get_action (X_("Editor"), X_("zoom-to-session"));
- act->connect_proxy (zoom_out_full_button);
+ zoom_out_full_button.set_related_action (act);
zoom_focus_selector.set_name ("ZoomFocusSelector");
set_popdown_strings (zoom_focus_selector, zoom_focus_strings);
@@ -2941,17 +2949,21 @@ Editor::setup_toolbar ()
_zoom_box.pack_start (zoom_focus_selector, false, false);
/* Track zoom buttons */
- tav_expand_button.set_name ("TrackHeightButton");
+ tav_expand_button.set_name ("zoom button");
+ tav_expand_button.add_elements ( ArdourButton::FlatFace );
+ tav_expand_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
tav_expand_button.set_size_request (-1, 20);
- tav_expand_button.add (*(manage (new Image (::get_icon ("tav_exp")))));
+ tav_expand_button.set_image(::get_icon ("tav_exp"));
act = ActionManager::get_action (X_("Editor"), X_("expand-tracks"));
- act->connect_proxy (tav_expand_button);
+ tav_expand_button.set_related_action (act);
- tav_shrink_button.set_name ("TrackHeightButton");
+ tav_shrink_button.set_name ("zoom button");
+ tav_shrink_button.add_elements ( ArdourButton::FlatFace );
+ tav_shrink_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
tav_shrink_button.set_size_request (-1, 20);
- tav_shrink_button.add (*(manage (new Image (::get_icon ("tav_shrink")))));
+ tav_shrink_button.set_image(::get_icon ("tav_shrink"));
act = ActionManager::get_action (X_("Editor"), X_("shrink-tracks"));
- act->connect_proxy (tav_shrink_button);
+ tav_shrink_button.set_related_action (act);
_zoom_box.pack_start (tav_shrink_button);
_zoom_box.pack_start (tav_expand_button);
@@ -2967,7 +2979,7 @@ Editor::setup_toolbar ()
_zoom_tearoff->Visible.connect (sigc::bind (sigc::mem_fun(*this, &Editor::reattach_tearoff), static_cast<Box*> (&toolbar_hbox),
&_zoom_tearoff->tearoff_window(), 0));
- snap_box.set_spacing (1);
+ snap_box.set_spacing (2);
snap_box.set_border_width (2);
snap_type_selector.set_name ("SnapTypeSelector");
@@ -2995,6 +3007,9 @@ Editor::setup_toolbar ()
nudge_forward_button.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::nudge_forward_release), false);
nudge_backward_button.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::nudge_backward_release), false);
+ nudge_forward_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
+ nudge_backward_button.set_tweaks ((ArdourButton::Tweaks) (ArdourButton::ShowClick) );
+
nudge_box->pack_start (nudge_backward_button, false, false);
nudge_box->pack_start (nudge_forward_button, false, false);
nudge_box->pack_start (*nudge_clock, false, false);
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 086b5ed5b8..a239f4e3be 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1569,12 +1569,13 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void editor_list_button_toggled ();
AudioClock* zoom_range_clock;
- Gtk::Button zoom_in_button;
- Gtk::Button zoom_out_button;
- Gtk::Button zoom_out_full_button;
- Gtk::Button tav_expand_button;
- Gtk::Button tav_shrink_button;
+ ArdourButton zoom_in_button;
+ ArdourButton zoom_out_button;
+ ArdourButton zoom_out_full_button;
+
+ ArdourButton tav_expand_button;
+ ArdourButton tav_shrink_button;
Gtk::VBox toolbar_clock_vbox;
Gtk::VBox toolbar_selection_clock_vbox;
@@ -1931,8 +1932,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
/* nudge */
- Gtk::Button nudge_forward_button;
- Gtk::Button nudge_backward_button;
+ ArdourButton nudge_forward_button;
+ ArdourButton nudge_backward_button;
Gtk::HBox nudge_hbox;
Gtk::VBox nudge_vbox;
AudioClock* nudge_clock;
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 54894f9746..0222dd6b3b 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -408,41 +408,49 @@ Editor::register_actions ()
smart_mode_action = Glib::RefPtr<ToggleAction>::cast_static (act);
smart_mode_button.set_related_action (smart_mode_action);
smart_mode_button.set_text (_("Smart"));
+ smart_mode_button.add_elements ( ArdourButton::FlatFace );
smart_mode_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-object", _("Object Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseObject));
mouse_move_button.set_related_action (act);
mouse_move_button.set_image (::get_icon("tool_object"));
+ mouse_move_button.add_elements ( ArdourButton::FlatFace );
mouse_move_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-range", _("Range Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseRange));
mouse_select_button.set_related_action (act);
mouse_select_button.set_image (::get_icon("tool_range"));
+ mouse_select_button.add_elements ( ArdourButton::FlatFace );
mouse_select_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-draw", _("Note Drawing Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseDraw));
mouse_draw_button.set_related_action (act);
mouse_draw_button.set_image (::get_icon("midi_tool_pencil"));
+ mouse_draw_button.add_elements ( ArdourButton::FlatFace );
mouse_draw_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-gain", _("Gain Tool"), sigc::bind (mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseGain));
mouse_gain_button.set_related_action (act);
mouse_gain_button.set_image (::get_icon("tool_gain"));
+ mouse_gain_button.add_elements ( ArdourButton::FlatFace );
mouse_gain_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-zoom", _("Zoom Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseZoom));
mouse_zoom_button.set_related_action (act);
mouse_zoom_button.set_image (::get_icon("tool_zoom"));
+ mouse_zoom_button.add_elements ( ArdourButton::FlatFace );
mouse_zoom_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-audition", _("Audition Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseAudition));
mouse_audition_button.set_related_action (act);
mouse_audition_button.set_image (::get_icon("tool_audition"));
+ mouse_audition_button.add_elements ( ArdourButton::FlatFace );
mouse_audition_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-timefx", _("Time FX Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseTimeFX));
mouse_timefx_button.set_related_action (act);
mouse_timefx_button.set_image (::get_icon("tool_stretch"));
+ mouse_timefx_button.add_elements ( ArdourButton::FlatFace );
mouse_timefx_button.set_name ("mouse mode button");
ActionManager::register_action (editor_actions, "step-mouse-mode", _("Step Mouse Mode"), sigc::bind (sigc::mem_fun(*this, &Editor::step_mouse_mode), true));
@@ -450,6 +458,7 @@ Editor::register_actions ()
act = ActionManager::register_toggle_action (mouse_mode_actions, "toggle-internal-edit", _("Edit MIDI"), sigc::mem_fun(*this, &Editor::toggle_internal_editing));
internal_edit_button.set_related_action (act);
internal_edit_button.set_image (::get_icon("tool_note"));
+ internal_edit_button.add_elements ( ArdourButton::FlatFace );
internal_edit_button.set_name ("mouse mode button");
RadioAction::Group edit_point_group;
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 843f2ee452..0e0bf893a0 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -155,6 +155,7 @@ MixerStrip::init ()
input_button.set_text (_("Input"));
input_button.set_name ("mixer strip button");
+ input_button.set_size_request (-1, 20);
input_button_box.pack_start (input_button, true, true);
output_button.set_text (_("Output"));
@@ -243,12 +244,13 @@ MixerStrip::init ()
bottom_button_table.set_homogeneous (true);
bottom_button_table.attach (group_button, 0, 1, 0, 1);
- name_button.set_name ("mixer strip name button");
+ name_button.set_name ("mixer strip button");
name_button.set_text (" "); /* non empty text, forces creation of the layout */
name_button.set_text (""); /* back to empty */
name_button.layout()->set_ellipsize (Pango::ELLIPSIZE_END);
name_button.signal_size_allocate().connect (sigc::mem_fun (*this, &MixerStrip::name_button_resized));
Gtkmm2ext::set_size_request_to_display_given_text (name_button, longest_label.c_str(), 2, 2);
+ name_button.set_size_request (-1, 20);
ARDOUR_UI::instance()->set_tip (&group_button, _("Mix group"), "");
group_button.set_name ("mixer strip button");
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index c264588b2b..762d7a9b92 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -1787,10 +1787,11 @@ RouteUI::setup_invert_buttons ()
for (uint32_t i = 0; i < to_add; ++i) {
ArdourButton* b = manage (new ArdourButton);
+ b->set_size_request(20,20);
b->signal_button_press_event().connect (sigc::mem_fun (*this, &RouteUI::invert_press));
b->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::invert_release), i));
- b->set_name (X_("mixer strip button"));
+ b->set_name (X_("invert button"));
if (to_add == 1) {
if (N > 1) {
b->set_text (string_compose (X_("Ø (%1)"), N));
diff --git a/gtk2_ardour/stereo_panner.cc b/gtk2_ardour/stereo_panner.cc
index ebb55e7c86..506ce36645 100644
--- a/gtk2_ardour/stereo_panner.cc
+++ b/gtk2_ardour/stereo_panner.cc
@@ -146,7 +146,7 @@ StereoPanner::on_expose_event (GdkEventExpose*)
/* background */
context->set_source_rgba (UINT_RGBA_R_FLT(b), UINT_RGBA_G_FLT(b), UINT_RGBA_B_FLT(b), UINT_RGBA_A_FLT(b));
- rounded_rectangle (context, 0, 0, width, height, corner_radius);
+ cairo_rectangle (context->cobj(), 0, 0, width, height);
context->fill ();
/* the usable width is reduced from the real width, because we need space for