message SplitRequest {
string app_id = 1;
int32 tile_orientation = 2;
- string output_name = 3;
+ int32 width = 3;
+ string output_name = 4;
}
message SplitResponse {
LOG("m_aglShell not set-up\n");
return nullptr;
}
- m_aglShell->SetAppSplit(request->app_id(), request->tile_orientation(), request->output_name());
+ m_aglShell->SetAppSplit(request->app_id(), request->tile_orientation(), request->width(), request->output_name());
grpc::ServerUnaryReactor* reactor = context->DefaultReactor();
reactor->Finish(grpc::Status::OK);
}
void
-Shell::SetAppSplit(const std::string &app_id, uint32_t orientation, const std::string &output_name)
+Shell::SetAppSplit(const std::string &app_id, uint32_t orientation, uint32_t width, const std::string &output_name)
{
struct window_output *woutput, *w_output;
struct agl_shell *shell = this->m_shell.get();
w_output, link);
- agl_shell_set_app_split(shell, app_id.c_str(), orientation, w_output->output);
+ agl_shell_set_app_split(shell, app_id.c_str(), orientation, width, w_output->output);
wl_display_flush(m_shell_data->wl_display);
}
m_shell(shell), m_shell_data(sh_data) { }
void ActivateApp(const std::string &app_id, const std::string &output_name);
void DeactivateApp(const std::string &app_id);
- void SetAppSplit(const std::string &app_id, uint32_t orientation, const std::string &output_name);
+ void SetAppSplit(const std::string &app_id, uint32_t orientation, uint32_t width, const std::string &output_name);
void SetAppFloat(const std::string &app_id,
int32_t x_pos, int32_t y_pos);
void SetAppNormal(const std::string &app_id);
</request>
<request name="set_app_split" since="11">
- <description summary="set the application split">
+ <description summary="set the application with a split orientation">
This requests asks the compositor to change the application from the
original mode (whatever that might be) to a split, tiled orientation
mode defined in the tile orientation enum.
such that users can cycle between that one or the other, assumes there's
another window in the first place.
+ A width size can also be specified for the split window. Note that this
+ width can't exceed the output width value, or the compositor can choose
+ to ignore this value.
+
See xdg_toplevel.set_app_id from the xdg-shell protocol for a
description of app_id.
</description>
<arg name="app_id" type="string"/>
<arg name="orientation" type="uint" enum="tile_orientation"/>
+ <arg name="width" type="int" summary="width of the window being split"/>
<arg name="output" type="object" interface="wl_output"/>
</request>
</interface>
static
void shell_set_app_split(struct wl_client *client, struct wl_resource *res,
- const char *app_id, uint32_t orientation,
+ const char *app_id, uint32_t orientation, int32_t width,
struct wl_resource *output_res)
{
struct ivi_surface *surf;
return;
}
- /* otherwise, take actions now */
- weston_log("%s() added split surface for app_id '%s' with orientation %d\n",
- __func__, app_id, orientation);
-
if (output->previous_active) {
struct weston_view *ev = output->previous_active->view;