diff -rp -U2 unity-7.1.2+14.04.20140305/launcher/ApplicationLauncherIcon.cpp unity-7.1.2+14.04.20140305+lp1288957/launcher/ApplicationLauncherIcon.cpp --- unity-7.1.2+14.04.20140305/launcher/ApplicationLauncherIcon.cpp 2014-03-05 09:17:14.000000000 -0500 +++ unity-7.1.2+14.04.20140305+lp1288957/launcher/ApplicationLauncherIcon.cpp 2014-03-09 04:49:49.370921329 -0400 @@ -1316,6 +1316,14 @@ void ApplicationLauncherIcon::PerformScr auto const& windows = GetWindowsOnCurrentDesktopInStackingOrder(); + if (windows.empty()) + return; - if (!IsActive() || windows.size() <= 1) + if (!IsActive()) + { + windows.at(0)->Focus(); + return; + } + + if (windows.size() <= 1) return; diff -rp -U2 unity-7.1.2+14.04.20140305/launcher/Launcher.cpp unity-7.1.2+14.04.20140305+lp1288957/launcher/Launcher.cpp --- unity-7.1.2+14.04.20140305/launcher/Launcher.cpp 2014-03-05 09:17:14.000000000 -0500 +++ unity-7.1.2+14.04.20140305+lp1288957/launcher/Launcher.cpp 2014-03-09 04:50:54.666923996 -0400 @@ -2177,4 +2177,6 @@ void Launcher::RecvMouseWheel(int /*x*/, else if (icon_under_mouse_) { + if (!(icon_under_mouse_->GetQuirk(AbstractLauncherIcon::Quirk::ACTIVE) || options()->activate_on_scroll)) + return; auto timestamp = nux::GetGraphicsDisplay()->GetCurrentEvent().x11_timestamp; auto scroll_direction = (wheel_delta < 0) ? AbstractLauncherIcon::ScrollDirection::DOWN : AbstractLauncherIcon::ScrollDirection::UP; diff -rp -U2 unity-7.1.2+14.04.20140305/launcher/LauncherOptions.cpp unity-7.1.2+14.04.20140305+lp1288957/launcher/LauncherOptions.cpp --- unity-7.1.2+14.04.20140305/launcher/LauncherOptions.cpp 2014-03-05 09:17:14.000000000 -0500 +++ unity-7.1.2+14.04.20140305+lp1288957/launcher/LauncherOptions.cpp 2014-03-09 04:53:05.794929351 -0400 @@ -47,4 +47,5 @@ Options::Options() , edge_resist(true) , show_for_all(false) + , activate_on_scroll(false) { auto changed_lambda = [this] { @@ -71,4 +72,5 @@ Options::Options() urgent_animation.changed.connect(sigc::hide(changed_lambda)); edge_resist.changed.connect(sigc::hide(changed_lambda)); + activate_on_scroll.changed.connect(sigc::hide(changed_lambda)); } diff -rp -U2 unity-7.1.2+14.04.20140305/launcher/LauncherOptions.h unity-7.1.2+14.04.20140305+lp1288957/launcher/LauncherOptions.h --- unity-7.1.2+14.04.20140305/launcher/LauncherOptions.h 2014-03-05 09:17:14.000000000 -0500 +++ unity-7.1.2+14.04.20140305+lp1288957/launcher/LauncherOptions.h 2014-03-09 04:53:36.002930585 -0400 @@ -103,4 +103,5 @@ public: nux::Property edge_resist; nux::Property show_for_all; + nux::Property activate_on_scroll; sigc::signal option_changed; diff -rp -U2 unity-7.1.2+14.04.20140305/plugins/unityshell/src/unityshell.cpp unity-7.1.2+14.04.20140305+lp1288957/plugins/unityshell/src/unityshell.cpp --- unity-7.1.2+14.04.20140305/plugins/unityshell/src/unityshell.cpp 2014-03-05 09:18:19.000000000 -0500 +++ unity-7.1.2+14.04.20140305+lp1288957/plugins/unityshell/src/unityshell.cpp 2014-03-09 04:54:43.758933352 -0400 @@ -372,4 +372,5 @@ UnityScreen::UnityScreen(CompScreen* scr optionSetNumLaunchersNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); optionSetLauncherCaptureMouseNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); + optionSetActivateOnScrollNotify(boost::bind(&UnityScreen::optionChanged, this, _1, _2)); ubus_manager_.RegisterInterest(UBUS_LAUNCHER_START_KEY_NAV, @@ -3481,4 +3482,7 @@ void UnityScreen::optionChanged(CompOpti launcher_options->edge_passed_disabled_ms = optionGetEdgePassedDisabledMs(); break; + case UnityshellOptions::ActivateOnScroll: + launcher_options->activate_on_scroll = optionGetActivateOnScroll(); + break; default: break; diff -rp -U2 unity-7.1.2+14.04.20140305/plugins/unityshell/unityshell.xml.in unity-7.1.2+14.04.20140305+lp1288957/plugins/unityshell/unityshell.xml.in --- unity-7.1.2+14.04.20140305/plugins/unityshell/unityshell.xml.in 2014-03-05 09:17:14.000000000 -0500 +++ unity-7.1.2+14.04.20140305+lp1288957/plugins/unityshell/unityshell.xml.in 2014-03-09 04:55:53.010936180 -0400 @@ -468,4 +468,10 @@ + +