aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2018-04-17 09:31:34 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2018-04-17 09:31:34 +1000
commitc685ef081f090d1e15428f55426e02f2274312d0 (patch)
treee4997c84099e962a0c00a8fea22be30964cecda3 /sway
parentbfd5834f4c1046c234ceaae212e65e045cd51460 (diff)
Create sway_workspace struct.
Diffstat (limited to 'sway')
-rw-r--r--sway/desktop/output.c5
-rw-r--r--sway/input/seat.c4
-rw-r--r--sway/tree/container.c1
-rw-r--r--sway/tree/layout.c18
-rw-r--r--sway/tree/view.c7
-rw-r--r--sway/tree/workspace.c7
6 files changed, 19 insertions, 23 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index dc2f6380..74919ccd 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -22,6 +22,7 @@
#include "sway/tree/container.h"
#include "sway/tree/layout.h"
#include "sway/tree/view.h"
+#include "sway/tree/workspace.h"
struct sway_container *output_by_name(const char *name) {
for (int i = 0; i < root_container.children->length; ++i) {
@@ -275,9 +276,9 @@ static void render_output(struct sway_output *output, struct timespec *when,
struct sway_container *workspace = output_get_active_workspace(output);
- if (workspace->fullscreen) {
+ if (workspace->sway_workspace->fullscreen) {
wlr_output_set_fullscreen_surface(wlr_output,
- workspace->fullscreen->surface);
+ workspace->sway_workspace->fullscreen->surface);
} else {
wlr_output_set_fullscreen_surface(wlr_output, NULL);
render_layer(output,
diff --git a/sway/input/seat.c b/sway/input/seat.c
index f60c43b5..23b7ef76 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -18,6 +18,7 @@
#include "sway/output.h"
#include "sway/tree/container.h"
#include "sway/tree/view.h"
+#include "sway/tree/workspace.h"
#include "log.h"
static void seat_device_destroy(struct sway_seat_device *seat_device) {
@@ -457,7 +458,8 @@ void seat_set_focus_warp(struct sway_seat *seat,
new_workspace = container_parent(new_workspace, C_WORKSPACE);
}
- if (last_workspace == new_workspace && last_workspace->fullscreen
+ if (last_workspace == new_workspace
+ && last_workspace->sway_workspace->fullscreen
&& !container->sway_view->is_fullscreen) {
return;
}
diff --git a/sway/tree/container.c b/sway/tree/container.c
index c0067493..f14e9b9a 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -197,6 +197,7 @@ static struct sway_container *container_workspace_destroy(
}
}
+ free(workspace->sway_workspace);
_container_destroy(workspace);
output_damage_whole(output->sway_output);
diff --git a/sway/tree/layout.c b/sway/tree/layout.c
index ad097f2e..62219bb1 100644
--- a/sway/tree/layout.c
+++ b/sway/tree/layout.c
@@ -572,7 +572,7 @@ void arrange_windows(struct sway_container *container,
return;
case C_WORKSPACE:
{
- if (container->fullscreen) {
+ if (container->sway_workspace->fullscreen) {
return;
}
struct sway_container *output =
@@ -847,22 +847,6 @@ struct sway_container *container_get_in_direction(
}
}
- // TODO WLR fullscreen
- /*
- if (container->type == C_VIEW && swayc_is_fullscreen(container)) {
- wlr_log(L_DEBUG, "Moving from fullscreen view, skipping to output");
- container = container_parent(container, C_OUTPUT);
- get_layout_center_position(container, &abs_pos);
- struct sway_container *output =
- swayc_adjacent_output(container, dir, &abs_pos, true);
- return get_swayc_in_output_direction(output, dir);
- }
- if (container->type == C_WORKSPACE && container->fullscreen) {
- sway_log(L_DEBUG, "Moving to fullscreen view");
- return container->fullscreen;
- }
- */
-
struct sway_container *wrap_candidate = NULL;
while (true) {
bool can_move = false;
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 10285ad0..e7a267ec 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -7,6 +7,7 @@
#include "sway/tree/container.h"
#include "sway/tree/layout.h"
#include "sway/tree/view.h"
+#include "sway/tree/workspace.h"
void view_init(struct sway_view *view, enum sway_view_type type,
const struct sway_view_impl *impl) {
@@ -90,10 +91,10 @@ void view_set_fullscreen(struct sway_view *view, bool fullscreen) {
view->is_fullscreen = fullscreen;
if (fullscreen) {
- workspace->fullscreen = view;
+ workspace->sway_workspace->fullscreen = view;
view_configure(view, 0, 0, output->wlr_output->width, output->wlr_output->height);
} else {
- workspace->fullscreen = NULL;
+ workspace->sway_workspace->fullscreen = NULL;
arrange_windows(workspace, -1, -1);
}
@@ -105,7 +106,7 @@ void view_set_fullscreen(struct sway_view *view, bool fullscreen) {
void view_close(struct sway_view *view) {
if (view->is_fullscreen) {
struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE);
- ws->fullscreen = NULL;
+ ws->sway_workspace->fullscreen = NULL;
}
if (view->impl->close) {
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 316f01e4..7f3c1903 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -59,6 +59,13 @@ struct sway_container *workspace_create(struct sway_container *output,
workspace->layout = container_get_default_layout(output);
workspace->workspace_layout = workspace->layout;
+ struct sway_workspace *swayws = calloc(1, sizeof(struct sway_workspace));
+ if (!swayws) {
+ return NULL;
+ }
+ swayws->swayc = workspace;
+ workspace->sway_workspace = swayws;
+
container_add_child(output, workspace);
container_sort_workspaces(output);
container_create_notify(workspace);