diff options
author | Hugo Lundin <hugo@lundin.dev> | 2021-07-13 13:58:12 +0200 |
---|---|---|
committer | Hugo Lundin <hugo@lundin.dev> | 2021-07-16 16:09:45 +0200 |
commit | 0d43b96d1c2385fc8202462cf170d7ac7da5d2f7 (patch) | |
tree | 81c32fb5bf0c0e05918b32e53a36e58a03445ee0 /vncviewer/MonitorIndicesParameter.h | |
parent | c084e586927ff040014d6a8ea8c519b3a9a368d2 (diff) | |
download | tigervnc-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.h | 44 |
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 |