fix(displays): reduce height of display arrangement widget
This commit is contained in:
parent
2a76db48e2
commit
3c4742b7f6
1 changed files with 17 additions and 6 deletions
|
|
@ -15,6 +15,8 @@ use cosmic_randr_shell::{self as randr, OutputKey};
|
|||
use randr::Transform;
|
||||
|
||||
const UNIT_PIXELS: f32 = 12.0;
|
||||
const VERTICAL_OVERHEAD: f32 = 1.5;
|
||||
const VERTICAL_DISPLAY_OVERHEAD: f32 = 4.0;
|
||||
|
||||
pub type OnPlacementFunc<Message> = Box<dyn Fn(OutputKey, i32, i32) -> Message>;
|
||||
pub type OnSelectFunc<Message> = Box<dyn Fn(segmented_button::Entity) -> Message>;
|
||||
|
|
@ -100,6 +102,7 @@ impl<'a, Message: Clone> Widget<Message, cosmic::Theme, Renderer> for Arrangemen
|
|||
limits: &layout::Limits,
|
||||
) -> layout::Node {
|
||||
// Determine the max display dimensions, and the total display area utilized.
|
||||
let mut total_height = 0;
|
||||
let mut max_dimensions = (0, 0);
|
||||
let mut display_area = (0, 0);
|
||||
|
||||
|
|
@ -131,17 +134,20 @@ impl<'a, Message: Clone> Widget<Message, cosmic::Theme, Renderer> for Arrangemen
|
|||
|
||||
display_area.0 = display_area.0.max(width as i32 + output.position.0);
|
||||
display_area.1 = display_area.1.max(height as i32 + output.position.1);
|
||||
|
||||
total_height = total_height.max(height as i32 + output.position.1);
|
||||
}
|
||||
|
||||
let width = ((max_dimensions.0 as f32 * 2.0) as i32 + display_area.0) as f32 / UNIT_PIXELS;
|
||||
let height = ((max_dimensions.1 as f32 * 2.0) as i32 + display_area.1) as f32 / UNIT_PIXELS;
|
||||
|
||||
let state = tree.state.downcast_mut::<State>();
|
||||
|
||||
state.max_dimensions = (
|
||||
max_dimensions.0 as f32 / UNIT_PIXELS,
|
||||
max_dimensions.1 as f32 / UNIT_PIXELS,
|
||||
total_height as f32 / UNIT_PIXELS,
|
||||
);
|
||||
|
||||
let width = ((max_dimensions.0 as f32 * 2.0) as i32 + display_area.0) as f32 / UNIT_PIXELS;
|
||||
let height = total_height as f32 * VERTICAL_OVERHEAD / UNIT_PIXELS;
|
||||
|
||||
let limits = limits
|
||||
.width(Length::Fixed(width))
|
||||
.height(Length::Fixed(height));
|
||||
|
|
@ -240,7 +246,10 @@ impl<'a, Message: Clone> Widget<Message, cosmic::Theme, Renderer> for Arrangemen
|
|||
shell.publish(on_placement(
|
||||
output_key,
|
||||
((region.x - state.max_dimensions.0 - bounds.x) * UNIT_PIXELS) as i32,
|
||||
((region.y - state.max_dimensions.1 - bounds.y) * UNIT_PIXELS) as i32,
|
||||
((region.y
|
||||
- (state.max_dimensions.1 / VERTICAL_DISPLAY_OVERHEAD)
|
||||
- bounds.y)
|
||||
* UNIT_PIXELS) as i32,
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -429,7 +438,9 @@ fn display_regions<'a>(
|
|||
width,
|
||||
height,
|
||||
x: max_dimensions.0 + bounds.x + (output.position.0 as f32) / UNIT_PIXELS,
|
||||
y: max_dimensions.1 + bounds.y + (output.position.1 as f32) / UNIT_PIXELS,
|
||||
y: (max_dimensions.1 / VERTICAL_DISPLAY_OVERHEAD)
|
||||
+ bounds.y
|
||||
+ (output.position.1 as f32) / UNIT_PIXELS,
|
||||
},
|
||||
))
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue