From 2af9c2180a8a3bc08ed2ccdfe9ec00cac82c0386 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 18 Jun 2021 20:32:09 -0400 Subject: [PATCH] Push2: Mostly fix scale menu text rendering (#8599) "Mostly" because there are still some issues with horizontal overlap between entries, but I think that's something that needs to be addressed separately. Like earlier issues, this was caused by using a screen-derived or default cairo/pango context. I also tinkered with some constants to make things look sensible to me, and hopefully everywhere since it should always look the same with the context fix. --- libs/surfaces/push2/canvas.h | 2 -- libs/surfaces/push2/menu.cc | 4 ++-- libs/surfaces/push2/push2.cc | 1 - libs/surfaces/push2/scale.cc | 8 ++++---- libs/surfaces/push2/scale.h | 2 ++ libs/surfaces/push2/track_mix.cc | 1 - 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/libs/surfaces/push2/canvas.h b/libs/surfaces/push2/canvas.h index 30ddeedf60..a854d04691 100644 --- a/libs/surfaces/push2/canvas.h +++ b/libs/surfaces/push2/canvas.h @@ -51,8 +51,6 @@ class Push2Canvas : public ArdourCanvas::Canvas void queue_resize (); bool vblank (); - Cairo::RefPtr image_context() { return _context; } - int rows() const { return _rows; } int cols() const { return _cols; } diff --git a/libs/surfaces/push2/menu.cc b/libs/surfaces/push2/menu.cc index a5fe1ca3b5..d7706e550a 100644 --- a/libs/surfaces/push2/menu.cc +++ b/libs/surfaces/push2/menu.cc @@ -59,7 +59,7 @@ Push2Menu::Push2Menu (Item* parent, std::vector s) if (_baseline < 0) { Push2Canvas* p2c = dynamic_cast (canvas()); - Glib::RefPtr throwaway = Pango::Layout::create (p2c->image_context()); + Glib::RefPtr throwaway = Pango::Layout::create (p2c->get_pango_context()); throwaway->set_font_description (fd); throwaway->set_text (X_("Hg")); /* ascender + descender) */ int h, w; @@ -112,7 +112,7 @@ Push2Menu::rearrange (uint32_t initial_display) while (i != _displays.end()) { Coord x = col * Push2Canvas::inter_button_spacing(); - Coord y = 2 + (row * _baseline); + Coord y = row * _baseline; (*i)->set_position (Duple (x, y)); diff --git a/libs/surfaces/push2/push2.cc b/libs/surfaces/push2/push2.cc index 06a663dc6a..0bfad6a0ce 100644 --- a/libs/surfaces/push2/push2.cc +++ b/libs/surfaces/push2/push2.cc @@ -52,7 +52,6 @@ #include "canvas.h" #include "gui.h" #include "layout.h" -#include "menu.h" #include "mix.h" #include "push2.h" #include "scale.h" diff --git a/libs/surfaces/push2/scale.cc b/libs/surfaces/push2/scale.cc index 942bd8bdc2..5cc7855633 100644 --- a/libs/surfaces/push2/scale.cc +++ b/libs/surfaces/push2/scale.cc @@ -428,11 +428,11 @@ ScaleLayout::build_scale_menu () Pango::FontDescription fd ("Sans Bold 8"); _scale_menu->set_font_description (fd); - /* move menu into position so that its leftmost column is in the - * 2nd-from-left column of the display/button layout. - */ + /* Move menu horizontally so that the leftmost column is in the + 2nd-from-left column of the display/button layout. The Y position is + just what appears centered to me. */ - _scale_menu->set_position (Duple (10 + Push2Canvas::inter_button_spacing(), 40)); + _scale_menu->set_position (Duple (10 + Push2Canvas::inter_button_spacing(), 32)); /* listen for changes */ diff --git a/libs/surfaces/push2/scale.h b/libs/surfaces/push2/scale.h index 5a1bad1195..0a5d055a9d 100644 --- a/libs/surfaces/push2/scale.h +++ b/libs/surfaces/push2/scale.h @@ -29,6 +29,8 @@ namespace ArdourCanvas { namespace ArdourSurface { +class Push2Menu; + class ScaleLayout : public Push2Layout { public: diff --git a/libs/surfaces/push2/track_mix.cc b/libs/surfaces/push2/track_mix.cc index c9dd377d16..162bedeed2 100644 --- a/libs/surfaces/push2/track_mix.cc +++ b/libs/surfaces/push2/track_mix.cc @@ -61,7 +61,6 @@ #include "canvas.h" #include "knob.h" #include "level_meter.h" -#include "menu.h" #include "push2.h" #include "track_mix.h" #include "utils.h"