*/
+#include <pango/pangoft2.h> // for fontmap resolution control for GnomeCanvas
+#include <pango/pangocairo.h> // for fontmap resolution control for GnomeCanvas
+
#include <cstdlib>
#include <cctype>
#include <fstream>
#include <pbd/file_utils.h>
#include <gtkmm2ext/utils.h>
+#include <ardour/configuration.h>
#include <ardour/filesystem_paths.h>
using namespace Glib;
using namespace PBD;
+sigc::signal<void> DPIReset;
+
int
pixel_width (const ustring& str, Pango::FontDescription& font)
{
it does allow.
*/
+ int fakekey = GDK_VoidSymbol;
int ret = false;
switch (ev->keyval) {
case GDK_Tab:
- ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_nabla, GdkModifierType(ev->state));
- break;
-
- // some X and/or GDK implementations do Shift-Tab -> GDK_ISO_Left_Tab
-
case GDK_ISO_Left_Tab:
- ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_nabla, GdkModifierType(ev->state));
+ fakekey = GDK_nabla;
break;
case GDK_Up:
- ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_uparrow, GdkModifierType(ev->state));
+ fakekey = GDK_uparrow;
break;
case GDK_Down:
- ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_downarrow, GdkModifierType(ev->state));
+ fakekey = GDK_downarrow;
break;
case GDK_Right:
- ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_rightarrow, GdkModifierType(ev->state));
+ fakekey = GDK_rightarrow;
break;
case GDK_Left:
- ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_leftarrow, GdkModifierType(ev->state));
+ fakekey = GDK_leftarrow;
break;
default:
break;
}
- if (ret) {
- return true;
+ if (fakekey != GDK_VoidSymbol) {
+ ret = gtk_accel_groups_activate(G_OBJECT(win), fakekey, GdkModifierType(ev->state));
+
+ if (ret) {
+ return true;
+ }
+
+#ifdef GTKOSX
+ int oldval = ev->keyval;
+ ev->keyval = fakekey;
+ if (gdk_quartz_possibly_forward ((GdkEvent*) ev)) {
+ return true;
+ }
+ ev->keyval = oldval;
+#endif
}
}
return false;
}
+void
+set_pango_fontsize ()
+{
+ long val = ARDOUR::Config->get_font_scale();
+
+ /* FT2 rendering */
+
+ pango_ft2_font_map_set_resolution ((PangoFT2FontMap*) pango_ft2_font_map_for_display(), val/1024, val/1024);
+
+ /* Cairo rendering, in case there is any */
+
+ pango_cairo_font_map_set_resolution ((PangoCairoFontMap*) pango_cairo_font_map_get_default(), val/1024);
+}
+void
+reset_dpi ()
+{
+ long val = ARDOUR::Config->get_font_scale();
+ set_pango_fontsize ();
+ /* Xft rendering */
+ gtk_settings_set_long_property (gtk_settings_get_default(),
+ "gtk-xft-dpi", val, "ardour");
+ DPIReset();//Emit Signal
+}