You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

96 lines
2.1 KiB

#ifndef breezedetectwidget_h
#define breezedetectwidget_h
//////////////////////////////////////////////////////////////////////////////
// breezedetectwidget.h
// Note: this class is a stripped down version of
// /kdebase/workspace/kwin/kcmkwin/kwinrules/detectwidget.h
// SPDX-FileCopyrightText: 2004 Lubos Lunak <l.lunak@kde.org>
// -------------------
//
// SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
//
// SPDX-License-Identifier: MIT
//////////////////////////////////////////////////////////////////////////////
#include "breezesettings.h"
#include "ui_breezedetectwidget.h"
#include <QByteArray>
#include <QCheckBox>
#include <QDialog>
#include <QEvent>
#include <QLabel>
#include <kwindowsystem.h>
namespace Breeze
{
class DetectDialog : public QDialog
{
Q_OBJECT
public:
//* constructor
explicit DetectDialog(QWidget *);
//* read window properties or select one from mouse grab
void detect(WId window);
//* selected class
QByteArray selectedClass() const;
//* window information
const KWindowInfo &windowInfo() const
{
return *(m_info.data());
}
//* exception type
InternalSettings::EnumExceptionType exceptionType() const
{
if (m_ui.windowClassCheckBox->isChecked())
return InternalSettings::ExceptionWindowClassName;
else if (m_ui.windowTitleCheckBox->isChecked())
return InternalSettings::ExceptionWindowTitle;
else
return InternalSettings::ExceptionWindowClassName;
}
Q_SIGNALS:
void detectionDone(bool);
protected:
bool eventFilter(QObject *o, QEvent *e) override;
private:
//* select window from grab
void selectWindow();
//* read window properties
void readWindow(WId window);
//* find window under cursor
WId findWindow();
//* execute
void executeDialog();
//* ui
Ui::BreezeDetectWidget m_ui;
//* invisible dialog used to grab mouse
QDialog *m_grabber = nullptr;
//* current window information
QScopedPointer<KWindowInfo> m_info;
//* wm state atom
quint32 m_wmStateAtom = 0;
};
} // namespace
#endif