Changeset 224872 in webkit
- Timestamp:
- Nov 15, 2017 4:06:43 AM (6 years ago)
- Location:
- trunk/Source
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r224871 r224872 1 2017-11-15 Gabriel Ivascu <givascu@igalia.com> 2 3 [GTK] Automatically adjust font size when gtk-xft-dpi changes 4 https://bugs.webkit.org/show_bug.cgi?id=142673 5 6 Some follow-up fixes for the previous patch. 7 8 Reviewed by Carlos Garcia Campos. 9 10 * platform/PlatformScreen.h: 11 * platform/gtk/PlatformScreenGtk.cpp: 12 (WebCore::screenDPIObserverHandlersMap): 13 (WebCore::gtkXftDPIChangedCallback): 14 (WebCore::setScreenDPIObserverHandler): 15 * platform/wpe/PlatformScreenWPE.cpp: 16 (WebCore::setScreenDPIObserverHandler): 17 1 18 2017-11-14 Nan Wang <n_wang@apple.com> 2 19 -
trunk/Source/WebCore/platform/PlatformScreen.h
r224776 r224872 65 65 #if USE(GLIB) 66 66 double screenDPI(); 67 void setScreenDPIObserverHandler(Function<void()>&& );67 void setScreenDPIObserverHandler(Function<void()>&&, void*); 68 68 #endif 69 69 -
trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp
r224776 r224872 41 41 #include <cmath> 42 42 #include <gtk/gtk.h> 43 #include <wtf/Optional.h> 43 #include <wtf/HashMap.h> 44 #include <wtf/NeverDestroyed.h> 44 45 45 46 namespace WebCore { … … 114 115 } 115 116 116 static std::optional<Function<void()>> screenDPIObserverHandler; 117 static WTF::HashMap<void*, Function<void()>>& screenDPIObserverHandlersMap() 118 { 119 static WTF::NeverDestroyed<WTF::HashMap<void*, Function<void()>>> handlersMap; 120 return handlersMap; 121 } 117 122 118 123 static void gtkXftDPIChangedCallback() 119 124 { 120 if (screenDPIObserverHandler)121 (*screenDPIObserverHandler)();125 for (const auto& keyValuePair : screenDPIObserverHandlersMap()) 126 keyValuePair.value(); 122 127 } 123 128 124 void setScreenDPIObserverHandler(Function<void()>&& handler )129 void setScreenDPIObserverHandler(Function<void()>&& handler, void* context) 125 130 { 126 131 static GtkSettings* gtkSettings = gtk_settings_get_default(); 127 132 static unsigned long gtkXftDpiChangedHandlerID = 0; 128 133 129 if (!handler) { 130 if (gtkSettings && gtkXftDpiChangedHandlerID) { 131 g_signal_handler_disconnect(gtkSettings, gtkXftDpiChangedHandlerID); 132 gtkXftDpiChangedHandlerID = 0; 133 } 134 if (!gtkSettings) 134 135 return; 136 137 if (handler) 138 screenDPIObserverHandlersMap().set(context, WTFMove(handler)); 139 else 140 screenDPIObserverHandlersMap().remove(context); 141 142 if (!screenDPIObserverHandlersMap().isEmpty()) { 143 if (!gtkXftDpiChangedHandlerID) 144 gtkXftDpiChangedHandlerID = g_signal_connect(gtkSettings, "notify::gtk-xft-dpi", G_CALLBACK(gtkXftDPIChangedCallback), nullptr); 145 } else if (gtkXftDpiChangedHandlerID) { 146 g_signal_handler_disconnect(gtkSettings, gtkXftDpiChangedHandlerID); 147 gtkXftDpiChangedHandlerID = 0; 135 148 } 136 137 screenDPIObserverHandler = WTFMove(handler);138 if (gtkSettings && !gtkXftDpiChangedHandlerID)139 gtkXftDpiChangedHandlerID = g_signal_connect(gtkSettings, "notify::gtk-xft-dpi", G_CALLBACK(gtkXftDPIChangedCallback), nullptr);140 149 } 141 150 -
trunk/Source/WebCore/platform/wpe/PlatformScreenWPE.cpp
r224776 r224872 61 61 } 62 62 63 void setScreenDPIObserverHandler(Function<void()>&& )63 void setScreenDPIObserverHandler(Function<void()>&&, void*) 64 64 { 65 65 notImplemented(); -
trunk/Source/WebKit/ChangeLog
r224871 r224872 1 2017-11-15 Gabriel Ivascu <givascu@igalia.com> 2 3 [GTK] Automatically adjust font size when gtk-xft-dpi changes 4 https://bugs.webkit.org/show_bug.cgi?id=142673 5 6 Some follow-up fixes for the previous patch. 7 8 Reviewed by Carlos Garcia Campos. 9 10 * UIProcess/API/glib/WebKitSettings.cpp: 11 (webKitSettingsDispose): 12 (webKitSettingsConstructed): 13 1 14 2017-11-14 Nan Wang <n_wang@apple.com> 2 15 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp
r224776 r224872 162 162 static void webKitSettingsDispose(GObject* object) 163 163 { 164 WebCore::setScreenDPIObserverHandler(nullptr );164 WebCore::setScreenDPIObserverHandler(nullptr, object); 165 165 G_OBJECT_CLASS(webkit_settings_parent_class)->dispose(object); 166 166 } … … 181 181 182 182 auto scalingFactor = newScreenDpi / settings->priv->screenDpi; 183 auto prevFontSize = settings->priv->preferences->defaultFontSize(); 184 auto prevMonospaceFontSize = settings->priv->preferences->defaultFixedFontSize(); 185 186 settings->priv->preferences->setDefaultFontSize(std::round(prevFontSize * scalingFactor)); 187 g_object_notify(G_OBJECT(settings), "default-font-size"); 188 189 settings->priv->preferences->setDefaultFixedFontSize(std::round(prevMonospaceFontSize * scalingFactor)); 190 g_object_notify(G_OBJECT(settings), "default-monospace-font-size"); 191 183 auto fontSize = settings->priv->preferences->defaultFontSize(); 184 auto monospaceFontSize = settings->priv->preferences->defaultFixedFontSize(); 192 185 settings->priv->screenDpi = newScreenDpi; 193 }); 186 187 g_object_freeze_notify(G_OBJECT(settings)); 188 webkit_settings_set_default_font_size(settings, std::round(fontSize * scalingFactor)); 189 webkit_settings_set_default_monospace_font_size(settings, std::round(monospaceFontSize * scalingFactor)); 190 g_object_thaw_notify(G_OBJECT(settings)); 191 }, object); 194 192 } 195 193
Note: See TracChangeset
for help on using the changeset viewer.