parser_->GetManifestData(app_keys::kWidgetApplicationKey));
if (!widget_application_list)
return true;
+ int mainapps = std::count_if(widget_application_list->items.begin(),
+ widget_application_list->items.end(),
+ [](const tpk::parse::WidgetApplicationSingleEntry& app) {
+ return app.app_info.main() == "true";
+ });
+ if (mainapps > 1) // only one main app is permitted
+ return false;
for (const auto& application : widget_application_list->items) {
// if there is no app yet, set this app as mainapp
strdup(application.app_info.hwacceleration().c_str());
widget_app->onboot = strdup("false");
widget_app->autorestart = strdup("false");
- widget_app->mainapp = main_app ? strdup("true") : strdup("false");
+ if (mainapps == 1) {
+ widget_app->mainapp = strdup(application.app_info.main().c_str());
+ } else {
+ widget_app->mainapp = main_app ? strdup("true") : strdup("false");
+ }
widget_app->enabled = strdup("true");
widget_app->screenreader = strdup("use-system-setting");
widget_app->recentimage = strdup("false");