summaryrefslogtreecommitdiff
path: root/src/winrules.h~
diff options
context:
space:
mode:
Diffstat (limited to 'src/winrules.h~')
-rw-r--r--src/winrules.h~123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/winrules.h~ b/src/winrules.h~
new file mode 100644
index 0000000..398561d
--- /dev/null
+++ b/src/winrules.h~
@@ -0,0 +1,123 @@
+/*
+ * winrules plugin for compiz
+ *
+ * Copyright (C) 2007 Bellegarde Cedric (gnumdk (at) gmail.com)
+ * Copyright (C) 2009 Sam Spilsbury (smspillaz@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <core/core.h>
+#include <core/atoms.h>
+#include <composite/composite.h>
+#include <X11/Xatom.h>
+#include "winrules_options.h"
+
+
+class WinrulesScreen :
+ public PluginClassHandler <WinrulesScreen, CompScreen>,
+ public WinrulesOptions,
+ public ScreenInterface
+{
+ public:
+
+ WinrulesScreen (CompScreen *screen);
+
+ void
+ handleEvent (XEvent *event);
+
+ void
+ matchExpHandlerChanged ();
+
+ void
+ matchPropertyChanged (CompWindow *w);
+
+ void
+ setProtocols (unsigned int protocols,
+ Window id);
+
+ void
+ optionChanged (CompOption *option,
+ WinrulesOptions::Options num);
+};
+
+#define WINRULES_SCREEN(screen) \
+ WinrulesScreen *ws = WinrulesScreen::get(screen);
+
+class WinrulesWindow :
+ public PluginClassHandler <WinrulesWindow, CompWindow>,
+ public WindowInterface
+{
+ public:
+
+ WinrulesWindow (CompWindow *window);
+
+ CompWindow *window;
+
+ void
+ getAllowedActions (unsigned int &,
+ unsigned int &);
+
+ bool is ();
+
+ void setNoFocus (int optNum);
+
+ void setNoAlpha (int optNum);
+
+ void
+ updateState (int optNum,
+ int mask);
+
+ void
+ setAllowedActions (int optNum,
+ int action);
+
+ bool
+ matchSizeValue (CompOption::Value::Vector matches,
+ CompOption::Value::Vector widthValues,
+ CompOption::Value::Vector heightValues,
+ int *width,
+ int *height);
+
+ bool
+ matchSize (int *width,
+ int *height);
+
+ void
+ updateWindowSize (int width,
+ int height);
+
+ bool applyRules ();
+
+ unsigned int allowedActions;
+ unsigned int stateSetMask;
+ unsigned int protocolSetMask;
+
+ bool oldInputHint;
+ bool hasAlpha;
+};
+
+#define WINRULES_WINDOW(window) \
+ WinrulesWindow *ww = WinrulesWindow::get(window);
+
+class WinrulesPluginVTable:
+ public CompPlugin::VTableForScreenAndWindow <WinrulesScreen, WinrulesWindow>
+{
+ public:
+
+ bool init ();
+};