From a37400d73417dc02511813833b8f4d9b91e40a11 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 22 Jul 2020 22:27:21 -0400 Subject: Add workaround for top panel button highlighting The switch to the new compositor removed the callback to update the top panel button highlight since it was being driven by the Event_ScreenUpdated event from the old windowmanager. For now, work around this by driving the ApplicationLauncher's setCurrent method from the appropriate place in the HomescreenHandler object's tapShortcut method. If a generic mechanism for notifications on application expose becomes available via agl-shell-desktop, that should be used instead. Additionally, add an explicit call to setCurrent on initialization to highlight the top panel Launcher button, matching the actual initial UI state. Bug-AGL: SPEC-3510 Signed-off-by: Scott Murray Change-Id: Ied5dd8e78195d061585510e60a758559ca4f69b3 --- homescreen/src/homescreenhandler.cpp | 8 ++++++-- homescreen/src/homescreenhandler.h | 4 +++- homescreen/src/main.cpp | 5 ++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/homescreen/src/homescreenhandler.cpp b/homescreen/src/homescreenhandler.cpp index bf98a53..e31f122 100644 --- a/homescreen/src/homescreenhandler.cpp +++ b/homescreen/src/homescreenhandler.cpp @@ -24,11 +24,11 @@ void* HomescreenHandler::myThis = 0; -HomescreenHandler::HomescreenHandler(Shell *_aglShell, QObject *parent) : +HomescreenHandler::HomescreenHandler(Shell *_aglShell, ApplicationLauncher *launcher, QObject *parent) : QObject(parent), aglShell(_aglShell) { - + mp_launcher = launcher; } HomescreenHandler::~HomescreenHandler() @@ -113,6 +113,10 @@ void HomescreenHandler::tapShortcut(QString application_id) // the first time. Later calls to HomescreenHandler::tapShortcut will // require calling 'agl_shell_activate_app' agl_shell_activate_app(agl_shell, application_id.toStdString().c_str(), output); + + if (mp_launcher) { + mp_launcher->setCurrent(application_id); + } } void HomescreenHandler::onRep_static(struct json_object* reply_contents) diff --git a/homescreen/src/homescreenhandler.h b/homescreen/src/homescreenhandler.h index 3d939ce..790c4fd 100644 --- a/homescreen/src/homescreenhandler.h +++ b/homescreen/src/homescreenhandler.h @@ -20,6 +20,7 @@ #include #include +#include "applicationlauncher.h" #include "shell.h" #include @@ -30,7 +31,7 @@ class HomescreenHandler : public QObject { Q_OBJECT public: - explicit HomescreenHandler(Shell *aglShell, QObject *parent = 0); + explicit HomescreenHandler(Shell *aglShell, ApplicationLauncher *launcher = 0, QObject *parent = 0); ~HomescreenHandler(); void init(int port, const char* token); @@ -49,6 +50,7 @@ signals: void showInformation(QString info); private: LibHomeScreen *mp_hs; + ApplicationLauncher *mp_launcher; Shell *aglShell; }; diff --git a/homescreen/src/main.cpp b/homescreen/src/main.cpp index 742daa6..8c7bb22 100644 --- a/homescreen/src/main.cpp +++ b/homescreen/src/main.cpp @@ -234,15 +234,14 @@ int main(int argc, char *argv[]) Shell *aglShell = new Shell(shell, &a); // import C++ class to QML - // qmlRegisterType("HomeScreen", 1, 0, "ApplicationLauncher"); qmlRegisterType("HomeScreen", 1, 0, "StatusBarModel"); qmlRegisterType("MasterVolume", 1, 0, "MasterVolume"); qmlRegisterUncreatableType("SpeechChrome", 1, 0, "SpeechChromeController", QLatin1String("SpeechChromeController is uncreatable.")); ApplicationLauncher *launcher = new ApplicationLauncher(); - - HomescreenHandler* homescreenHandler = new HomescreenHandler(aglShell); + launcher->setCurrent(QStringLiteral("launcher")); + HomescreenHandler* homescreenHandler = new HomescreenHandler(aglShell, launcher); homescreenHandler->init(port, token.toStdString().c_str()); QUrl bindingAddress; -- cgit 1.2.3-korg