d6f15c5dce
Introduce a Big Picture mode and support building two app targets. CMakeLists was refactored to add a helper (add_nebula_app_target) and now registers NebulaBrowser and NebulaBigPicture executables, moving UI/assets post-build copying into the helper. A new app/main_bigpicture.cpp entry was added and RunNebula now accepts LaunchOptions (AppMode) with a new LaunchOptions struct. NebulaController was extended heavily to manage a BigPicture browser role: creation, enter/exit mode, layout logic, cursor injection/removal, remote input handlers (mouse move/click/wheel/text), and state syncing. Cef/browser_client updated for the new BigPicture role and message filtering. Platform API gained MoveCursorToBrowserPoint with platform stubs/Win implementation. Big-picture UI files (CSS/JS/HTML) were also updated to support the new mode.
55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
#include "app/run.h"
|
|
|
|
#include "app/nebula_controller.h"
|
|
#include "cef/nebula_app.h"
|
|
#include "include/cef_app.h"
|
|
#include "include/cef_command_line.h"
|
|
#include "platform/startup.h"
|
|
#include "ui/paths.h"
|
|
|
|
namespace nebula::app {
|
|
|
|
int RunNebula(const nebula::platform::AppStartup& startup, LaunchOptions options) {
|
|
nebula::platform::PrepareApp();
|
|
|
|
const CefMainArgs main_args = nebula::platform::MakeMainArgs(startup);
|
|
CefRefPtr<nebula::cef::NebulaApp> app(new nebula::cef::NebulaApp);
|
|
|
|
const int subprocess_exit_code = CefExecuteProcess(main_args, app, nullptr);
|
|
if (subprocess_exit_code >= 0) {
|
|
return subprocess_exit_code;
|
|
}
|
|
|
|
if (!nebula::platform::TryAcquireSingleInstance()) {
|
|
return 0;
|
|
}
|
|
|
|
CefSettings settings;
|
|
settings.no_sandbox = true;
|
|
settings.persist_session_cookies = true;
|
|
nebula::platform::ConfigureCefSettings(settings);
|
|
|
|
if (!CefInitialize(main_args, settings, app, nullptr)) {
|
|
return CefGetExitCode();
|
|
}
|
|
|
|
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
|
|
nebula::platform::InitCommandLine(command_line, startup);
|
|
|
|
std::string initial_url = command_line->GetSwitchValue("url");
|
|
if (!initial_url.empty() && nebula::ui::IsChromiumNewTabUrl(initial_url)) {
|
|
initial_url = nebula::ui::GetHomeUrl();
|
|
}
|
|
|
|
NebulaController controller(startup, std::move(initial_url), options);
|
|
const bool created = controller.Create();
|
|
if (created) {
|
|
CefRunMessageLoop();
|
|
}
|
|
|
|
CefShutdown();
|
|
return created ? 0 : 1;
|
|
}
|
|
|
|
} // namespace nebula::app
|