|
Martin Stransky |
92ebef2 |
diff -up mozilla-release/widget/gtk/nsLookAndFeel.cpp.1144745-2 mozilla-release/widget/gtk/nsLookAndFeel.cpp
|
|
Martin Stransky |
92ebef2 |
--- mozilla-release/widget/gtk/nsLookAndFeel.cpp.1144745-2 2015-05-13 10:30:08.204367309 +0200
|
|
Martin Stransky |
92ebef2 |
+++ mozilla-release/widget/gtk/nsLookAndFeel.cpp 2015-05-13 10:30:08.208367321 +0200
|
|
Martin Stransky |
92ebef2 |
@@ -18,6 +18,7 @@
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
#include <fontconfig/fontconfig.h>
|
|
Martin Stransky |
92ebef2 |
#include "gfxPlatformGtk.h"
|
|
Martin Stransky |
92ebef2 |
+#include "nsScreenGtk.h"
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
#include "gtkdrawing.h"
|
|
Martin Stransky |
92ebef2 |
#include "nsStyleConsts.h"
|
|
Martin Stransky |
92ebef2 |
@@ -742,12 +743,7 @@ GetSystemFontInfo(GtkWidget *aWidget,
|
|
Martin Stransky |
92ebef2 |
// Scale fonts up on HiDPI displays.
|
|
Martin Stransky |
92ebef2 |
// This would be done automatically with cairo, but we manually manage
|
|
Martin Stransky |
92ebef2 |
// the display scale for platform consistency.
|
|
Martin Stransky |
92ebef2 |
- static auto sGdkScreenGetMonitorScaleFactorPtr = (gint (*)(GdkScreen*,gint))
|
|
Martin Stransky |
92ebef2 |
- dlsym(RTLD_DEFAULT, "gdk_screen_get_monitor_scale_factor");
|
|
Martin Stransky |
92ebef2 |
- if (sGdkScreenGetMonitorScaleFactorPtr) {
|
|
Martin Stransky |
92ebef2 |
- GdkScreen *screen = gdk_screen_get_default();
|
|
Martin Stransky |
92ebef2 |
- size *= (*sGdkScreenGetMonitorScaleFactorPtr)(screen, 0);
|
|
Martin Stransky |
92ebef2 |
- }
|
|
Martin Stransky |
92ebef2 |
+ size *= nsScreenGtk::GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
// |size| is now pixels
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
diff -up mozilla-release/widget/gtk/nsNativeThemeGTK.cpp.1144745-2 mozilla-release/widget/gtk/nsNativeThemeGTK.cpp
|
|
Martin Stransky |
92ebef2 |
--- mozilla-release/widget/gtk/nsNativeThemeGTK.cpp.1144745-2 2015-05-13 10:30:08.206367315 +0200
|
|
Martin Stransky |
92ebef2 |
+++ mozilla-release/widget/gtk/nsNativeThemeGTK.cpp 2015-05-13 10:30:46.966488584 +0200
|
|
Martin Stransky |
92ebef2 |
@@ -6,6 +6,7 @@
|
|
Martin Stransky |
92ebef2 |
#include "nsNativeThemeGTK.h"
|
|
Martin Stransky |
92ebef2 |
#include "nsThemeConstants.h"
|
|
Martin Stransky |
92ebef2 |
#include "gtkdrawing.h"
|
|
Martin Stransky |
92ebef2 |
+#include "nsScreenGtk.h"
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
#include "nsIObserverService.h"
|
|
Martin Stransky |
92ebef2 |
#include "nsIServiceManager.h"
|
|
Martin Stransky |
92ebef2 |
@@ -89,23 +90,6 @@ nsNativeThemeGTK::RefreshWidgetWindow(ns
|
|
Martin Stransky |
92ebef2 |
vm->InvalidateAllViews();
|
|
Martin Stransky |
92ebef2 |
}
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
-gint
|
|
Martin Stransky |
92ebef2 |
-nsNativeThemeGTK::GdkScaleFactor()
|
|
Martin Stransky |
92ebef2 |
-{
|
|
Martin Stransky |
92ebef2 |
-#if (MOZ_WIDGET_GTK >= 3)
|
|
Martin Stransky |
92ebef2 |
- // Since GDK 3.10
|
|
Martin Stransky |
92ebef2 |
- static auto sGdkScreenGetMonitorScaleFactorPtr = (gint (*)(GdkScreen*, gint))
|
|
Martin Stransky |
92ebef2 |
- dlsym(RTLD_DEFAULT, "gdk_screen_get_monitor_scale_factor");
|
|
Martin Stransky |
92ebef2 |
- if (sGdkScreenGetMonitorScaleFactorPtr) {
|
|
Martin Stransky |
92ebef2 |
- // FIXME: In the future, we'll want to fix this for GTK on Wayland which
|
|
Martin Stransky |
92ebef2 |
- // supports a variable scale factor per display.
|
|
Martin Stransky |
92ebef2 |
- GdkScreen *screen = gdk_screen_get_default();
|
|
Martin Stransky |
92ebef2 |
- return sGdkScreenGetMonitorScaleFactorPtr(screen, 0);
|
|
Martin Stransky |
92ebef2 |
- }
|
|
Martin Stransky |
92ebef2 |
-#endif
|
|
Martin Stransky |
92ebef2 |
- return 1;
|
|
Martin Stransky |
92ebef2 |
-}
|
|
Martin Stransky |
92ebef2 |
-
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
static bool IsFrameContentNodeInNamespace(nsIFrame *aFrame, uint32_t aNamespace)
|
|
Martin Stransky |
92ebef2 |
{
|
|
Martin Stransky |
92ebef2 |
@@ -796,10 +780,11 @@ nsNativeThemeGTK::GetExtraSizeForWidget(
|
|
Martin Stransky |
92ebef2 |
default:
|
|
Martin Stransky |
92ebef2 |
return false;
|
|
Martin Stransky |
92ebef2 |
}
|
|
Martin Stransky |
92ebef2 |
- aExtra->top *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
- aExtra->right *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
- aExtra->bottom *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
- aExtra->left *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ gint scale = nsScreenGtk::GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ aExtra->top *= scale;
|
|
Martin Stransky |
92ebef2 |
+ aExtra->right *= scale;
|
|
Martin Stransky |
92ebef2 |
+ aExtra->bottom *= scale;
|
|
Martin Stransky |
92ebef2 |
+ aExtra->left *= scale;
|
|
Martin Stransky |
92ebef2 |
return true;
|
|
Martin Stransky |
92ebef2 |
}
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
@@ -827,7 +812,7 @@ nsNativeThemeGTK::DrawWidgetBackground(n
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
gfxRect rect = presContext->AppUnitsToGfxUnits(aRect);
|
|
Martin Stransky |
92ebef2 |
gfxRect dirtyRect = presContext->AppUnitsToGfxUnits(aDirtyRect);
|
|
Martin Stransky |
92ebef2 |
- gint scaleFactor = GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ gint scaleFactor = nsScreenGtk::GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
// Align to device pixels where sensible
|
|
Martin Stransky |
92ebef2 |
// to provide crisper and faster drawing.
|
|
Martin Stransky |
92ebef2 |
@@ -1066,10 +1051,11 @@ nsNativeThemeGTK::GetWidgetPadding(nsDev
|
|
Martin Stransky |
92ebef2 |
aResult->left += horizontal_padding;
|
|
Martin Stransky |
92ebef2 |
aResult->right += horizontal_padding;
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
- aResult->top *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
- aResult->right *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
- aResult->bottom *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
- aResult->left *= GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ gint scale = nsScreenGtk::GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ aResult->top *= scale;
|
|
Martin Stransky |
92ebef2 |
+ aResult->right *= scale;
|
|
Martin Stransky |
92ebef2 |
+ aResult->bottom *= scale;
|
|
Martin Stransky |
92ebef2 |
+ aResult->left *= scale;
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
return true;
|
|
Martin Stransky |
92ebef2 |
}
|
|
Martin Stransky |
92ebef2 |
@@ -1332,7 +1318,7 @@ nsNativeThemeGTK::GetMinimumWidgetSize(n
|
|
Martin Stransky |
92ebef2 |
break;
|
|
Martin Stransky |
92ebef2 |
}
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
- *aResult = *aResult * GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ *aResult = *aResult * nsScreenGtk::GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
return NS_OK;
|
|
Martin Stransky |
92ebef2 |
}
|
|
Martin Stransky |
92ebef2 |
diff -up mozilla-release/widget/gtk/nsNativeThemeGTK.h.1144745-2 mozilla-release/widget/gtk/nsNativeThemeGTK.h
|
|
Martin Stransky |
92ebef2 |
--- mozilla-release/widget/gtk/nsNativeThemeGTK.h.1144745-2 2015-05-13 10:30:08.206367315 +0200
|
|
Martin Stransky |
92ebef2 |
+++ mozilla-release/widget/gtk/nsNativeThemeGTK.h 2015-05-13 10:30:08.209367325 +0200
|
|
Martin Stransky |
92ebef2 |
@@ -81,7 +81,6 @@ private:
|
|
Martin Stransky |
92ebef2 |
nsIntMargin* aExtra);
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
void RefreshWidgetWindow(nsIFrame* aFrame);
|
|
Martin Stransky |
92ebef2 |
- gint GdkScaleFactor();
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
uint8_t mDisabledWidgetTypes[32];
|
|
Martin Stransky |
92ebef2 |
uint8_t mSafeWidgetStates[1024]; // 256 widgets * 32 bits per widget
|
|
Martin Stransky |
92ebef2 |
diff -up mozilla-release/widget/gtk/nsScreenGtk.cpp.1144745-2 mozilla-release/widget/gtk/nsScreenGtk.cpp
|
|
Martin Stransky |
92ebef2 |
--- mozilla-release/widget/gtk/nsScreenGtk.cpp.1144745-2 2015-05-08 18:55:27.000000000 +0200
|
|
Martin Stransky |
92ebef2 |
+++ mozilla-release/widget/gtk/nsScreenGtk.cpp 2015-05-13 10:30:08.209367325 +0200
|
|
Martin Stransky |
92ebef2 |
@@ -63,6 +63,23 @@ nsScreenGtk :: GetAvailRect(int32_t *out
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
} // GetAvailRect
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
+gint
|
|
Martin Stransky |
92ebef2 |
+nsScreenGtk :: GetGtkMonitorScaleFactor()
|
|
Martin Stransky |
92ebef2 |
+{
|
|
Martin Stransky |
92ebef2 |
+#if (MOZ_WIDGET_GTK >= 3)
|
|
Martin Stransky |
92ebef2 |
+ // Since GDK 3.10
|
|
Martin Stransky |
92ebef2 |
+ static auto sGdkScreenGetMonitorScaleFactorPtr = (gint (*)(GdkScreen*, gint))
|
|
Martin Stransky |
92ebef2 |
+ dlsym(RTLD_DEFAULT, "gdk_screen_get_monitor_scale_factor");
|
|
Martin Stransky |
92ebef2 |
+ if (sGdkScreenGetMonitorScaleFactorPtr) {
|
|
Martin Stransky |
92ebef2 |
+ // FIXME: In the future, we'll want to fix this for GTK on Wayland which
|
|
Martin Stransky |
92ebef2 |
+ // supports a variable scale factor per display.
|
|
Martin Stransky |
92ebef2 |
+ GdkScreen *screen = gdk_screen_get_default();
|
|
Martin Stransky |
92ebef2 |
+ return sGdkScreenGetMonitorScaleFactorPtr(screen, 0);
|
|
Martin Stransky |
92ebef2 |
+ }
|
|
Martin Stransky |
92ebef2 |
+#endif
|
|
Martin Stransky |
92ebef2 |
+ return 1;
|
|
Martin Stransky |
92ebef2 |
+}
|
|
Martin Stransky |
92ebef2 |
+
|
|
Martin Stransky |
92ebef2 |
double
|
|
Martin Stransky |
92ebef2 |
nsScreenGtk :: GetDPIScale()
|
|
Martin Stransky |
92ebef2 |
{
|
|
Martin Stransky |
92ebef2 |
@@ -127,20 +144,9 @@ nsScreenGtk :: GetColorDepth(int32_t *aC
|
|
Martin Stransky |
92ebef2 |
void
|
|
Martin Stransky |
92ebef2 |
nsScreenGtk :: Init (GdkWindow *aRootWindow)
|
|
Martin Stransky |
92ebef2 |
{
|
|
Martin Stransky |
92ebef2 |
- gint width = gdk_screen_width();
|
|
Martin Stransky |
92ebef2 |
- gint height = gdk_screen_height();
|
|
Martin Stransky |
92ebef2 |
-
|
|
Martin Stransky |
92ebef2 |
- // Since GDK 3.10
|
|
Martin Stransky |
92ebef2 |
- static auto sGdkScreenGetMonitorScaleFactorPtr = (gint (*)(GdkScreen*, gint))
|
|
Martin Stransky |
92ebef2 |
- dlsym(RTLD_DEFAULT, "gdk_screen_get_monitor_scale_factor");
|
|
Martin Stransky |
92ebef2 |
- if (sGdkScreenGetMonitorScaleFactorPtr) {
|
|
Martin Stransky |
92ebef2 |
- // FIXME: In the future, we'll want to fix this for GTK on Wayland which
|
|
Martin Stransky |
92ebef2 |
- // supports a variable scale factor per display.
|
|
Martin Stransky |
92ebef2 |
- GdkScreen *screen = gdk_window_get_screen(aRootWindow);
|
|
Martin Stransky |
92ebef2 |
- gint scale = sGdkScreenGetMonitorScaleFactorPtr(screen, 0);
|
|
Martin Stransky |
92ebef2 |
- width *= scale;
|
|
Martin Stransky |
92ebef2 |
- height *= scale;
|
|
Martin Stransky |
92ebef2 |
- }
|
|
Martin Stransky |
92ebef2 |
+ gint scale = nsScreenGtk::GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ gint width = gdk_screen_width()*scale;
|
|
Martin Stransky |
92ebef2 |
+ gint height = gdk_screen_height()*scale;
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
// We listen for configure events on the root window to pick up
|
|
Martin Stransky |
92ebef2 |
// changes to this rect. We could listen for "size_changed" signals
|
|
Martin Stransky |
92ebef2 |
diff -up mozilla-release/widget/gtk/nsScreenGtk.h.1144745-2 mozilla-release/widget/gtk/nsScreenGtk.h
|
|
Martin Stransky |
92ebef2 |
--- mozilla-release/widget/gtk/nsScreenGtk.h.1144745-2 2015-05-08 18:55:27.000000000 +0200
|
|
Martin Stransky |
92ebef2 |
+++ mozilla-release/widget/gtk/nsScreenGtk.h 2015-05-13 10:30:08.209367325 +0200
|
|
Martin Stransky |
92ebef2 |
@@ -43,7 +43,8 @@ public:
|
|
Martin Stransky |
92ebef2 |
void Init(XineramaScreenInfo *aScreenInfo);
|
|
Martin Stransky |
92ebef2 |
#endif /* MOZ_X11 */
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
- static double GetDPIScale();
|
|
Martin Stransky |
92ebef2 |
+ static gint GetGtkMonitorScaleFactor();
|
|
Martin Stransky |
92ebef2 |
+ static double GetDPIScale();
|
|
Martin Stransky |
92ebef2 |
|
|
Martin Stransky |
92ebef2 |
private:
|
|
Martin Stransky |
92ebef2 |
uint32_t mScreenNum;
|