Refactor everything that needs to arrange windows

* The arrange_foo functions are now replaced with arrange_and_commit, or
with manually created transactions and arrange_windows x2.
* The arrange functions are now only called from the highest level
functions rather than from both high level and low level functions.
* Due to the previous point, view_set_fullscreen_raw and
view_set_fullscreen are both merged into one function again.
* Floating and fullscreen are now working with transactions.
This commit is contained in:
Ryan Dwyer 2018-06-06 22:57:34 +10:00
parent f9e6d703d2
commit bb66e6d578
24 changed files with 192 additions and 171 deletions

View file

@ -16,12 +16,7 @@
* the updates all at the same time.
*/
struct sway_transaction {
struct wl_event_source *timer;
list_t *instructions; // struct sway_transaction_instruction *
list_t *damage; // struct wlr_box *
size_t num_waiting;
};
struct sway_transaction;
/**
* Create a new transaction.

View file

@ -23,11 +23,4 @@ void arrange_windows(struct sway_container *container,
*/
void arrange_and_commit(struct sway_container *container);
// These functions are temporary and are only here to make everything compile.
// They are wrappers around arrange_and_commit.
void arrange_root(void);
void arrange_output(struct sway_container *container);
void arrange_workspace(struct sway_container *container);
void arrange_children_of(struct sway_container *container);
#endif

View file

@ -214,6 +214,11 @@ const char *view_get_shell(struct sway_view *view);
uint32_t view_configure(struct sway_view *view, double lx, double ly, int width,
int height);
/**
* Center the view in its workspace and build the swayc decorations around it.
*/
void view_init_floating(struct sway_view *view);
/**
* Configure the view's position and size based on the swayc's position and
* size, taking borders into consideration.