summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-02-13 16:08:32 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-02-13 16:08:32 +0000
commite92c949f3ceb80b9892e70c7d30540a2b45fbf7d (patch)
tree61178e3cc975e985db6773bfcd6f671d84b9c8d0
parente603d9583088068b25b55886b812d1ddbae9bfdb (diff)
fix style overwriting done by fastmeter, and lack of clip mask/clip origin restore in pixscroller; fixes meter redraw botch when moving fader, and the style fix corrects visual problems with Clearlooks as soon a ameter is realized
git-svn-id: svn://localhost/trunk/ardour2@323 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour2_ui.rc2
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc2
-rw-r--r--gtk2_ardour/editor.cc28
-rw-r--r--gtk2_ardour/editor_mixer.cc4
-rw-r--r--gtk2_ardour/gain_meter.cc2
-rw-r--r--libs/gtkmm2ext/fastmeter.cc33
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/fastmeter.h1
-rw-r--r--libs/gtkmm2ext/pixscroller.cc11
8 files changed, 41 insertions, 42 deletions
diff --git a/gtk2_ardour/ardour2_ui.rc b/gtk2_ardour/ardour2_ui.rc
index 90ecf53717..8df3dcca46 100644
--- a/gtk2_ardour/ardour2_ui.rc
+++ b/gtk2_ardour/ardour2_ui.rc
@@ -126,7 +126,7 @@ style "black_mackie_menu_bar" = "medium_bold_text"
bg[NORMAL] = { 0, 0, 0 }
}
-style "default_buttons_menus" = "small_button"
+style "default_buttons_menus"
{
font_name = "sans 8"
fg[ACTIVE] = { 0, 0, 0 }
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 84900e702a..fcd8d51599 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -111,7 +111,7 @@ ARDOUR_UI::connect_to_session (Session *s)
*/
connect_dependents_to_session (s);
-
+
start_clocking ();
start_blinking ();
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index ebaab5d755..95a1150894 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -2080,6 +2080,7 @@ Editor::set_state (const XMLNode& node)
int x, y, xoff, yoff;
Gdk::Geometry g;
+
if ((geometry = find_named_node (node, "geometry")) == 0) {
g.base_width = default_width;
@@ -2119,6 +2120,15 @@ Editor::set_state (const XMLNode& node)
set_snap_mode ((SnapMode) atoi (prop->value()));
}
+ if ((prop = node.property ("mouse-mode"))) {
+ MouseMode m = str2mousemode(prop->value());
+ mouse_mode = MouseMode ((int) m + 1); /* lie, force mode switch */
+ set_mouse_mode (m, true);
+ } else {
+ mouse_mode = MouseGain; /* lie, to force the mode switch */
+ set_mouse_mode (MouseObject, true);
+ }
+
if ((prop = node.property ("show-waveforms"))) {
bool yn = (prop->value() == "yes");
_show_waveforms = !yn;
@@ -2166,24 +2176,16 @@ Editor::set_state (const XMLNode& node)
}
}
- if ((prop = node.property ("xfades-visible"))) {
- bool yn = (prop->value() == "yes");
- _xfade_visibility = !yn;
- set_xfade_visibility (yn);
- }
-
+
if ((prop = node.property ("region-list-sort-type"))) {
region_list_sort_type = (Editing::RegionListSortType) -1; // force change
reset_region_list_sort_type(str2regionlistsorttype(prop->value()));
}
- if ((prop = node.property ("mouse-mode"))) {
- MouseMode m = str2mousemode(prop->value());
- mouse_mode = MouseMode ((int) m + 1); /* lie, force mode switch */
- set_mouse_mode (m, true);
- } else {
- mouse_mode = MouseGain; /* lie, to force the mode switch */
- set_mouse_mode (MouseObject, true);
+ if ((prop = node.property ("xfades-visible"))) {
+ bool yn = (prop->value() == "yes");
+ _xfade_visibility = !yn;
+ set_xfade_visibility (yn);
}
if ((prop = node.property ("show-editor-mixer"))) {
diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc
index a61707f91b..512fe6a957 100644
--- a/gtk2_ardour/editor_mixer.cc
+++ b/gtk2_ardour/editor_mixer.cc
@@ -95,14 +95,14 @@ Editor::show_editor_mixer (bool yn)
}
if (current_mixer_strip->get_parent() == 0) {
-
current_mixer_strip->set_embedded (true);
current_mixer_strip->Hiding.connect (mem_fun(*this, &Editor::current_mixer_strip_hidden));
current_mixer_strip->GoingAway.connect (mem_fun(*this, &Editor::current_mixer_strip_removed));
current_mixer_strip->set_width (editor_mixer_strip_width);
global_hpacker.pack_start (*current_mixer_strip, Gtk::PACK_SHRINK );
- global_hpacker.reorder_child (*current_mixer_strip, 0);
+ global_hpacker.reorder_child (*current_mixer_strip, 0);
+
current_mixer_strip->show_all ();
}
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index a696bbfbb1..df219d3e7e 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -181,8 +181,8 @@ GainMeter::GainMeter (IO& io, Session& s)
hbox.pack_start (meter_packer, Gtk::PACK_SHRINK);
set_spacing (4);
+
pack_start (top_table, Gtk::PACK_SHRINK);
- /* here's the culprit gain display box*/
pack_start (gain_display_box, Gtk::PACK_SHRINK);
pack_start (hbox, Gtk::PACK_SHRINK);
diff --git a/libs/gtkmm2ext/fastmeter.cc b/libs/gtkmm2ext/fastmeter.cc
index 6cefe182bd..e1b3361f57 100644
--- a/libs/gtkmm2ext/fastmeter.cc
+++ b/libs/gtkmm2ext/fastmeter.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2003 Paul Davis
+ Copyright (C) 2003-2006 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -72,20 +72,6 @@ FastMeter::~FastMeter ()
}
void
-FastMeter::on_realize ()
-{
- DrawingArea::on_realize();
-
- RefPtr<Style> style = get_style();
- Color black = style->get_black();
-
- style->set_bg (STATE_NORMAL, black);
- style->set_bg (STATE_ACTIVE, black);
- style->set_bg (STATE_SELECTED, black);
- style->set_bg (STATE_INSENSITIVE, black);
-}
-
-void
FastMeter::set_vertical_xpm (const char **xpm)
{
if (v_pixmap == 0) {
@@ -149,14 +135,27 @@ FastMeter::vertical_expose (GdkEventExpose* ev)
{
gint top_of_meter;
GdkRectangle intersection;
+ GdkRectangle background;
top_of_meter = (gint) floor (v_pixheight * current_level);
pixrect.height = top_of_meter;
- if (gdk_rectangle_intersect (&pixrect, &ev->area, &intersection)) {
+ background.x = 0;
+ background.y = 0;
+ background.width = pixrect.width;
+ background.height = v_pixheight - top_of_meter;
+
+ if (gdk_rectangle_intersect (&background, &ev->area, &intersection)) {
+ get_window()->draw_rectangle (get_style()->get_black_gc(), true,
+ intersection.x, intersection.y,
+ intersection.width, intersection.height);
+ }
+
+ if (gdk_rectangle_intersect (&pixrect, &ev->area, &intersection)) {
+
/* draw the part of the meter image that we need. the area we draw is bounded "in reverse" (top->bottom)
*/
-
+
get_window()->draw_drawable(get_style()->get_fg_gc(get_state()), v_pixmap,
intersection.x, v_pixheight - top_of_meter,
intersection.x, v_pixheight - top_of_meter,
diff --git a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
index 3143c71b12..53d0666e1f 100644
--- a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
+++ b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
@@ -52,7 +52,6 @@ class FastMeter : public Gtk::DrawingArea {
protected:
bool on_expose_event (GdkEventExpose*);
void on_size_request (GtkRequisition*);
- void on_realize ();
private:
static Glib::RefPtr<Gdk::Pixmap> h_pixmap;
diff --git a/libs/gtkmm2ext/pixscroller.cc b/libs/gtkmm2ext/pixscroller.cc
index 8edf0723e1..9489a532ca 100644
--- a/libs/gtkmm2ext/pixscroller.cc
+++ b/libs/gtkmm2ext/pixscroller.cc
@@ -96,9 +96,9 @@ PixScroller::on_expose_event (GdkEventExpose* ev)
if (gdk_rectangle_intersect (sliderrect.gobj(), &ev->area, &intersect)) {
Glib::RefPtr<Gdk::GC> gc(get_style()->get_fg_gc(get_state()));
Glib::RefPtr<Gdk::Bitmap> mask (slider_mask);
-// Do these have a gtk2 equivalent?
-// Gdk::GCValues values;
-// gc->get_values(values);
+
+ GdkGCValues values;
+ gdk_gc_get_values(gc->gobj(), &values);
gc->set_clip_origin (sliderrect.get_x(), sliderrect.get_y());
gc->set_clip_mask (mask);
win->draw_drawable (gc, slider,
@@ -108,9 +108,8 @@ PixScroller::on_expose_event (GdkEventExpose* ev)
intersect.y,
intersect.width,
intersect.height);
-// gc->set_clip_origin(values.clip_x_origin, values.clip_y_origin);
-// Gdk::Bitmap i_hate_gdk (values.clip_mask);
-// gc->set_clip_mask (i_hate_gdk);
+ gc->set_clip_origin (values.clip_x_origin, values.clip_y_origin);
+ gdk_gc_set_clip_mask (gc->gobj(), values.clip_mask);
}