mirror of
https://github.com/labwc/labwc.git
synced 2026-04-13 08:21:15 -04:00
squash! [wip] Add ToggleShade
Unshade views when starting interactive moves.
This commit is contained in:
parent
d7d3b9f845
commit
3a7d10993c
6 changed files with 23 additions and 10 deletions
|
|
@ -847,6 +847,7 @@ actions_run(struct view *activator, struct server *server,
|
||||||
.width = width ? : view->pending.width,
|
.width = width ? : view->pending.width,
|
||||||
.height = height ? : view->pending.height,
|
.height = height ? : view->pending.height,
|
||||||
};
|
};
|
||||||
|
view_set_shade(view, false);
|
||||||
view_move_resize(view, box);
|
view_move_resize(view, box);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,8 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges)
|
||||||
}
|
}
|
||||||
if (!view_is_floating(view)) {
|
if (!view_is_floating(view)) {
|
||||||
/*
|
/*
|
||||||
* Un-maximize and restore natural width/height.
|
* Un-maximize, unshade and restore natural
|
||||||
|
* width/height.
|
||||||
* Don't reset tiled state yet since we may want
|
* Don't reset tiled state yet since we may want
|
||||||
* to keep it (in the snap-to-maximize case).
|
* to keep it (in the snap-to-maximize case).
|
||||||
*/
|
*/
|
||||||
|
|
@ -66,6 +67,8 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges)
|
||||||
geometry.y = max_move_scale(seat->cursor->y,
|
geometry.y = max_move_scale(seat->cursor->y,
|
||||||
view->current.y, view->current.height,
|
view->current.y, view->current.height,
|
||||||
geometry.height);
|
geometry.height);
|
||||||
|
|
||||||
|
view_set_shade(view, false);
|
||||||
view_restore_to(view, geometry);
|
view_restore_to(view, geometry);
|
||||||
} else {
|
} else {
|
||||||
/* Store natural geometry at start of move */
|
/* Store natural geometry at start of move */
|
||||||
|
|
|
||||||
|
|
@ -159,14 +159,15 @@ resize_indicator_update(struct view *view)
|
||||||
|
|
||||||
char text[32]; /* 12345 x 12345 would be 13 chars + 1 null byte */
|
char text[32]; /* 12345 x 12345 would be 13 chars + 1 null byte */
|
||||||
|
|
||||||
int eff_height = view_effective_height(view, false);
|
int eff_height = view_effective_height(view, /* use_pending */ false);
|
||||||
|
int eff_width = view->current.width;
|
||||||
|
|
||||||
switch (view->server->input_mode) {
|
switch (view->server->input_mode) {
|
||||||
case LAB_INPUT_STATE_RESIZE:
|
case LAB_INPUT_STATE_RESIZE:
|
||||||
; /* works around "a label can only be part of a statement" */
|
; /* works around "a label can only be part of a statement" */
|
||||||
struct view_size_hints hints = view_get_size_hints(view);
|
struct view_size_hints hints = view_get_size_hints(view);
|
||||||
snprintf(text, sizeof(text), "%d x %d",
|
snprintf(text, sizeof(text), "%d x %d",
|
||||||
MAX(0, view->current.width - hints.base_width)
|
MAX(0, eff_width - hints.base_width)
|
||||||
/ MAX(1, hints.width_inc),
|
/ MAX(1, hints.width_inc),
|
||||||
MAX(0, eff_height - hints.base_height)
|
MAX(0, eff_height - hints.base_height)
|
||||||
/ MAX(1, hints.height_inc));
|
/ MAX(1, hints.height_inc));
|
||||||
|
|
@ -194,7 +195,7 @@ resize_indicator_update(struct view *view)
|
||||||
|
|
||||||
/* Center the indicator in the window */
|
/* Center the indicator in the window */
|
||||||
wlr_scene_node_set_position(&indicator->tree->node,
|
wlr_scene_node_set_position(&indicator->tree->node,
|
||||||
(view->current.width - indicator->width) / 2,
|
(eff_width - indicator->width) / 2,
|
||||||
(eff_height - indicator->height) / 2);
|
(eff_height - indicator->height) / 2);
|
||||||
|
|
||||||
scaled_font_buffer_update(indicator->text, text, width, &rc.font_osd,
|
scaled_font_buffer_update(indicator->text, text, width, &rc.font_osd,
|
||||||
|
|
|
||||||
|
|
@ -61,11 +61,15 @@ ssd_max_extents(struct view *view)
|
||||||
{
|
{
|
||||||
assert(view);
|
assert(view);
|
||||||
struct border border = ssd_thickness(view);
|
struct border border = ssd_thickness(view);
|
||||||
|
|
||||||
|
int eff_width = view->current.width;
|
||||||
|
int eff_height = view_effective_height(view, /* use_pending */ false);
|
||||||
|
|
||||||
return (struct wlr_box){
|
return (struct wlr_box){
|
||||||
.x = view->current.x - border.left,
|
.x = view->current.x - border.left,
|
||||||
.y = view->current.y - border.top,
|
.y = view->current.y - border.top,
|
||||||
.width = view->current.width + border.left + border.right,
|
.width = eff_width + border.left + border.right,
|
||||||
.height = view->current.height + border.top + border.bottom,
|
.height = eff_height + border.top + border.bottom,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -220,7 +224,11 @@ ssd_update_geometry(struct ssd *ssd)
|
||||||
|
|
||||||
struct wlr_box cached = ssd->state.geometry;
|
struct wlr_box cached = ssd->state.geometry;
|
||||||
struct wlr_box current = ssd->view->current;
|
struct wlr_box current = ssd->view->current;
|
||||||
if (current.width == cached.width && current.height == cached.height) {
|
|
||||||
|
int eff_width = current.width;
|
||||||
|
int eff_height = view_effective_height(ssd->view, /* use_pending */ false);
|
||||||
|
|
||||||
|
if (eff_width == cached.width && eff_height == cached.height) {
|
||||||
if (current.x != cached.x || current.y != cached.y) {
|
if (current.x != cached.x || current.y != cached.y) {
|
||||||
/* Dynamically resize extents based on position and usable_area */
|
/* Dynamically resize extents based on position and usable_area */
|
||||||
ssd_extents_update(ssd);
|
ssd_extents_update(ssd);
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ ssd_border_create(struct ssd *ssd)
|
||||||
struct view *view = ssd->view;
|
struct view *view = ssd->view;
|
||||||
struct theme *theme = view->server->theme;
|
struct theme *theme = view->server->theme;
|
||||||
int width = view->current.width;
|
int width = view->current.width;
|
||||||
int height = view_effective_height(view, false);
|
int height = view_effective_height(view, /* use_pending */ false);
|
||||||
int full_width = width + 2 * theme->border_width;
|
int full_width = width + 2 * theme->border_width;
|
||||||
|
|
||||||
float *color;
|
float *color;
|
||||||
|
|
@ -83,7 +83,7 @@ ssd_border_update(struct ssd *ssd)
|
||||||
struct theme *theme = view->server->theme;
|
struct theme *theme = view->server->theme;
|
||||||
|
|
||||||
int width = view->current.width;
|
int width = view->current.width;
|
||||||
int height = view_effective_height(view, false);
|
int height = view_effective_height(view, /* use_pending */ false);
|
||||||
int full_width = width + 2 * theme->border_width;
|
int full_width = width + 2 * theme->border_width;
|
||||||
|
|
||||||
struct ssd_part *part;
|
struct ssd_part *part;
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ ssd_extents_update(struct ssd *ssd)
|
||||||
struct theme *theme = view->server->theme;
|
struct theme *theme = view->server->theme;
|
||||||
|
|
||||||
int width = view->current.width;
|
int width = view->current.width;
|
||||||
int height = view->current.height;
|
int height = view_effective_height(view, /* use_pending */ false);
|
||||||
int full_height = height + theme->border_width * 2 + ssd->titlebar.height;
|
int full_height = height + theme->border_width * 2 + ssd->titlebar.height;
|
||||||
int full_width = width + 2 * theme->border_width;
|
int full_width = width + 2 * theme->border_width;
|
||||||
int extended_area = SSD_EXTENDED_AREA;
|
int extended_area = SSD_EXTENDED_AREA;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue