mirror of
https://github.com/swaywm/sway
synced 2024-11-18 19:03:59 +01:00
Initial work for floating view with sane values
This commit is contained in:
parent
9d7d73df7f
commit
f1d5b89d3e
@ -226,6 +226,12 @@ struct sway_config {
|
||||
struct border_colors placeholder;
|
||||
uint32_t background;
|
||||
} border_colors;
|
||||
|
||||
// floating view minimum
|
||||
int32_t floating_maximum_width;
|
||||
int32_t floating_maximum_height;
|
||||
int32_t floating_minimum_width;
|
||||
int32_t floating_minimum_height;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -168,6 +168,8 @@ swayc_t *new_view(swayc_t *sibling, wlc_handle handle);
|
||||
*/
|
||||
swayc_t *new_floating_view(wlc_handle handle);
|
||||
|
||||
void floating_view_sane_size(swayc_t *view);
|
||||
|
||||
/**
|
||||
* Frees an output's container.
|
||||
*/
|
||||
|
@ -172,6 +172,12 @@ static void config_defaults(struct sway_config *config) {
|
||||
config->font = strdup("monospace 10");
|
||||
config->font_height = get_font_text_height(config->font);
|
||||
|
||||
// floating view
|
||||
config->floating_maximum_width = -1;
|
||||
config->floating_maximum_height = -1;
|
||||
config->floating_minimum_width = 75;
|
||||
config->floating_minimum_height = 50;
|
||||
|
||||
// Flags
|
||||
config->focus_follows_mouse = true;
|
||||
config->mouse_warping = true;
|
||||
|
@ -328,6 +328,31 @@ swayc_t *new_floating_view(wlc_handle handle) {
|
||||
return view;
|
||||
}
|
||||
|
||||
void floating_view_sane_size(swayc_t *view) {
|
||||
if (config->floating_minimum_height != -1 &&
|
||||
view->desired_height < config->floating_minimum_height) {
|
||||
view->desired_height = config->floating_minimum_height;
|
||||
}
|
||||
if (config->floating_minimum_width != -1 &&
|
||||
view->desired_width < config->floating_minimum_width) {
|
||||
view->desired_width = config->floating_minimum_width;
|
||||
}
|
||||
|
||||
if (config->floating_maximum_height != -1 &&
|
||||
view->desired_height > config->floating_maximum_height) {
|
||||
view->desired_height = config->floating_maximum_height;
|
||||
}
|
||||
if (config->floating_maximum_width != -1 &&
|
||||
view->desired_width > config->floating_maximum_width) {
|
||||
view->desired_width = config->floating_maximum_width;
|
||||
}
|
||||
sway_log(L_DEBUG, "Sane values for view to %d x %d @ %.f, %.f",
|
||||
view->desired_width, view->desired_height, view->x, view->y);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Destroy container
|
||||
|
||||
swayc_t *destroy_output(swayc_t *output) {
|
||||
|
@ -350,6 +350,7 @@ static void handle_view_geometry_request(wlc_handle handle, const struct wlc_geo
|
||||
view->desired_height = geometry->size.h;
|
||||
|
||||
if (view->is_floating) {
|
||||
floating_view_sane_size(view);
|
||||
view->width = view->desired_width;
|
||||
view->height = view->desired_height;
|
||||
view->x = geometry->origin.x;
|
||||
|
Loading…
Reference in New Issue
Block a user