summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2013-09-17 21:22:15 +0200
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2013-09-17 21:22:15 +0200
commitd74734b1b4c3dfbdd39caa80e67e8c789e900cc3 (patch)
treefb5999e3735ff715c7d20d875c78de28dd191408
parent146d976dec3ce9de80ed311da80c4aa1d9dfa70a (diff)
gtkui: disable tabstrip antialiasing on ldpi macs
-rw-r--r--configure.ac1
-rw-r--r--plugins/gtkui/Makefile.am4
-rw-r--r--plugins/gtkui/ddbtabstrip.c2
-rw-r--r--plugins/gtkui/gtkui.c9
-rw-r--r--plugins/gtkui/gtkui.h1
-rw-r--r--plugins/gtkui/retina.h7
-rw-r--r--plugins/gtkui/retina.m11
7 files changed, 33 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 591b3073..d9ab23d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11,6 +11,7 @@ AC_USE_SYSTEM_EXTENSIONS
LT_INIT
AC_PROG_CC
AC_PROG_CXX
+AC_PROG_OBJC
AC_STDC_HEADERS
AC_PROG_INSTALL
dnl AC_PROG_LIBTOOL
diff --git a/plugins/gtkui/Makefile.am b/plugins/gtkui/Makefile.am
index b8def462..e5e9b70f 100644
--- a/plugins/gtkui/Makefile.am
+++ b/plugins/gtkui/Makefile.am
@@ -98,6 +98,8 @@ endif
if HAVE_GTK3
if OS_OSX
+AM_CPPFLAGS = $(CXXFLAGS) $(GTK3_DEPS_CFLAGS)
+GTK3_OSX_SOURCES = retina.m
GTKGLEXT_SOURCES =
else
GTKGLEXT_LIBS = -lGL
@@ -157,7 +159,7 @@ endif
GTKGLEXT_CFLAGS = -I@top_srcdir@/plugins/gtkui/gtkglext-gtk3 -I@top_srcdir@/plugins/gtkui/gtkglext-gtk3/gdk -DGTK_GL_COMPILATION -DGDK_GL_COMPILATION
-ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES) $(GTKGLEXT_SOURCES)
+ddb_gui_GTK3_la_SOURCES = $(GTKUI_SOURCES) $(GTKGLEXT_SOURCES) $(GTK3_OSX_SOURCES)
ddb_gui_GTK3_la_LDFLAGS = -module
if STATICLINK
diff --git a/plugins/gtkui/ddbtabstrip.c b/plugins/gtkui/ddbtabstrip.c
index c9827eda..f89c7eda 100644
--- a/plugins/gtkui/ddbtabstrip.c
+++ b/plugins/gtkui/ddbtabstrip.c
@@ -596,7 +596,7 @@ tabstrip_render (DdbTabStrip *ts, cairo_t *cr) {
tabstrip_adjust_hscroll (ts);
cairo_set_line_width (cr, 1);
#ifdef __APPLE__
- cairo_set_antialias (cr, CAIRO_ANTIALIAS_GRAY);
+ cairo_set_antialias (cr, gtkui_is_retina ? CAIRO_ANTIALIAS_GRAY : CAIRO_ANTIALIAS_NONE);
#else
cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
#endif
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c
index 2804e91c..894e1f85 100644
--- a/plugins/gtkui/gtkui.c
+++ b/plugins/gtkui/gtkui.c
@@ -56,6 +56,8 @@
#include "widgets.h"
#ifndef __APPLE__
#include "X11/Xlib.h"
+#else
+#include "retina.h"
#endif
#undef EGG_SM_CLIENT_BACKEND_XSMP
#ifdef EGG_SM_CLIENT_BACKEND_XSMP
@@ -91,6 +93,10 @@ void (*gtkui_original_pl_add_files_end) (void);
// cached config variable
int gtkui_embolden_current_track;
+#ifdef __APPLE__
+int gtkui_is_retina = 0;
+#endif
+
#define TRAY_ICON "deadbeef_tray_icon"
// that must be called before gtk_init
@@ -1151,6 +1157,9 @@ gtkui_thread (void *ctx) {
gtkui_connect_cb (NULL);
deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0);
+#ifdef __APPLE__
+ gtkui_is_retina = is_retina (mainwin);
+#endif
gtk_main ();
w_free ();
diff --git a/plugins/gtkui/gtkui.h b/plugins/gtkui/gtkui.h
index 3867cc19..c4b59e07 100644
--- a/plugins/gtkui/gtkui.h
+++ b/plugins/gtkui/gtkui.h
@@ -35,6 +35,7 @@ extern DB_functions_t *deadbeef;
extern GtkWidget *mainwin;
extern GtkWidget *searchwin;
extern int gtkui_embolden_current_track;
+extern int gtkui_is_retina;
struct _GSList;
diff --git a/plugins/gtkui/retina.h b/plugins/gtkui/retina.h
new file mode 100644
index 00000000..9d0f8ddb
--- /dev/null
+++ b/plugins/gtkui/retina.h
@@ -0,0 +1,7 @@
+#ifndef __RETINA_H
+#define __RETINA_H
+
+int
+is_retina (GtkWidget *w);
+
+#endif
diff --git a/plugins/gtkui/retina.m b/plugins/gtkui/retina.m
new file mode 100644
index 00000000..320bfdc1
--- /dev/null
+++ b/plugins/gtkui/retina.m
@@ -0,0 +1,11 @@
+#include <Cocoa/Cocoa.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkquartz.h>
+#include "retina.h"
+
+int
+is_retina (GtkWidget *w) {
+ NSWindow *window = gdk_quartz_window_get_nswindow (gtk_widget_get_window (w));
+ float s = [window backingScaleFactor];
+ return s > 1.0f;
+}