Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 : #ifndef INCLUDED_VCL_INC_UNX_GTK_GTKSYS_HXX
10 : #define INCLUDED_VCL_INC_UNX_GTK_GTKSYS_HXX
11 :
12 : #include "generic/gensys.h"
13 : #include <gtk/gtk.h>
14 : #include <unx/saltype.h>
15 : #include <deque>
16 :
17 : class GtkSalSystem : public SalGenericSystem
18 : {
19 : typedef std::deque<std::pair<GdkScreen*, int> > ScreenMonitors_t;
20 :
21 : GdkDisplay *mpDisplay;
22 : // Number of monitors for every active screen.
23 : ScreenMonitors_t maScreenMonitors;
24 : public:
25 : GtkSalSystem();
26 : virtual ~GtkSalSystem();
27 : static GtkSalSystem *GetSingleton();
28 :
29 : virtual bool IsUnifiedDisplay() SAL_OVERRIDE;
30 : virtual unsigned int GetDisplayScreenCount() SAL_OVERRIDE;
31 : virtual unsigned int GetDisplayBuiltInScreen() SAL_OVERRIDE;
32 : virtual OUString GetDisplayScreenName (unsigned int nScreen) SAL_OVERRIDE;
33 : virtual Rectangle GetDisplayScreenPosSizePixel (unsigned int nScreen) SAL_OVERRIDE;
34 : virtual int ShowNativeDialog (const OUString& rTitle,
35 : const OUString& rMessage,
36 : const std::list< OUString >& rButtons,
37 : int nDefButton) SAL_OVERRIDE;
38 16 : SalX11Screen GetDisplayDefaultXScreen()
39 16 : { return getXScreenFromDisplayScreen( GetDisplayBuiltInScreen() ); }
40 : int GetDisplayXScreenCount();
41 : SalX11Screen getXScreenFromDisplayScreen(unsigned int nDisplayScreen);
42 : void countScreenMonitors();
43 : // We have a 'screen' number that is combined from screen-idx + monitor-idx
44 : int getScreenIdxFromPtr (GdkScreen *pScreen);
45 : int getScreenMonitorIdx (GdkScreen *pScreen, int nX, int nY);
46 : GdkScreen *getScreenMonitorFromIdx (int nIdx, gint &nMonitor);
47 : };
48 :
49 : #endif // INCLUDED_VCL_INC_UNX_GTK_GTKSYS_HXX
50 :
51 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|