2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-05 09:05:14 +00:00

Perform additional checks for gtk scaling factor

This commit is contained in:
Ilya Fedin
2021-01-28 05:36:20 +04:00
committed by John Preston
parent 834ee4eae7
commit 7c031a4fb6
2 changed files with 20 additions and 2 deletions

View File

@@ -328,6 +328,7 @@ void GtkIntegration::load() {
if (GtkLoaded) {
LOAD_GTK_SYMBOL(lib_gtk, "gdk_display_get_default", gdk_display_get_default);
LOAD_GTK_SYMBOL(lib_gtk, "gdk_display_get_monitor", gdk_display_get_monitor);
LOAD_GTK_SYMBOL(lib_gtk, "gdk_display_get_primary_monitor", gdk_display_get_primary_monitor);
LOAD_GTK_SYMBOL(lib_gtk, "gdk_monitor_get_scale_factor", gdk_monitor_get_scale_factor);
@@ -440,13 +441,29 @@ std::optional<QString> GtkIntegration::getStringSetting(
std::optional<int> GtkIntegration::scaleFactor() const {
if (!loaded()
|| (gdk_display_get_default == nullptr)
|| (gdk_display_get_monitor == nullptr)
|| (gdk_display_get_primary_monitor == nullptr)
|| (gdk_monitor_get_scale_factor == nullptr)) {
return std::nullopt;
}
return gdk_monitor_get_scale_factor(
gdk_display_get_primary_monitor(gdk_display_get_default()));
const auto display = gdk_display_get_default();
if (!display) {
return std::nullopt;
}
const auto monitor = [&] {
if (const auto primary = gdk_display_get_primary_monitor(display)) {
return primary;
}
return gdk_display_get_monitor(display, 0);
}();
if (!monitor) {
return std::nullopt;
}
return gdk_monitor_get_scale_factor(monitor);
}
bool GtkIntegration::fileDialogSupported() const {