x11: do not track popups at all cases

pull/16/head
Michail Vourlakos 5 years ago
parent 050074f5e4
commit 2df242444c

@ -592,7 +592,7 @@ bool XWindowInterface::isValidWindow(WindowId wid) const
return true; return true;
} }
const KWindowInfo winfo{wid.value<WId>(), NET::WMWindowType}; const KWindowInfo winfo{wid.value<WId>(), NET::WMWindowType | NET::WMState};
return isValidWindow(winfo); return isValidWindow(winfo);
} }
@ -603,10 +603,6 @@ bool XWindowInterface::isValidWindow(const KWindowInfo &winfo) const
return true; return true;
} }
constexpr auto types = NET::DockMask | NET::MenuMask | NET::SplashMask | NET::PopupMenuMask | NET::NormalMask | NET::DialogMask;
NET::WindowType winType = winfo.windowType(types);
const auto winClass = KWindowInfo(winfo.win(), 0, NET::WM2WindowClass).windowClassName();
//! ignored windows from tracking //! ignored windows from tracking
if (m_ignoredWindows.contains(winfo.win())) { if (m_ignoredWindows.contains(winfo.win())) {
return false; return false;
@ -616,26 +612,12 @@ bool XWindowInterface::isValidWindow(const KWindowInfo &winfo) const
return false; return false;
} }
if (winType == -1) { bool hasSkipTaskbar = winfo.hasState(NET::SkipTaskbar);
// Trying to get more types for verify if the window have any other type bool hasSkipPager = winfo.hasState(NET::SkipPager);
winType = winfo.windowType(~types & NET::AllTypesMask);
if (winType == -1) {
qWarning() << KWindowInfo(winfo.win(), 0, NET::WM2WindowClass).windowClassName()
<< "doesn't have any WindowType, assuming as NET::Normal";
return true;
}
}
bool isMenu = ((winType & NET::Menu) == true); bool isSkipped = hasSkipTaskbar && hasSkipPager;
bool isDock = ((winType & NET::Dock) == true);
bool isPopup = ((winType & NET::PopupMenu) == true);
bool isSplash = ((winType & NET::Splash) == true);
//! GTK2+ dialogs case e.g. inkscape, gimp2, etc... return !isSkipped;
//! are both Popups and Splash types, this is why
//! we can not black list them here
return !(isMenu || isDock);
} }
void XWindowInterface::windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2) void XWindowInterface::windowChangedProxy(WId wid, NET::Properties prop1, NET::Properties2 prop2)
@ -682,7 +664,6 @@ void XWindowInterface::windowChangedProxy(WId wid, NET::Properties prop1, NET::P
return; return;
} }
//! ignore windows that do not respect normal windows types
if (!isValidWindow(wid)) { if (!isValidWindow(wid)) {
return; return;
} }

Loading…
Cancel
Save