aboutsummaryrefslogtreecommitdiffstats
path: root/vncviewer/MonitorIndicesParameter.h
diff options
context:
space:
mode:
authorHugo Lundin <hugo@lundin.dev>2021-07-13 13:58:12 +0200
committerHugo Lundin <hugo@lundin.dev>2021-07-16 16:09:45 +0200
commit0d43b96d1c2385fc8202462cf170d7ac7da5d2f7 (patch)
tree81c32fb5bf0c0e05918b32e53a36e58a03445ee0 /vncviewer/MonitorIndicesParameter.h
parentc084e586927ff040014d6a8ea8c519b3a9a368d2 (diff)
downloadtigervnc-0d43b96d1c2385fc8202462cf170d7ac7da5d2f7.tar.gz
tigervnc-0d43b96d1c2385fc8202462cf170d7ac7da5d2f7.zip
Add fullscreen mode for selected monitors
The user might not always want to use all monitors when in fullscreen mode, but instead only a few. This commit adds support for configuring selected monitors from command line, in the config file and graphically in the options menu. Because it might be hard to guarantee the consistency of monitor identifiers coming from third-parties (for example FLTK), it has been decided to use our own numerical identifier. This identifier is based on the monitor's positions. The mapping between this identifier and the indices used by FLTK is done by MonitorIndicesParameter.
Diffstat (limited to 'vncviewer/MonitorIndicesParameter.h')
-rw-r--r--vncviewer/MonitorIndicesParameter.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/vncviewer/MonitorIndicesParameter.h b/vncviewer/MonitorIndicesParameter.h
new file mode 100644
index 00000000..1737a5b3
--- /dev/null
+++ b/vncviewer/MonitorIndicesParameter.h
@@ -0,0 +1,44 @@
+/* Copyright 2021 Hugo Lundin <huglu@cendio.se> for Cendio AB.
+ *
+ * This 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 software 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 software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#ifndef __MONITOR_INDEX_PARAMETER_H
+#define __MONITOR_INDEX_PARAMETER_H
+
+#include <set>
+#include <vector>
+
+#include <rfb/Configuration.h>
+
+class MonitorIndicesParameter: public rfb::StringParameter {
+public:
+ MonitorIndicesParameter(const char* name_, const char* desc_, const char* v);
+ std::set<int> getParam();
+ bool setParam(std::set<int> indices);
+ bool setParam(const char* value);
+private:
+ typedef struct {
+ int x, y, w, h;
+ int fltk_index;
+ } Monitor;
+
+ bool parse_indices(const char* value, std::set<int> *indices);
+ std::vector<MonitorIndicesParameter::Monitor> monitors();
+ static int sort_cb(const void*, const void*);
+};
+
+#endif // __MONITOR_INDEX_PARAMETER_H