introduce windowCanBeMaximized

--trying to avoid interacting with windows
that DO NOT allow it
pull/8/head
Michail Vourlakos 6 years ago
parent 59f1d72fa3
commit 42d94df47f

@ -109,6 +109,7 @@ public:
virtual void requestToggleMaximized(WindowId wid) const = 0;
virtual bool windowCanBeDragged(WindowId wid) const = 0;
virtual bool windowCanBeMaximized(WindowId wid) const = 0;
virtual QIcon iconFor(WindowId wid) const = 0;
virtual WindowId winIdFor(QString appId, QRect geometry) const = 0;

@ -391,6 +391,10 @@ void LastActiveWindow::requestClose()
void LastActiveWindow::requestMove(Latte::View *fromView, int localX, int localY)
{
if (!canBeDragged()) {
return;
}
QPoint globalPoint{fromView->x() + localX, fromView->y() + localY};
m_wm->requestMoveWindow(m_winId, globalPoint);

@ -523,6 +523,21 @@ bool WaylandInterface::windowCanBeDragged(WindowId wid) const
return false;
}
bool WaylandInterface::windowCanBeMaximized(WindowId wid) const
{
auto w = windowFor(wid);
if (w && isValidWindow(w)) {
WindowInfoWrap winfo = requestInfo(wid);
return (winfo.isValid()
&& w->isMaximizeable()
&& !winfo.isMinimized()
&& !winfo.isPlasmaDesktop());
}
return false;
}
void WaylandInterface::releaseMouseEventFor(WindowId wid) const
{
// this isnt really needed under wayland
@ -604,7 +619,7 @@ void WaylandInterface::requestToggleMaximized(WindowId wid) const
{
auto w = windowFor(wid);
if (w && isValidWindow(w)) {
if (w && isValidWindow(w) && windowCanBeMaximized(wid)) {
#if KF5_VERSION_MINOR >= 52
if (!m_currentDesktop.isEmpty()) {
w->requestEnterVirtualDesktop(m_currentDesktop);

@ -86,7 +86,8 @@ public:
void requestToggleMinimized(WindowId wid) const override;
void requestToggleMaximized(WindowId wid) const override;
bool windowCanBeDragged(WindowId wid) const;
bool windowCanBeDragged(WindowId wid) const override;
bool windowCanBeMaximized(WindowId wid) const override;
QIcon iconFor(WindowId wid) const;
WindowId winIdFor(QString appId, QRect geometry) const override;

@ -397,6 +397,7 @@ QUrl XWindowInterface::windowUrl(WindowId wid) const
bool XWindowInterface::windowCanBeDragged(WindowId wid) const
{
KWindowInfo info(wid.value<WId>(), 0, NET::WM2AllowedActions);
if (info.valid()) {
WindowInfoWrap winfo = requestInfo(wid);
return (winfo.isValid()
@ -408,6 +409,21 @@ bool XWindowInterface::windowCanBeDragged(WindowId wid) const
return false;
}
bool XWindowInterface::windowCanBeMaximized(WindowId wid) const
{
KWindowInfo info(wid.value<WId>(), 0, NET::WM2AllowedActions);
if (info.valid()) {
WindowInfoWrap winfo = requestInfo(wid);
return (winfo.isValid()
&& !winfo.isMinimized()
&& info.actionSupported(NET::ActionMax)
&& !winfo.isPlasmaDesktop());
}
return false;
}
void XWindowInterface::releaseMouseEventFor(WindowId wid) const
{
auto connection = QX11Info::connection();
@ -550,6 +566,10 @@ void XWindowInterface::requestToggleMinimized(WindowId wid) const
void XWindowInterface::requestToggleMaximized(WindowId wid) const
{
if (!windowCanBeMaximized(wid)) {
return;
}
WindowInfoWrap wInfo = requestInfo(wid);
bool restore = wInfo.isMaxHoriz() && wInfo.isMaxVert();

@ -71,6 +71,7 @@ public:
void requestToggleMaximized(WindowId wid) const override;
bool windowCanBeDragged(WindowId wid) const override;
bool windowCanBeMaximized(WindowId wid) const override;
QIcon iconFor(WindowId wid) const override;
WindowId winIdFor(QString appId, QRect geometry) const override;

Loading…
Cancel
Save