This adds support for set_app_position to allow dynamic positioning of
windows, as requested in SPEC-4863.
Bug-AGL: SPEC-4863
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I9ef1c52ef0de6bb250291cfbb561d58418cd0ee2
+bool
+GrpcClient::SetAppPosition(const std::string& app_id, int32_t x, int32_t y)
+{
+ agl_shell_ipc::AppPositionRequest request;
+
+ request.set_app_id(app_id);
+ request.set_x(x);
+ request.set_y(y);
+
+ grpc::ClientContext context;
+ ::agl_shell_ipc::AppPositionResponse reply;
+
+ grpc::Status status = m_stub->SetAppPosition(&context, request, &reply);
+ return status.ok();
+}
+
grpc::Status
GrpcClient::Wait(void)
{
grpc::Status
GrpcClient::Wait(void)
{
bool SetAppFloat(const std::string& app_id, int32_t x_pos, int32_t y_pos);
bool SetAppFullscreen(const std::string& app_id);
bool SetAppOnOutput(const std::string& app_id, const std::string& output);
bool SetAppFloat(const std::string& app_id, int32_t x_pos, int32_t y_pos);
bool SetAppFullscreen(const std::string& app_id);
bool SetAppOnOutput(const std::string& app_id, const std::string& output);
+ bool SetAppPosition(const std::string& app_id, int32_t x, int32_t y);
std::vector<std::string> GetOutputs();
void GetAppState();
void AppStatusState(Callback callback);
std::vector<std::string> GetOutputs();
void GetAppState();
void AppStatusState(Callback callback);
rpc GetOutputs(OutputRequest) returns (ListOutputResponse) {}
rpc SetAppNormal(NormalRequest) returns (NormalResponse) {}
rpc SetAppOnOutput(AppOnOutputRequest) returns (AppOnOutputResponse) {}
rpc GetOutputs(OutputRequest) returns (ListOutputResponse) {}
rpc SetAppNormal(NormalRequest) returns (NormalResponse) {}
rpc SetAppOnOutput(AppOnOutputRequest) returns (AppOnOutputResponse) {}
+ rpc SetAppPosition(AppPositionRequest) returns (AppPositionResponse) {}
}
message ActivateRequest {
}
message ActivateRequest {
message ActivateResponse {
};
message ActivateResponse {
};
message DeactivateRequest {
string app_id = 1;
}
message DeactivateRequest {
string app_id = 1;
}
message AppOnOutputResponse {
};
message AppOnOutputResponse {
};
+
+message AppPositionRequest {
+ string app_id = 1;
+ int32 x = 2;
+ int32 y = 3;
+};
+
+message AppPositionResponse {
+};
FULLSCREEN = 2,
FULLSCREEN_QT = 3, // rather than use rpc, use Qt API
ON_OTHER_OUTPUTS = 4,
FULLSCREEN = 2,
FULLSCREEN_QT = 3, // rather than use rpc, use Qt API
ON_OTHER_OUTPUTS = 4,
mmode = ON_OTHER_OUTPUTS;
else if (strcmp(argv[1], "full_qt") == 0)
mmode = FULLSCREEN_QT;
mmode = ON_OTHER_OUTPUTS;
else if (strcmp(argv[1], "full_qt") == 0)
mmode = FULLSCREEN_QT;
+ else if (strcmp(argv[1], "position") == 0)
+ mmode = SET_FLOAT_POS;
else
assert(!"Invalid mode");
else
assert(!"Invalid mode");
- if (mmode != FLOAT && mmode != FULLSCREEN && mmode != ON_OTHER_OUTPUTS) {
+ if (mmode != FLOAT && mmode != FULLSCREEN && mmode != ON_OTHER_OUTPUTS && mmode != SET_FLOAT_POS) {
fprintf(stderr, "Will not use rpc\n");
goto skip;
}
fprintf(stderr, "Will not use rpc\n");
goto skip;
}
client->SetAppOnOutput(myname.toStdString(),
std::string(output_name));
break;
client->SetAppOnOutput(myname.toStdString(),
std::string(output_name));
break;
+ case SET_FLOAT_POS:
+ // this assumes the window is already running and
+ // floating; uses the same application so this needs
+ // to be first started as float.
+ client->SetAppPosition(myname.toStdString(), 550, 550);
+ exit(EXIT_SUCCESS);
+ break;