diff -Nru unity-7.2.4+14.04.20150316/AUTHORS unity-7.2.5+14.04.20150521.1/AUTHORS --- unity-7.2.4+14.04.20150316/AUTHORS 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/AUTHORS 2015-05-21 11:05:56.000000000 -0400 @@ -186,6 +186,7 @@ smspillaz , Sam Spilsbury Stephen M. Webb Stephen M. Webb , Andrew McCarthy + Stephen M. Webb , Marco Trevisan (Treviño) Stephen M. Webb , Marco Trevisan (Treviño) , Andrea Azzarone Steve Langasek Sven Baars diff -Nru unity-7.2.4+14.04.20150316/ChangeLog unity-7.2.5+14.04.20150521.1/ChangeLog --- unity-7.2.4+14.04.20150316/ChangeLog 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/ChangeLog 2015-05-21 11:05:56.000000000 -0400 @@ -1,3 +1,345 @@ +2015-03-16 CI Train Bot + + Releasing 7.2.4+14.04.20150316-0ubuntu1 + +2015-03-16 Marco Trevisan (Treviño) + + MenuManager: make sure menus are always shown when mouse is over them or when the always-show-menus option is on Fixes: #955193, #1312137, #1374942, #1390562 + Approved by: Christopher Townsend + +2015-03-11 Marco Trevisan (Treviño) + + MenuManager: make sure menus are always shown when mouse is over them or when the always-show-menus option is on + +2015-03-16 Andrea Azzarone + + Ungrab the shoutdown dialog as soon as possible. Fixes: #1398287 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Ungrab the shoutdown dialog as soon as possible. + +2015-03-16 Andrea Azzarone + + Use COMPIZ_METAKEY where needed. Fixes: #1363534 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Use COMPIZ_METAKEY where needed. + +2015-03-16 Andrea Azzarone + + skipped the animation of BGHash on startup to prevent unwanted fade-in Fixes: #1241757 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + skipped the animation of BGHash on startup to prevent unwanted fade-in + +2015-03-16 Luke Yelavich + + extended accessible exploration of the Dash dynamic content + Fixes: #1066157 + Approved by: Christopher Townsend + +2015-03-11 Luke Yelavich + + Explore Dash children when a view or layout is added. + +2015-03-11 Luke Yelavich + + Move the unity a11y present environment call later in the init sequence + +2015-03-11 Luke Yelavich + + set focus to FALSE on window deactivation + +2015-03-16 Andrea Azzarone + + enable Dash, Hud, and session dialogs over full screen window Fixes: #860970, #1159249, #1404486, #1413773 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Make sure dragged icons are not rendered behind the dash. + +2015-03-11 Andrea Azzarone + + Show session dialog over fullscreen windows. + +2015-03-11 Andrea Azzarone + + Enable dash and hud if there is a fullscreen window. + +2015-03-16 Andrea Azzarone + + disabled markup for VolumeLauncherIcon quicklist menu items Fixes: #1413411 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Disable markup accel for VolumeLauncherIcon quicklist menu items. + +2015-03-16 Andrea Azzarone + + made unity unlockable if user is in nopsswdlogin group Fixes: #1413790 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Make Unity lockscreen unlockable if user is in nopsswdlogin group. + +2015-03-16 Andrea Azzarone + + disabled Pointer Barriers during lockscreen Fixes: #1401911 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Disable Pointer Barriers during lockscreen. + +2015-03-16 Andrea Azzarone + + Avoid running potentially dangerous code paths when the screen is locked. Fixes: #1410582 + Approved by: Christopher Townsend + +2015-03-11 Andrea Azzarone + + Avoid running pontentially dangerous code paths when the screen is locked. + +2015-03-16 Marco Trevisan (Treviño) + + PanelService: use gdbus to notfy upstart of service start/stop Fixes: #1302955 + Approved by: Christopher Townsend + +2015-03-11 Marco Trevisan (Treviño) + + PanelService: use gdbus to notfy upstart of service start/stop + +2014-12-17 CI Train Bot + + Releasing 7.2.4+14.04.20141217-0ubuntu1 + +2014-12-17 Stephen M. Webb + + release 7.2.4 Fixes: #796527, #1059275, #1066971, #1237132, #1276177, #1292218, #1299741, #1301776, #1302885, #1305440, #1308540, #1316265, #1324104, #1328677, #1329584, #1332509, #1332947, #1349281, #1350331, #1353070, #1354498, #1361679, #1361713, #1361751, #1362162, #1362346, #1364225, #1368427, #1370017, #1371764, #1373695, #1374785, #1375271, #1383468, #1384910, #1384958, #1385285 + Approved by: Marco Trevisan (Treviño) + +2014-12-17 Marco Trevisan (Treviño) + + DesktopUtilities: remove leftover debug statement + +2014-12-16 Stephen M. Webb + + bumped package version to match upstream + +2014-12-16 Stephen M. Webb + + fixup for bug introduced in r3809 + +2014-12-16 Stephen M. Webb + + added decorations to windows in non-focused workspaces (lp: #1383468) + +2014-12-16 Stephen M. Webb + + unmapped all windows prior to shutdown (lp: #1370017) (lp: #1375271) + +2014-12-15 Stephen M. Webb + + Make sure GetScreenGeometry returns the correct value (lp: #1374785). + +2014-12-09 Stephen M. Webb + + Make sure GetScreenGeometry returns the correct value (lp: #1374785). + +2014-12-15 Stephen M. Webb + + LockScreenController: wait for the primary shield to get the grab + before setting the session locked (lp: #1368427) (lp: #1371764). + +2014-12-09 Stephen M. Webb + + LockScreenController: wait for the primary shield to get the grab + before setting the session locked (lp: #1368427) (lp: #1371764). + +2014-12-15 Stephen M. Webb + + SwitcherView: set progress on icon render args (lp: #1361679). + +2014-12-09 Stephen M. Webb + + SwitcherView: set progress on icon render args (lp: #1361679). + +2014-12-15 Stephen M. Webb + + ApplicationLauncherIcon: make sure we close the dash if DnD is accepted + and the application window is about to be focused (lp: #1350331). + +2014-12-09 Stephen M. Webb + + ApplicationLauncherIcon: make sure we close the dash if DnD is accepted + and the application window is about to be focused (lp: #1350331). + +2014-12-15 Stephen M. Webb + + LayoutSystem: make sure the exposed open windows are displayed in the + preserved order (lp: #1349281). + +2014-12-09 Stephen M. Webb + + LayoutSystem: make sure the exposed open windows are displayed in the + preserved order (lp: #1349281). + +2014-12-15 Stephen M. Webb + + SearchBar, ActionButtons, IconRenderer: include the font scaling when + scaling textual items (lp: #1332947) (lp: #1361751) (lp: #1362162) + (lp: #1362346). + +2014-12-09 Stephen M. Webb + + SearchBar, ActionButtons, IconRenderer: include the font scaling when + scaling textual items (lp: #1332947) (lp: #1361751) (lp: #1362162) + (lp: #1362346). + +2014-12-15 Stephen M. Webb + + add an arrow activator in the lockscreen + +2014-12-09 Stephen M. Webb + + Add an arrow activator in the lockscreen. (lp: #1332509) + +2014-12-15 Stephen M. Webb + + added support for getting the distro name from /etc/os-release + (lp: #1329584) + +2014-12-08 Stephen M. Webb + + added support for getting the distro name from /etc/os-release + (lp: #1329584) + +2014-12-15 Stephen M. Webb + + Use CONFIG instead of CACHE to store the first_run.stamp (lp: #1328677) + +2014-12-08 Stephen M. Webb + + Use CONFIG instead of CACHE to store the first_run.stamp (lp: #1328677) + +2014-12-15 Stephen M. Webb + + * UnityScreen: when filtering out windows in spread, make sure we unscale + them (lp: #1316265). + * PanelMenuView: ensure that proper window tiles and buttons are shown at + the right place (lp: #1384910) (lp: #1384958) (lp: #1385285) + +2014-12-09 Stephen M. Webb + + PanelMenuView: ensure that proper window tiles and buttons are shown at + the right place (lp: #1384910) (lp: #1384958) (lp: #1385285) + +2014-12-08 Stephen M. Webb + + UnityScreen: when filtering out windows in spread, make sure we unscale + them (lp: #1316265). + +2014-12-15 Stephen M. Webb + + Allow a distinct pam config file for greeter and for lock-screen. + (lp: #1305440) + +2014-12-08 Stephen M. Webb + + Allow a distinct pam config file for greeter and for lock-screen. + (lp: #1305440) + +2014-12-15 Stephen M. Webb + + when grabbing keys, try prefixing "XF86" if the key is not found + +2014-12-11 Stephen M. Webb + + debian/changelog: fixed formatting + +2014-12-08 Stephen M. Webb + + When grabbing keys, try prefixing "XF86" if the key isn't found. GNOME + gives us unprefixed keys sometimes (lp: #1302885). + +2014-12-15 Stephen M. Webb + + * Share lockscreen password between screens (lp: #1308540) + * Lockscreen: scale the UI elements based on current monitor scaling + (lp: #1292218) + +2014-12-08 Stephen M. Webb + + Lockscreen: scale the UI elements based on current monitor scaling + (lp: #1292218) + +2014-12-08 Stephen M. Webb + + Share lockscreen password between screens (lp: #1308540) + +2014-12-15 Stephen M. Webb + + DecoratedWindow: make edges independent from borders and properly update + them on actions change (lp: #1276177), (lp: #1299741), (lp: #1301776), + (lp: #1324104), (lp: #1364225), (lp: #1373695) + +2014-12-08 Stephen M. Webb + + DecoratedWindow: make edges independent from borders and properly update + them on actions change (lp: #1276177), (lp: #1299741), (lp: #1301776), + (lp: #1324104), (lp: #1364225), (lp: #1373695) + +2014-12-15 Stephen M. Webb + + fix tooltip for the "Show Desktop / Restore Windows" icon in the Alt-Tab + switcher (lp: #1237132) + +2014-12-15 Stephen M. Webb + + fix tooltip for the "Show Desktop / Restore Windows" icon in the Alt-Tab + switcher (lp: #1237132) + +2014-12-15 Stephen M. Webb + + make the Launcher icon count badge width depend on the text value width + and scaling (lp: #1353070) (lp: #1354498) (lp: #796527) (lp: #1066971) + (lp: #1361713) + +2014-12-11 Stephen M. Webb + + make the Launcher icon count badge width depend on the text value width + and scaling (lp: #1353070) (lp: #1354498) (lp: #796527) (lp: #1066971) + (lp: #1361713) + +2014-12-08 Marco Trevisan (Treviño) + + cherry-picked r3862 from trunk + +2014-12-08 Marco Trevisan (Treviño) + + cherry-picked r3861 from trunk + +2014-12-15 Stephen M. Webb + + updated the unity(1) manpage to match the actual command (lp: #1059275) + +2014-12-08 Stephen M. Webb + + updated the unity(1) manpage to match the actual command (lp: #1059275) + +2014-10-29 Marco Trevisan (Treviño) + + Preparing for unity 7.2.4 + 2014-08-26 CI bot Releasing 7.2.3+14.04.20140826-0ubuntu1 diff -Nru unity-7.2.4+14.04.20150316/CMakeLists.txt unity-7.2.5+14.04.20150521.1/CMakeLists.txt --- unity-7.2.4+14.04.20150316/CMakeLists.txt 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/CMakeLists.txt 2015-05-21 11:05:56.000000000 -0400 @@ -10,7 +10,7 @@ set (PROJECT_NAME "unity") set (UNITY_MAJOR 7) set (UNITY_MINOR 2) -set (UNITY_MICRO 4) +set (UNITY_MICRO 5) set (UNITY_VERSION "${UNITY_MAJOR}.${UNITY_MINOR}.${UNITY_MICRO}") set (UNITY_API_VERSION "6.0") set (UNITY_COMPONENTS_VERSION "6") diff -Nru unity-7.2.4+14.04.20150316/dash/DashView.cpp unity-7.2.5+14.04.20150521.1/dash/DashView.cpp --- unity-7.2.4+14.04.20150316/dash/DashView.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/dash/DashView.cpp 2015-05-21 11:06:49.000000000 -0400 @@ -1174,7 +1174,9 @@ if (!filter.filters.empty()) { - scope_views_[filter.id]->filters_expanded = true; + if (scope_views_.find(filter.id) != std::end(scope_views_)) + scope_views_[filter.id]->filters_expanded = true; + // update the scope for each filter for (auto p : filter.filters) { UpdateScopeFilter(filter.id, p.first, p.second); diff -Nru unity-7.2.4+14.04.20150316/debian/changelog unity-7.2.5+14.04.20150521.1/debian/changelog --- unity-7.2.4+14.04.20150316/debian/changelog 2015-05-21 16:11:17.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/debian/changelog 2015-05-21 16:11:17.000000000 -0400 @@ -1,3 +1,39 @@ +unity (7.2.5+14.04.20150521.1-0ubuntu1) trusty; urgency=medium + + [ Chris Townsend ] + * Releasing 7.2.5. + * Bump version to 7.2.5. + * Use a 2 second delay before showing the first run shortcut hints to + workaround a race condition on input handling. (LP: #1313597) + + [ Andrea Azzarone ] + * Add the possibility to specify the font size and the font weight + without chaning the default font name. (LP: #886478) + * Do not restore focus if a quicklist is opened during launcher key + navigation. (LP: #932486) + * Draw osk above unity shell. (LP: #1413165) + * Forward first key event that happens on top of the blank window to + the lockscreen. (LP: #1308265) + * Make sure scope_views_[filter.id] exists before using operator[] on + it. (LP: #926979) + * Release pointer barrier if launcher is in lock_hide state. (LP: + #1029114) + + [ Brandon Schaefer ] + * When we quit the quicklist it would check if the mouse was over the + launcher, if it wasn't it would fold the launcher. We don't need to + check this if we are in keynav as we want all the icons to be + unfolded. (LP: #1246891) + + [ CI Train Bot ] + * New rebuild forced. + + [ Stephen M. Webb ] + * AP tests: accounted for arbitrarily-raised exceptions in checking + scaled windows (LP: #1436095) + + -- CI Train Bot Thu, 21 May 2015 15:07:15 +0000 + unity (7.2.4+14.04.20150316-0ubuntu1) trusty; urgency=medium [ Andrea Azzarone ] diff -Nru unity-7.2.4+14.04.20150316/launcher/AbstractLauncherIcon.h unity-7.2.5+14.04.20150521.1/launcher/AbstractLauncherIcon.h --- unity-7.2.4+14.04.20150316/launcher/AbstractLauncherIcon.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/AbstractLauncherIcon.h 2015-05-21 11:06:44.000000000 -0400 @@ -151,7 +151,7 @@ virtual void SetSortPriority(int priority) = 0; - virtual bool OpenQuicklist(bool select_first_item = false, int monitor = -1) = 0; + virtual bool OpenQuicklist(bool select_first_item = false, int monitor = -1, bool restore_input_focus = false) = 0; virtual void CloseQuicklist() = 0; virtual void SetCenter(nux::Point3 const& center, int monitor) = 0; diff -Nru unity-7.2.4+14.04.20150316/launcher/LauncherController.cpp unity-7.2.5+14.04.20150521.1/launcher/LauncherController.cpp --- unity-7.2.4+14.04.20150316/launcher/LauncherController.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/LauncherController.cpp 2015-05-21 11:06:44.000000000 -0400 @@ -158,7 +158,10 @@ ubus.RegisterInterest(UBUS_QUICKLIST_END_KEY_NAV, [this](GVariant * args) { if (reactivate_keynav) + { parent_->KeyNavGrab(); + keynav_restore_window_ = true; + } model_->SetSelection(reactivate_index); AbstractLauncherIcon::Ptr const& selected = model_->Selection(); @@ -1506,8 +1509,9 @@ void Controller::Impl::OpenQuicklist() { - if (model_->Selection()->OpenQuicklist(true, keyboard_launcher_->monitor())) + if (model_->Selection()->OpenQuicklist(true, keyboard_launcher_->monitor(), keynav_restore_window_)) { + keynav_restore_window_ = false; reactivate_keynav = true; reactivate_index = model_->SelectionIndex(); parent_->KeyNavTerminate(false); diff -Nru unity-7.2.4+14.04.20150316/launcher/Launcher.cpp unity-7.2.5+14.04.20150521.1/launcher/Launcher.cpp --- unity-7.2.4+14.04.20150316/launcher/Launcher.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/Launcher.cpp 2015-05-21 11:06:55.000000000 -0400 @@ -2226,7 +2226,8 @@ ui::EdgeBarrierSubscriber::Result Launcher::HandleBarrierEvent(ui::PointerBarrierWrapper* owner, ui::BarrierEvent::Ptr event) { - if (hide_machine_.GetQuirk(LauncherHideMachine::EXTERNAL_DND_ACTIVE)) + if (hide_machine_.GetQuirk(LauncherHideMachine::EXTERNAL_DND_ACTIVE) || + hide_machine_.GetQuirk(LauncherHideMachine::LOCK_HIDE)) { return ui::EdgeBarrierSubscriber::Result::NEEDS_RELEASE; } @@ -2308,13 +2309,17 @@ void Launcher::RecvQuicklistClosed(nux::ObjectPtr const& quicklist) { - nux::Point pt = nux::GetWindowCompositor().GetMousePosition(); - if (!GetAbsoluteGeometry().IsInside(pt)) + if (!IsInKeyNavMode()) { - // The Quicklist just closed and the mouse is outside the launcher. - SetHover(false); - SetStateMouseOverLauncher(false); + nux::Point pt = nux::GetWindowCompositor().GetMousePosition(); + if (!GetAbsoluteGeometry().IsInside(pt)) + { + // The Quicklist just closed and the mouse is outside the launcher. + SetHover(false); + SetStateMouseOverLauncher(false); + } } + // Cancel any prior state that was set before the Quicklist appeared. SetActionState(ACTION_NONE); diff -Nru unity-7.2.4+14.04.20150316/launcher/LauncherIcon.cpp unity-7.2.5+14.04.20150521.1/launcher/LauncherIcon.cpp --- unity-7.2.4+14.04.20150316/launcher/LauncherIcon.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/LauncherIcon.cpp 2015-05-21 11:06:44.000000000 -0400 @@ -518,7 +518,7 @@ _allow_quicklist_to_show = true; } -bool LauncherIcon::OpenQuicklist(bool select_first_item, int monitor) +bool LauncherIcon::OpenQuicklist(bool select_first_item, int monitor, bool restore_input_focus) { MenuItemsVector const& menus = Menus(); @@ -588,14 +588,14 @@ if (win_manager.IsExpoActive()) { auto conn = std::make_shared(); - *conn = win_manager.terminate_expo.connect([this, conn, pos] { - QuicklistManager::Default()->ShowQuicklist(_quicklist, pos.x, pos.y); + *conn = win_manager.terminate_expo.connect([this, conn, pos, restore_input_focus] { + QuicklistManager::Default()->ShowQuicklist(_quicklist, pos.x, pos.y, restore_input_focus); conn->disconnect(); }); } else { - QuicklistManager::Default()->ShowQuicklist(_quicklist, pos.x, pos.y); + QuicklistManager::Default()->ShowQuicklist(_quicklist, pos.x, pos.y, restore_input_focus); } return true; diff -Nru unity-7.2.4+14.04.20150316/launcher/LauncherIcon.h unity-7.2.5+14.04.20150521.1/launcher/LauncherIcon.h --- unity-7.2.4+14.04.20150316/launcher/LauncherIcon.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/LauncherIcon.h 2015-05-21 11:06:44.000000000 -0400 @@ -73,7 +73,7 @@ void ShowTooltip(); - bool OpenQuicklist(bool select_first_item = false, int monitor = -1); + bool OpenQuicklist(bool select_first_item = false, int monitor = -1, bool restore_input_focus = false); void CloseQuicklist(); void SetCenter(nux::Point3 const& center, int parent_monitor); diff -Nru unity-7.2.4+14.04.20150316/launcher/MockLauncherIcon.h unity-7.2.5+14.04.20150521.1/launcher/MockLauncherIcon.h --- unity-7.2.4+14.04.20150316/launcher/MockLauncherIcon.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/MockLauncherIcon.h 2015-05-21 11:06:44.000000000 -0400 @@ -148,7 +148,7 @@ void SetOrder(int order) { order_ = order; } - bool OpenQuicklist(bool select_first_item = false, int monitor = -1) + bool OpenQuicklist(bool select_first_item = false, int monitor = -1, bool restore_input_focus = false) { return false; } diff -Nru unity-7.2.4+14.04.20150316/launcher/QuicklistManager.cpp unity-7.2.5+14.04.20150521.1/launcher/QuicklistManager.cpp --- unity-7.2.4+14.04.20150316/launcher/QuicklistManager.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/QuicklistManager.cpp 2015-05-21 11:06:44.000000000 -0400 @@ -74,8 +74,9 @@ return true; } -void QuicklistManager::ShowQuicklist(nux::ObjectPtr const& quicklist, int tip_x, - int tip_y, bool hide_existing_if_open) +void QuicklistManager::ShowQuicklist(nux::ObjectPtr const& quicklist, + int tip_x, int tip_y, + bool restore_input_focus, bool hide_existing_if_open) { if (_current_quicklist == quicklist) return; @@ -85,7 +86,7 @@ HideQuicklist(_current_quicklist); } - quicklist->ShowQuicklistWithTipAt(tip_x, tip_y); + quicklist->ShowQuicklistWithTipAt(tip_x, tip_y, restore_input_focus); nux::GetWindowCompositor().SetKeyFocusArea(quicklist.GetPointer()); } diff -Nru unity-7.2.4+14.04.20150316/launcher/QuicklistManager.h unity-7.2.5+14.04.20150521.1/launcher/QuicklistManager.h --- unity-7.2.4+14.04.20150316/launcher/QuicklistManager.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/QuicklistManager.h 2015-05-21 11:06:44.000000000 -0400 @@ -40,7 +40,7 @@ nux::ObjectPtr Current(); bool RegisterQuicklist(nux::ObjectPtr const&); - void ShowQuicklist(nux::ObjectPtr const&, int x, int y, bool hide_existing_if_open = true); + void ShowQuicklist(nux::ObjectPtr const&, int x, int y, bool restore_input_focus = false, bool hide_existing_if_open = true); void HideQuicklist(nux::ObjectPtr const&); void MoveQuicklist(nux::ObjectPtr const&, int x, int y); diff -Nru unity-7.2.4+14.04.20150316/launcher/QuicklistView.cpp unity-7.2.5+14.04.20150521.1/launcher/QuicklistView.cpp --- unity-7.2.4+14.04.20150316/launcher/QuicklistView.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/QuicklistView.cpp 2015-05-21 11:06:44.000000000 -0400 @@ -75,6 +75,7 @@ , _padding(decoration::Style::Get()->ActiveShadowRadius()) , _mouse_down(false) , _enable_quicklist_for_testing(false) + , _restore_input_focus(false) , _cairo_text_has_changed(true) , _current_item_index(-1) { @@ -300,7 +301,7 @@ case NUX_VK_ESCAPE: Hide(); // inform UnityScreen we leave key-nav completely - UBusManager::SendMessage(UBUS_LAUNCHER_END_KEY_NAV); + UBusManager::SendMessage(UBUS_LAUNCHER_END_KEY_NAV, glib::Variant(_restore_input_focus)); break; // , (activate selected menu-item) @@ -354,16 +355,17 @@ } } -void QuicklistView::ShowQuicklistWithTipAt(int x, int y) +void QuicklistView::ShowQuicklistWithTipAt(int x, int y, bool restore_input_focus) { SetQuicklistPosition(x, y); - Show(); + Show(restore_input_focus); } -void QuicklistView::Show() +void QuicklistView::Show(bool restore_input_focus) { if (!IsVisible()) { + _restore_input_focus = restore_input_focus; CairoBaseWindow::Show(); GrabPointer(); GrabKeyboard(); diff -Nru unity-7.2.4+14.04.20150316/launcher/QuicklistView.h unity-7.2.5+14.04.20150521.1/launcher/QuicklistView.h --- unity-7.2.4+14.04.20150316/launcher/QuicklistView.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/QuicklistView.h 2015-05-21 11:06:44.000000000 -0400 @@ -56,9 +56,9 @@ void RenderQuicklistView(); void SetQuicklistPosition(int x, int y); - void ShowQuicklistWithTipAt(int x, int y); + void ShowQuicklistWithTipAt(int x, int y, bool restore_input_focus = false); - void Show(); + void Show(bool restore_input_focus = false); void Hide(); void HideAndEndQuicklistNav(); @@ -152,6 +152,7 @@ //iIf true, suppress the Quicklist behaviour that is expected in Unity. // Keep the Quicklist on screen for testing and automation. bool _enable_quicklist_for_testing; + bool _restore_input_focus; nux::HLayout* _hlayout; nux::VLayout* _vlayout; diff -Nru unity-7.2.4+14.04.20150316/launcher/SwitcherView.cpp unity-7.2.5+14.04.20150521.1/launcher/SwitcherView.cpp --- unity-7.2.4+14.04.20150316/launcher/SwitcherView.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/launcher/SwitcherView.cpp 2015-05-21 11:06:20.000000000 -0400 @@ -81,7 +81,8 @@ text_view_->SetMaximumWidth(tile_size * TEXT_TILE_MULTIPLIER); text_view_->SetLines(-1); text_view_->SetTextColor(nux::color::White); - text_view_->SetFont("Ubuntu Bold 10"); + text_view_->SetFontSize(10); + text_view_->SetFontWeight(PANGO_WEIGHT_BOLD); text_view_->SetScale(scale); icon_size.changed.connect(sigc::mem_fun(this, &SwitcherView::OnIconSizeChanged)); diff -Nru unity-7.2.4+14.04.20150316/lockscreen/LockScreenController.cpp unity-7.2.5+14.04.20150521.1/lockscreen/LockScreenController.cpp --- unity-7.2.4+14.04.20150316/lockscreen/LockScreenController.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/lockscreen/LockScreenController.cpp 2015-05-21 11:07:01.000000000 -0400 @@ -322,7 +322,9 @@ blank_window_->mouse_move.connect([this](int, int, int dx, int dy, unsigned long, unsigned long) { if ((dx || dy) && !lockscreen_timeout_) HideBlankWindow(); }); - blank_window_->key_down.connect([this] (unsigned long, unsigned long e, unsigned long, const char*, unsigned short) { + blank_window_->key_down.connect([this] (unsigned long et, unsigned long k, unsigned long s, const char* c, unsigned short kc) { + if (prompt_view_.GetPointer() && prompt_view_->focus_view()) + prompt_view_->focus_view()->key_down.emit(et, k, s, c, kc); if (!lockscreen_timeout_) HideBlankWindow(); }); blank_window_->mouse_down.connect([this] (int, int, unsigned long, unsigned long) { diff -Nru unity-7.2.4+14.04.20150316/plugins/unityshell/src/unityshell.cpp unity-7.2.5+14.04.20150521.1/plugins/unityshell/src/unityshell.cpp --- unity-7.2.4+14.04.20150316/plugins/unityshell/src/unityshell.cpp 2015-03-16 13:30:24.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/plugins/unityshell/src/unityshell.cpp 2015-05-21 11:06:30.000000000 -0400 @@ -2976,10 +2976,14 @@ } } - if (uScreen->doShellRepaint && - window == uScreen->firstWindowAboveShell && - !uScreen->forcePaintOnTop() && - !uScreen->fullscreenRegion.contains(window->geometry())) + if (uScreen->doShellRepaint && window == uScreen->onboard_) + { + uScreen->paintDisplay(); + } + else if (uScreen->doShellRepaint && + window == uScreen->firstWindowAboveShell && + !uScreen->forcePaintOnTop() && + !uScreen->fullscreenRegion.contains(window->geometry())) { uScreen->paintDisplay(); } @@ -3203,6 +3207,11 @@ })); } } + else if (WindowManager::Default().IsOnscreenKeyboard(window->id())) + { + uScreen->onboard_ = window; + uScreen->RaiseOSK(); + } /* Fall through an re-evaluate wraps on map and unmap too */ case CompWindowNotifyUnmap: if (uScreen->optionGetShowMinimizedWindows() && window->mapNum() && @@ -4030,7 +4039,7 @@ void UnityScreen::ShowFirstRunHints() { - sources_.AddTimeoutSeconds(1, [this] { + sources_.AddTimeoutSeconds(2, [this] { auto const& config_dir = DesktopUtilities::GetUserConfigDirectory(); if (!config_dir.empty() && !g_file_test((config_dir+local::FIRST_RUN_STAMP).c_str(), G_FILE_TEST_EXISTS)) { @@ -4122,7 +4131,7 @@ if (window->state() & CompWindowStateFullscreenMask) uScreen->fullscreen_windows_.push_back(window); - if (window->type() == CompWindowTypeUtilMask && window->resName() == "onboard") + if (WindowManager::Default().IsOnscreenKeyboard(window->id()) && window->isViewable()) { uScreen->onboard_ = window; uScreen->RaiseOSK(); diff -Nru unity-7.2.4+14.04.20150316/tests/autopilot/unity/tests/test_spread.py unity-7.2.5+14.04.20150521.1/tests/autopilot/unity/tests/test_spread.py --- unity-7.2.4+14.04.20150316/tests/autopilot/unity/tests/test_spread.py 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/tests/autopilot/unity/tests/test_spread.py 2015-05-21 11:07:06.000000000 -0400 @@ -59,13 +59,22 @@ self.assertThat(lambda: self.unity.screen.spread_filter, Eventually(NotEquals(None))) return self.unity.screen.spread_filter - def assertWindowIsScaledEquals(self, xid, scaled): + def assertWindowIsScaledEquals(self, xid, is_scaled): """Assert weather a window is scaled""" - # Add a short delay to ensure the Spread has finished. - sleep(0.5) - - refresh_fn = lambda: xid in [w.xid for w in self.unity.screen.scaled_windows] - self.assertThat(refresh_fn, Eventually(Equals(scaled))) + def scaled_windows_for_screen_contains_xid(): + """Predicates the window is in the list of scaled windows for the screen. + The DBus introspection object actually raises an exception if you try to look + at a window in the scaled_windows list and it's not a scaled window. Buggzorz. + """ + scaled_windows = self.unity.screen.scaled_windows + for w in scaled_windows: + try: + if xid == w.xid: + return True + except: + pass + return False + self.assertThat(scaled_windows_for_screen_contains_xid, Eventually(Equals(is_scaled))) def assertWindowIsClosed(self, xid): """Assert that a window is not in the list of the open windows""" diff -Nru unity-7.2.4+14.04.20150316/tests/MockWindowManager.h unity-7.2.5+14.04.20150521.1/tests/MockWindowManager.h --- unity-7.2.4+14.04.20150316/tests/MockWindowManager.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/tests/MockWindowManager.h 2015-05-21 11:06:25.000000000 -0400 @@ -100,6 +100,7 @@ MOCK_METHOD0(RestoreInputFocus, bool()); MOCK_CONST_METHOD1(GetWindowName, std::string(Window)); + MOCK_CONST_METHOD1(IsOnscreenKeyboard, bool(Window)); MOCK_METHOD1(AddProperties, void(GVariantBuilder*)); }; diff -Nru unity-7.2.4+14.04.20150316/unity-shared/StandaloneWindowManager.cpp unity-7.2.5+14.04.20150521.1/unity-shared/StandaloneWindowManager.cpp --- unity-7.2.4+14.04.20150316/unity-shared/StandaloneWindowManager.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/StandaloneWindowManager.cpp 2015-05-21 11:06:25.000000000 -0400 @@ -603,6 +603,11 @@ return ""; } +bool StandaloneWindowManager::IsOnscreenKeyboard(Window window_id) const +{ + return false; +} + std::string StandaloneWindowManager::GetStringProperty(Window, Atom) const { return std::string(); diff -Nru unity-7.2.4+14.04.20150316/unity-shared/StandaloneWindowManager.h unity-7.2.5+14.04.20150521.1/unity-shared/StandaloneWindowManager.h --- unity-7.2.4+14.04.20150316/unity-shared/StandaloneWindowManager.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/StandaloneWindowManager.h 2015-05-21 11:06:25.000000000 -0400 @@ -160,6 +160,7 @@ virtual bool RestoreInputFocus(); virtual std::string GetWindowName(Window window_id) const; + virtual bool IsOnscreenKeyboard(Window window_id) const; virtual std::string GetStringProperty(Window window_id, Atom) const; virtual std::vector GetCardinalProperty(Window window_id, Atom) const; diff -Nru unity-7.2.4+14.04.20150316/unity-shared/StaticCairoText.cpp unity-7.2.5+14.04.20150521.1/unity-shared/StaticCairoText.cpp --- unity-7.2.4+14.04.20150316/unity-shared/StaticCairoText.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/StaticCairoText.cpp 2015-05-21 11:06:20.000000000 -0400 @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -97,6 +96,8 @@ UnderlineState underline_; std::string font_; + int font_size_ = -1; + PangoWeight font_weight_ = (PangoWeight) -1; std::list textures2D_; @@ -429,6 +430,32 @@ } } +void StaticCairoText::SetFontSize(int font_size) +{ + if (pimpl->font_size_ != font_size) + { + pimpl->font_size_ = font_size; + pimpl->need_new_extent_cache_ = true; + Size s = GetTextExtents(); + SetMinimumHeight(s.height); + NeedRedraw(); + sigFontChanged.emit(this); + } +} + +void StaticCairoText::SetFontWeight(PangoWeight font_weight) +{ + if (pimpl->font_weight_ != font_weight) + { + pimpl->font_weight_ = font_weight; + pimpl->need_new_extent_cache_ = true; + Size s = GetTextExtents(); + SetMinimumHeight(s.height); + NeedRedraw(); + sigFontChanged.emit(this); + } +} + std::string StaticCairoText::GetFont() { return pimpl->font_; @@ -570,6 +597,13 @@ layout = pango_cairo_create_layout(cr); desc = pango_font_description_from_string(font.c_str()); + + if (font_size_ > 0) + pango_font_description_set_size(desc, font_size_ * PANGO_SCALE); + + if (font_weight_ > 0) + pango_font_description_set_weight(desc, font_weight_); + pango_layout_set_font_description(layout, desc); pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_ellipsize(layout, GetPangoEllipsizeMode()); @@ -720,6 +754,13 @@ desc = pango_font_description_from_string(font.c_str()); + + if (font_size_ > 0) + pango_font_description_set_size(desc, font_size_ * PANGO_SCALE); + + if (font_weight_ > 0) + pango_font_description_set_weight(desc, font_weight_); + pango_layout_set_font_description(layout, desc); pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_ellipsize(layout, GetPangoEllipsizeMode()); diff -Nru unity-7.2.4+14.04.20150316/unity-shared/StaticCairoText.h unity-7.2.5+14.04.20150521.1/unity-shared/StaticCairoText.h --- unity-7.2.4+14.04.20150316/unity-shared/StaticCairoText.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/StaticCairoText.h 2015-05-21 11:06:20.000000000 -0400 @@ -21,6 +21,7 @@ #ifndef UNITYSHARED_STATICCAIROTEXT_H #define UNITYSHARED_STATICCAIROTEXT_H +#include #include #include @@ -82,8 +83,12 @@ void SetTextEllipsize(EllipsizeState state); void SetTextAlignment(AlignState state); void SetTextVerticalAlignment(AlignState state); + void SetFont(std::string const& font); + void SetFontSize(int); + void SetFontWeight(PangoWeight); std::string GetFont(); + void SetUnderline(UnderlineState underline); void SetLines(int maximum_lines); void SetLineSpacing(float line_spacing); diff -Nru unity-7.2.4+14.04.20150316/unity-shared/WindowManager.h unity-7.2.5+14.04.20150521.1/unity-shared/WindowManager.h --- unity-7.2.4+14.04.20150316/unity-shared/WindowManager.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/WindowManager.h 2015-05-21 11:06:25.000000000 -0400 @@ -165,6 +165,7 @@ virtual bool RestoreInputFocus() = 0; virtual std::string GetWindowName(Window window_id) const = 0; + virtual bool IsOnscreenKeyboard(Window window_id) const = 0; virtual std::string GetStringProperty(Window, Atom) const = 0; virtual std::vector GetCardinalProperty(Window, Atom) const = 0; diff -Nru unity-7.2.4+14.04.20150316/unity-shared/XWindowManager.cpp unity-7.2.5+14.04.20150521.1/unity-shared/XWindowManager.cpp --- unity-7.2.4+14.04.20150316/unity-shared/XWindowManager.cpp 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/XWindowManager.cpp 2015-05-21 11:06:25.000000000 -0400 @@ -36,6 +36,7 @@ { Atom _NET_WM_VISIBLE_NAME = 0; Atom XA_COMPOUND_TEXT = 0; +Atom ONSCREEN_KEYBOARD = 0; } } @@ -43,6 +44,7 @@ { atom::_NET_WM_VISIBLE_NAME = XInternAtom(screen->dpy(), "_NET_WM_VISIBLE_NAME", False); atom::XA_COMPOUND_TEXT = XInternAtom(screen->dpy(), "COMPOUND_TEXT", False); + atom::ONSCREEN_KEYBOARD = XInternAtom(screen->dpy(), "ONSCREEN_KEYBOARD", False); } std::string XWindowManager::GetStringProperty(Window window_id, Atom atom) const @@ -162,6 +164,16 @@ return GetStringProperty(window_id, XA_WM_NAME); } +bool XWindowManager::IsOnscreenKeyboard(Window window_id) const +{ + std::vector values = GetCardinalProperty(window_id, atom::ONSCREEN_KEYBOARD); + + if (values.empty()) + return false; + + return values[0] != 0; +} + void XWindowManager::UnGrabMousePointer(Time timestamp, int button, int x, int y) { Display* dpy = nux::GetGraphicsDisplay()->GetX11Display(); diff -Nru unity-7.2.4+14.04.20150316/unity-shared/XWindowManager.h unity-7.2.5+14.04.20150521.1/unity-shared/XWindowManager.h --- unity-7.2.4+14.04.20150316/unity-shared/XWindowManager.h 2015-03-16 13:28:56.000000000 -0400 +++ unity-7.2.5+14.04.20150521.1/unity-shared/XWindowManager.h 2015-05-21 11:06:25.000000000 -0400 @@ -34,6 +34,7 @@ void UnGrabMousePointer(Time, int button, int x, int y); std::string GetWindowName(Window window_id) const; + bool IsOnscreenKeyboard(Window window_id) const; std::string GetStringProperty(Window window_id, Atom atom) const; std::vector GetCardinalProperty(Window, Atom) const; };