better panel item startup settings order
This commit is contained in:
@@ -154,7 +154,6 @@ pub enum RecommendedState {
|
|||||||
pub struct PanelItem {
|
pub struct PanelItem {
|
||||||
pub uid: String,
|
pub uid: String,
|
||||||
node: Weak<Node>,
|
node: Weak<Node>,
|
||||||
client_credentials: Option<Credentials>,
|
|
||||||
cursor: Mutex<Option<WlWeak<WlSurface>>>,
|
cursor: Mutex<Option<WlWeak<WlSurface>>>,
|
||||||
pub seat_data: Arc<SeatData>,
|
pub seat_data: Arc<SeatData>,
|
||||||
toplevel: WlWeak<XdgToplevel>,
|
toplevel: WlWeak<XdgToplevel>,
|
||||||
@@ -170,6 +169,11 @@ impl PanelItem {
|
|||||||
seat_data: Arc<SeatData>,
|
seat_data: Arc<SeatData>,
|
||||||
) -> (Arc<Node>, Arc<PanelItem>) {
|
) -> (Arc<Node>, Arc<PanelItem>) {
|
||||||
debug!(?toplevel, ?client_credentials, "Create panel item");
|
debug!(?toplevel, ?client_credentials, "Create panel item");
|
||||||
|
|
||||||
|
let startup_settings = client_credentials
|
||||||
|
.and_then(|cred| get_env(cred.pid).ok())
|
||||||
|
.and_then(|env| startup_settings(&env));
|
||||||
|
|
||||||
let uid = nanoid!();
|
let uid = nanoid!();
|
||||||
let node = Arc::new(Node::create(
|
let node = Arc::new(Node::create(
|
||||||
&INTERNAL_CLIENT,
|
&INTERNAL_CLIENT,
|
||||||
@@ -181,7 +185,6 @@ impl PanelItem {
|
|||||||
let panel_item = Arc::new(PanelItem {
|
let panel_item = Arc::new(PanelItem {
|
||||||
uid: uid.clone(),
|
uid: uid.clone(),
|
||||||
node: Arc::downgrade(&node),
|
node: Arc::downgrade(&node),
|
||||||
client_credentials,
|
|
||||||
cursor: Mutex::new(None),
|
cursor: Mutex::new(None),
|
||||||
seat_data,
|
seat_data,
|
||||||
toplevel: toplevel.downgrade(),
|
toplevel: toplevel.downgrade(),
|
||||||
@@ -190,6 +193,12 @@ impl PanelItem {
|
|||||||
keyboard_grab: Mutex::new(None),
|
keyboard_grab: Mutex::new(None),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if let Some(startup_settings) = &startup_settings {
|
||||||
|
spatial.set_local_transform(
|
||||||
|
spatial.global_transform().inverse() * startup_settings.transform,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
panel_item
|
panel_item
|
||||||
.seat_data
|
.seat_data
|
||||||
.new_surface(&wl_surface, Arc::downgrade(&panel_item));
|
.new_surface(&wl_surface, Arc::downgrade(&panel_item));
|
||||||
@@ -200,6 +209,16 @@ impl PanelItem {
|
|||||||
&ITEM_TYPE_INFO_PANEL,
|
&ITEM_TYPE_INFO_PANEL,
|
||||||
ItemType::Panel(panel_item.clone()),
|
ItemType::Panel(panel_item.clone()),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if let Some(startup_settings) = &startup_settings {
|
||||||
|
if let Some(acceptor) = startup_settings
|
||||||
|
.acceptors
|
||||||
|
.get(&*ITEM_TYPE_INFO_PANEL)
|
||||||
|
.and_then(|acc| acc.upgrade())
|
||||||
|
{
|
||||||
|
items::capture(&item, &acceptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
node.add_local_signal(
|
node.add_local_signal(
|
||||||
"apply_surface_material",
|
"apply_surface_material",
|
||||||
PanelItem::apply_surface_material_flex,
|
PanelItem::apply_surface_material_flex,
|
||||||
@@ -223,21 +242,6 @@ impl PanelItem {
|
|||||||
);
|
);
|
||||||
node.add_local_signal("keyboard_key", PanelItem::keyboard_key_flex);
|
node.add_local_signal("keyboard_key", PanelItem::keyboard_key_flex);
|
||||||
|
|
||||||
if let Some(startup_settings) = panel_item
|
|
||||||
.client_credentials
|
|
||||||
.and_then(|cred| get_env(cred.pid).ok())
|
|
||||||
.and_then(|env| startup_settings(&env))
|
|
||||||
{
|
|
||||||
spatial.set_local_transform(startup_settings.transform);
|
|
||||||
if let Some(acceptor) = startup_settings
|
|
||||||
.acceptors
|
|
||||||
.get(&*ITEM_TYPE_INFO_PANEL)
|
|
||||||
.and_then(|acc| acc.upgrade())
|
|
||||||
{
|
|
||||||
items::capture(&item, &acceptor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
(node, panel_item)
|
(node, panel_item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user