along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#include <cmath>
#include <climits>
#include <string.h>
+#include <gtkmm/menu.h>
+#include <gtkmm/checkmenuitem.h>
+
#include <pbd/error.h>
#include <ardour/panner.h>
#include <gtkmm2ext/gtk_ui.h>
using namespace Gtk;
using namespace sigc;
using namespace ARDOUR;
+using namespace PBD;
Panner2d::Target::Target (float xa, float ya, const char *txt)
: x (xa), y (ya), text (txt ? strdup (txt) : 0)
}
}
-Panner2d::Panner2d (Panner& p, int32_t w, int32_t h)
- : panner (p), width (w), height (h)
+Panner2d::Panner2d (Panner& p, int32_t h)
+ : panner (p), width (0), height (h)
{
context_menu = 0;
bypass_menu_item = 0;
}
void
-Panner2d::on_size_allocate (Gtk::Allocation alloc)
+Panner2d::on_size_allocate (Gtk::Allocation& alloc)
{
width = alloc.get_width();
height = alloc.get_height();
gint x, y;
float fx, fy;
+ if (layout == 0) {
+ layout = create_pango_layout ("");
+ layout->set_font_description (get_style()->get_font());
+ }
+
/* redraw the background */
get_window()->draw_rectangle (get_style()->get_bg_gc(get_state()),
for (Targets::iterator i = pucks.begin(); i != pucks.end(); ++i) {
Target* puck = i->second;
- Pango::Layout layout = new Pango::Layout(get_window()->create_pango_layout());
if (puck->visible) {
/* redraw puck */
x, y,
8, 8,
0, 360 * 64);
- layout.set_text(puck->text);
- //get_window()->draw_text (get_style()->get_font(),
- // get_style()->get_fg_gc(Gtk::STATE_NORMAL),
- // x + 6, y + 6,
- // puck->text,
- // puck->textlen);
- // GTK2FIX : needs a pango layout
+
+ layout->set_text (puck->text);
+
+ get_window()->draw_layout (get_style()->get_fg_gc (STATE_NORMAL), x+6, y+6, layout);
}
}
}
bypass_menu_item->set_active (panner.bypassed());
- context_menu->popup (1, 0);
+ context_menu->popup (1, gtk_get_current_event_time());
}
void