refactor(locker): scrollable menu in locker
This commit is contained in:
parent
abc591db6d
commit
b740ad246b
3 changed files with 18 additions and 5 deletions
|
|
@ -17,6 +17,8 @@ use cosmic_greeter_daemon::{BgSource, CosmicCompConfig, UserData};
|
||||||
use std::{collections::HashMap, sync::Arc};
|
use std::{collections::HashMap, sync::Arc};
|
||||||
use wayland_client::protocol::wl_output::WlOutput;
|
use wayland_client::protocol::wl_output::WlOutput;
|
||||||
|
|
||||||
|
pub const DEFAULT_MENU_ITEM_HEIGHT: f32 = 36.;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Eq, PartialEq)]
|
#[derive(Debug, Clone, Eq, PartialEq)]
|
||||||
pub struct ActiveLayout {
|
pub struct ActiveLayout {
|
||||||
pub layout: String,
|
pub layout: String,
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ use wayland_client::{Proxy, protocol::wl_output::WlOutput};
|
||||||
use zbus::{Connection, proxy};
|
use zbus::{Connection, proxy};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
common::{self, Common},
|
common::{self, Common, DEFAULT_MENU_ITEM_HEIGHT},
|
||||||
fl,
|
fl,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -381,7 +381,6 @@ pub struct App {
|
||||||
|
|
||||||
impl App {
|
impl App {
|
||||||
fn menu(&self, id: SurfaceId) -> Element<Message> {
|
fn menu(&self, id: SurfaceId) -> Element<Message> {
|
||||||
const DEFAULT_MENU_ITEM_HEIGHT: f32 = 36.;
|
|
||||||
let window_width = self
|
let window_width = self
|
||||||
.common
|
.common
|
||||||
.window_size
|
.window_size
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ use tokio::{sync::mpsc, task};
|
||||||
use wayland_client::{Proxy, protocol::wl_output::WlOutput};
|
use wayland_client::{Proxy, protocol::wl_output::WlOutput};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
common::{self, Common},
|
common::{self, Common, DEFAULT_MENU_ITEM_HEIGHT},
|
||||||
fl,
|
fl,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -293,8 +293,20 @@ impl App {
|
||||||
.on_press(message),
|
.on_press(message),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
let dropdown_menu = |items| {
|
let dropdown_menu = |items: Vec<_>| {
|
||||||
widget::container(widget::column::with_children(items))
|
let item_cnt = items.len();
|
||||||
|
|
||||||
|
let items = widget::column::with_children(items);
|
||||||
|
let items = if item_cnt > 7 {
|
||||||
|
Element::from(
|
||||||
|
widget::scrollable(items)
|
||||||
|
.height(Length::Fixed(DEFAULT_MENU_ITEM_HEIGHT * 7.)),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
Element::from(items)
|
||||||
|
};
|
||||||
|
|
||||||
|
widget::container(items)
|
||||||
.padding(1)
|
.padding(1)
|
||||||
//TODO: move style to libcosmic
|
//TODO: move style to libcosmic
|
||||||
.class(theme::Container::custom(|theme| {
|
.class(theme::Container::custom(|theme| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue