unity picks poor hidpi scale factor defaults
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
unity (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
The recently set-hidpi-
This works well on a 15" Full HD or 4K screen, but sets a non-integer scale factor on 14" and 17" Full HD or 4K screens. Most toolkits don't support non-integer scaling factors very well, and even if they did, it would still result in a loss of sharpness.
The displays mentioned above are perfectly usable at the nearest integer scaling factor, and windows render much more cleanly when set to 1x or 2x than 1.125x or 1.875x. The +-1/8 scale difference in size compared to 1x or 2x isn't worth breaking pixel perfect widget rendering. It would be a good idea to try to default to integer scaling factors whenever reasonable. Otherwise most people will have mangled widgets unless they spend the time to set the scale factor themselves.
Here's the relevant merge: https:/
[Test Case]
1. Open "System Settings..."
2. Open Display Panel
3. Scale monitor to "1.75"
4. gsettings get org.gnome.
5. The above commands returns 2
[Potential Regression]
None
Related branches
- Marco Trevisan (Treviño): Approve
- David Jordan (community): Approve
-
Diff: 21 lines (+2/-2)1 file modifiedunity-shared/UnitySettings.cpp (+2/-2)
- Andrea Azzarone (community): Approve
-
Diff: 12627 lines (+4713/-1916)190 files modifiedAUTHORS (+2/-0)
CMakeLists.txt (+9/-98)
ChangeLog (+663/-0)
UnityCore/CMakeLists.txt (+2/-1)
UnityCore/DBusIndicators.cpp (+1/-1)
UnityCore/GLibDBusProxy.cpp (+12/-8)
UnityCore/GLibDBusProxy.h (+2/-2)
UnityCore/GLibSignal-inl.h (+10/-2)
UnityCore/GLibSignal.cpp (+75/-29)
UnityCore/GLibSignal.h (+16/-11)
UnityCore/GnomeSessionManager.cpp (+127/-39)
UnityCore/GnomeSessionManager.h (+1/-0)
UnityCore/GnomeSessionManagerImpl.h (+4/-0)
UnityCore/SessionManager.h (+1/-0)
UnityCore/Variant.cpp (+30/-0)
UnityCore/Variant.h (+1/-0)
config.h.cmake (+3/-2)
dash/ResultRendererTile.cpp (+1/-1)
data/CMakeLists.txt (+37/-1)
data/com.canonical.Unity.gschema.xml (+5/-0)
data/unity7.conf.in (+2/-19)
debian/changelog (+78/-0)
debian/control (+2/-1)
debian/rules (+3/-0)
debian/unity.install (+3/-0)
debian/unity.migrations (+1/-0)
decorations/DecoratedWindow.cpp (+2/-9)
decorations/DecorationsForceQuitDialog.cpp (+4/-2)
decorations/DecorationsMenuLayout.cpp (+35/-37)
decorations/DecorationsMenuLayout.h (+3/-2)
decorations/DecorationsPriv.h (+0/-1)
decorations/DecorationsWindowButton.cpp (+2/-1)
launcher/EdgeBarrierController.cpp (+32/-117)
launcher/EdgeBarrierControllerPrivate.h (+1/-6)
launcher/FileManagerLauncherIcon.cpp (+30/-0)
launcher/FileManagerLauncherIcon.h (+8/-0)
launcher/Launcher.cpp (+36/-32)
launcher/Launcher.h (+1/-0)
launcher/LauncherOptions.cpp (+22/-22)
launcher/StorageLauncherIcon.cpp (+7/-12)
launcher/Tooltip.cpp (+6/-6)
launcher/Tooltip.h (+1/-2)
lockscreen/BackgroundSettings.cpp (+18/-13)
lockscreen/KylinLockScreenShield.cpp (+1/-19)
lockscreen/KylinLockScreenShield.h (+0/-3)
lockscreen/KylinUserPromptView.cpp (+15/-15)
lockscreen/KylinUserPromptView.h (+2/-3)
lockscreen/LockScreenAbstractPromptView.h (+5/-3)
lockscreen/LockScreenBaseShield.cpp (+14/-7)
lockscreen/LockScreenBaseShield.h (+4/-6)
lockscreen/LockScreenController.cpp (+91/-38)
lockscreen/LockScreenController.h (+12/-2)
lockscreen/LockScreenPanel.cpp (+26/-57)
lockscreen/LockScreenPanel.h (+5/-9)
lockscreen/LockScreenPromptFactory.cpp (+4/-3)
lockscreen/LockScreenPromptFactory.h (+3/-1)
lockscreen/LockScreenShield.cpp (+8/-17)
lockscreen/LockScreenShield.h (+4/-3)
lockscreen/LockScreenShieldFactory.cpp (+2/-2)
lockscreen/LockScreenShieldFactory.h (+3/-3)
lockscreen/SuspendInhibitorManager.cpp (+2/-0)
lockscreen/SuspendInhibitorManager.h (+1/-0)
lockscreen/UserAuthenticator.h (+2/-0)
lockscreen/UserAuthenticatorPam.cpp (+41/-33)
lockscreen/UserAuthenticatorPam.h (+9/-8)
lockscreen/UserPromptView.cpp (+51/-15)
lockscreen/UserPromptView.h (+7/-4)
panel/PanelController.cpp (+1/-2)
panel/PanelIndicatorEntryView.cpp (+10/-0)
panel/PanelMenuView.cpp (+1/-7)
panel/PanelMenuView.h (+0/-2)
panel/PanelView.cpp (+14/-121)
panel/PanelView.h (+4/-12)
plugins/unityshell/src/unityshell.cpp (+117/-95)
plugins/unityshell/src/unityshell.h (+9/-2)
plugins/unityshell/unityshell.xml.in (+0/-6)
services/CMakeLists.txt (+1/-1)
services/panel-main.c (+36/-0)
services/panel-service.c (+86/-10)
services/panel-service.h (+2/-0)
services/unity-panel-service-lockscreen.conf.in (+3/-1)
services/unity-panel-service-lockscreen.service.in (+7/-0)
services/unity-panel-service.conf.in (+3/-1)
shutdown/StandaloneSession.cpp (+1/-0)
tests/CMakeLists.txt (+473/-292)
tests/MockCategories.h (+24/-14)
tests/MockResults.h (+32/-7)
tests/autopilot/unity/tests/test_dash.py (+4/-4)
tests/data/external.gschema.xml (+7/-1)
tests/test-gestures/CMakeLists.txt (+5/-3)
tests/test-gestures/test_gesture_broker.cpp (+3/-3)
tests/test_action_handle.cpp (+12/-12)
tests/test_animation_utils.cpp (+4/-4)
tests/test_application_launcher_icon.cpp (+4/-4)
tests/test_bamf_application.cpp (+28/-3)
tests/test_categories.cpp (+3/-3)
tests/test_connection_manager.cpp (+10/-10)
tests/test_dashview.cpp (+1/-1)
tests/test_dashview_impl.cpp (+3/-3)
tests/test_dbus_indicators.cpp (+4/-4)
tests/test_decorations_input_mixer.cpp (+7/-7)
tests/test_decorations_widgets.cpp (+5/-5)
tests/test_delta_tracker.cpp (+6/-6)
tests/test_desktop_launcher_icon.cpp (+1/-1)
tests/test_device_launcher_section.cpp (+1/-1)
tests/test_edge_barrier_controller.cpp (+2/-0)
tests/test_favorite_store_gsettings.cpp (+5/-5)
tests/test_favorite_store_private.cpp (+4/-4)
tests/test_file_manager_launcher_icon.cpp (+202/-0)
tests/test_filter_widgets.cpp (+1/-1)
tests/test_glib_dbus_object.cpp (+2/-2)
tests/test_glib_dbus_server.cpp (+17/-17)
tests/test_glib_object.cpp (+10/-10)
tests/test_glib_signals.cpp (+201/-63)
tests/test_glib_source.cpp (+45/-45)
tests/test_glib_variant.cpp (+9/-9)
tests/test_gnome_session_manager.cpp (+10/-3)
tests/test_grabhandle.cpp (+2/-2)
tests/test_gsettings_scopes.cpp (+32/-32)
tests/test_hud_button.cpp (+2/-2)
tests/test_hud_private.cpp (+6/-6)
tests/test_hud_view.cpp (+1/-1)
tests/test_icon_loader.cpp (+32/-32)
tests/test_indicator.cpp (+6/-6)
tests/test_indicator_appmenu.cpp (+3/-3)
tests/test_indicator_entry.cpp (+3/-3)
tests/test_indicators.cpp (+11/-11)
tests/test_introspection_data.cpp (+40/-40)
tests/test_keyboard_util.cpp (+8/-0)
tests/test_launcher_controller.cpp (+14/-11)
tests/test_launcher_model.cpp (+6/-6)
tests/test_layout_system.cpp (+9/-9)
tests/test_lockscreen_controller.cpp (+9/-7)
tests/test_mock_session_manager.h (+1/-0)
tests/test_panel_controller.cpp (+5/-3)
tests/test_panel_indicator_entry_dropdown_view.cpp (+10/-10)
tests/test_panel_view.cpp (+2/-0)
tests/test_pointer_barrier.cpp (+2/-2)
tests/test_previews.cpp (+2/-2)
tests/test_previews_application.cpp (+2/-2)
tests/test_previews_generic.cpp (+1/-1)
tests/test_previews_movie.cpp (+1/-1)
tests/test_previews_music.cpp (+1/-1)
tests/test_previews_music_payment.cpp (+1/-1)
tests/test_previews_payment.cpp (+1/-0)
tests/test_previews_social.cpp (+1/-1)
tests/test_quicklist_view.cpp (+1/-1)
tests/test_results.cpp (+10/-10)
tests/test_scope.cpp (+6/-6)
tests/test_scope_view.cpp (+12/-12)
tests/test_session_view.cpp (+4/-4)
tests/test_shortcut_model.cpp (+4/-4)
tests/test_shortcut_view.cpp (+3/-3)
tests/test_showdesktop_handler.cpp (+13/-5)
tests/test_switcher_controller_slow.cpp (+5/-5)
tests/test_tabiterator.cpp (+0/-6)
tests/test_texture_cache.cpp (+2/-2)
tests/test_thumbnail_generator.cpp (+5/-5)
tests/test_trash_launcher_icon.cpp (+6/-6)
tests/test_ubus.cpp (+6/-6)
tests/test_unity_window_style.cpp (+3/-3)
tests/test_volume_launcher_icon.cpp (+4/-4)
tools/CMakeLists.txt (+13/-3)
tools/compiz-profile-selector.in (+49/-0)
tools/compiz_config_profile_setter.c (+228/-0)
tools/migration-scripts/06_unity_set_lowgfx_mode_settings_v1 (+95/-0)
tools/unity.cmake (+23/-7)
tools/upstart-prestart-check (+17/-0)
unity-shared/BGHash.cpp (+22/-59)
unity-shared/BGHash.h (+3/-4)
unity-shared/BackgroundEffectHelper.cpp (+3/-4)
unity-shared/CMakeLists.txt (+1/-0)
unity-shared/DashStyle.cpp (+2/-2)
unity-shared/GnomeFileManager.cpp (+4/-2)
unity-shared/InputMonitor.cpp (+423/-0)
unity-shared/InputMonitor.h (+67/-0)
unity-shared/MenuManager.cpp (+157/-1)
unity-shared/MenuManager.h (+4/-0)
unity-shared/SigcSlotHash.h (+70/-0)
unity-shared/StandaloneWindowManager.cpp (+3/-0)
unity-shared/StandaloneWindowManager.h (+1/-0)
unity-shared/ThumbnailGenerator.cpp (+1/-1)
unity-shared/UScreen.cpp (+9/-0)
unity-shared/UScreen.h (+2/-0)
unity-shared/UnitySettings.cpp (+147/-14)
unity-shared/UnitySettings.h (+1/-1)
unity-shared/UpstartWrapper.cpp (+11/-6)
unity-shared/WindowManager.h (+1/-0)
unity-shared/XWindowManager.cpp (+6/-0)
unity-shared/XWindowManager.h (+1/-0)
Changed in unity (Ubuntu): | |
status: | New → In Progress |
description: | updated |
tags: |
added: verification-done-xenial removed: verification-needed-xenial |
Would you like to provide some idea about when it's reasonable to use integer only scaling, when it's not?