parent
9261c278af
commit
d7bc38e6e7
2 changed files with 35 additions and 0 deletions
|
|
@ -614,12 +614,26 @@ impl XState {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if log::log_enabled!(log::Level::Debug) {
|
||||||
|
let win_types = window_types
|
||||||
|
.iter()
|
||||||
|
.copied()
|
||||||
|
.map(|t| get_atom_name(&self.connection, t))
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
debug!("{window:?} window_types: {win_types:?}");
|
||||||
|
}
|
||||||
|
debug!("{window:?} override_redirect: {override_redirect:?}");
|
||||||
|
|
||||||
let mut known_window_type = false;
|
let mut known_window_type = false;
|
||||||
for ty in window_types {
|
for ty in window_types {
|
||||||
match ty {
|
match ty {
|
||||||
x if x == self.window_atoms.normal || x == self.window_atoms.dialog => {
|
x if x == self.window_atoms.normal || x == self.window_atoms.dialog => {
|
||||||
is_popup = override_redirect;
|
is_popup = override_redirect;
|
||||||
}
|
}
|
||||||
|
x if x == self.window_atoms.menu || x == self.window_atoms.tooltip => {
|
||||||
|
is_popup = true;
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -903,6 +917,7 @@ xcb::atoms_struct! {
|
||||||
splash => b"_NET_WM_WINDOW_TYPE_SPLASH" only_if_exists = false,
|
splash => b"_NET_WM_WINDOW_TYPE_SPLASH" only_if_exists = false,
|
||||||
menu => b"_NET_WM_WINDOW_TYPE_MENU" only_if_exists = false,
|
menu => b"_NET_WM_WINDOW_TYPE_MENU" only_if_exists = false,
|
||||||
utility => b"_NET_WM_WINDOW_TYPE_UTILITY" only_if_exists = false,
|
utility => b"_NET_WM_WINDOW_TYPE_UTILITY" only_if_exists = false,
|
||||||
|
tooltip => b"_NET_WM_WINDOW_TYPE_TOOLTIP" only_if_exists = false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,8 @@ xcb::atoms_struct! {
|
||||||
wm_check => b"_NET_SUPPORTING_WM_CHECK",
|
wm_check => b"_NET_SUPPORTING_WM_CHECK",
|
||||||
win_type => b"_NET_WM_WINDOW_TYPE",
|
win_type => b"_NET_WM_WINDOW_TYPE",
|
||||||
win_type_normal => b"_NET_WM_WINDOW_TYPE_NORMAL",
|
win_type_normal => b"_NET_WM_WINDOW_TYPE_NORMAL",
|
||||||
|
win_type_menu => b"_NET_WM_WINDOW_TYPE_MENU",
|
||||||
|
win_type_tooltip => b"_NET_WM_WINDOW_TYPE_TOOLTIP",
|
||||||
motif_wm_hints => b"_MOTIF_WM_HINTS" only_if_exists = false,
|
motif_wm_hints => b"_MOTIF_WM_HINTS" only_if_exists = false,
|
||||||
mime1 => b"text/plain" only_if_exists = false,
|
mime1 => b"text/plain" only_if_exists = false,
|
||||||
mime2 => b"blah/blah" only_if_exists = false,
|
mime2 => b"blah/blah" only_if_exists = false,
|
||||||
|
|
@ -1702,6 +1704,24 @@ fn popup_heuristics() {
|
||||||
&[0x2_u32, 0, 0x2a, 0, 0],
|
&[0x2_u32, 0, 0x2a, 0, 0],
|
||||||
);
|
);
|
||||||
f.map_as_toplevel(&mut connection, reaper_dialog);
|
f.map_as_toplevel(&mut connection, reaper_dialog);
|
||||||
|
|
||||||
|
let chromium_menu = connection.new_window(connection.root, 10, 10, 50, 50, true);
|
||||||
|
connection.set_property(
|
||||||
|
chromium_menu,
|
||||||
|
x::ATOM_ATOM,
|
||||||
|
connection.atoms.win_type,
|
||||||
|
&[connection.atoms.win_type_menu],
|
||||||
|
);
|
||||||
|
f.map_as_popup(&mut connection, chromium_menu);
|
||||||
|
|
||||||
|
let chromium_tooltip = connection.new_window(connection.root, 10, 10, 50, 50, true);
|
||||||
|
connection.set_property(
|
||||||
|
chromium_tooltip,
|
||||||
|
x::ATOM_ATOM,
|
||||||
|
connection.atoms.win_type,
|
||||||
|
&[connection.atoms.win_type_tooltip],
|
||||||
|
);
|
||||||
|
f.map_as_popup(&mut connection, chromium_tooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue