summaryrefslogtreecommitdiff
path: root/vcl/inc/unx/wmadaptor.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/inc/unx/wmadaptor.hxx')
-rw-r--r--vcl/inc/unx/wmadaptor.hxx349
1 files changed, 0 insertions, 349 deletions
diff --git a/vcl/inc/unx/wmadaptor.hxx b/vcl/inc/unx/wmadaptor.hxx
deleted file mode 100644
index 7948ca04e4..0000000000
--- a/vcl/inc/unx/wmadaptor.hxx
+++ /dev/null
@@ -1,349 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _VCL_WMADAPTOR_HXX_
-#define _VCL_WMADAPTOR_HXX_
-
-#include <tools/string.hxx>
-#include <tools/gen.hxx>
-#ifndef _PREX_H
-#include <tools/prex.h>
-#include <X11/Xlib.h>
-#include <tools/postx.h>
-#endif
-#include <vclpluginapi.h>
-#include <vector>
-
-class SalDisplay;
-class X11SalFrame;
-
-namespace vcl_sal {
-
-class VCLPLUG_GEN_PUBLIC WMAdaptor
-{
-public:
- enum WMAtom {
- // atoms for types
- UTF8_STRING,
-
- // atoms for extended WM hints
- NET_SUPPORTED,
- NET_SUPPORTING_WM_CHECK,
- NET_WM_NAME,
- NET_WM_DESKTOP,
- NET_WM_ICON_NAME,
- NET_WM_PID,
- NET_WM_PING,
- NET_WM_STATE,
- NET_WM_STATE_MAXIMIZED_HORZ,
- NET_WM_STATE_MAXIMIZED_VERT,
- NET_WM_STATE_MODAL,
- NET_WM_STATE_SHADED,
- NET_WM_STATE_SKIP_PAGER,
- NET_WM_STATE_SKIP_TASKBAR,
- NET_WM_STATE_STAYS_ON_TOP,
- NET_WM_STATE_STICKY,
- NET_WM_STATE_FULLSCREEN,
- NET_WM_STRUT,
- NET_WM_STRUT_PARTIAL,
- NET_WM_USER_TIME,
- NET_WM_WINDOW_TYPE,
- NET_WM_WINDOW_TYPE_DESKTOP,
- NET_WM_WINDOW_TYPE_DIALOG,
- NET_WM_WINDOW_TYPE_DOCK,
- NET_WM_WINDOW_TYPE_MENU,
- NET_WM_WINDOW_TYPE_NORMAL,
- NET_WM_WINDOW_TYPE_TOOLBAR,
- KDE_NET_WM_WINDOW_TYPE_OVERRIDE,
- NET_WM_WINDOW_TYPE_SPLASH,
- NET_WM_WINDOW_TYPE_UTILITY,
- NET_NUMBER_OF_DESKTOPS,
- NET_CURRENT_DESKTOP,
- NET_WORKAREA,
-
- // atoms for Gnome WM hints
- WIN_SUPPORTING_WM_CHECK,
- WIN_PROTOCOLS,
- WIN_WORKSPACE_COUNT,
- WIN_WORKSPACE,
- WIN_LAYER,
- WIN_STATE,
- WIN_HINTS,
- WIN_APP_STATE,
- WIN_EXPANDED_SIZE,
- WIN_ICONS,
- WIN_WORKSPACE_NAMES,
- WIN_CLIENT_LIST,
-
- // atoms for general WM hints
- WM_STATE,
- MOTIF_WM_HINTS,
- WM_PROTOCOLS,
- WM_DELETE_WINDOW,
- WM_TAKE_FOCUS,
- WM_SAVE_YOURSELF,
- WM_CLIENT_LEADER,
- WM_COMMAND,
- WM_LOCALE_NAME,
- WM_TRANSIENT_FOR,
-
- // special atoms
- SAL_QUITEVENT,
- SAL_USEREVENT,
- SAL_EXTTEXTEVENT,
- SAL_GETTIMEEVENT,
- DTWM_IS_RUNNING,
- VCL_SYSTEM_SETTINGS,
- XSETTINGS,
- XEMBED,
- XEMBED_INFO,
- NetAtomMax
- };
-
- /*
- * flags for frame decoration
- */
- static const int decoration_Title = 0x00000001;
- static const int decoration_Border = 0x00000002;
- static const int decoration_Resize = 0x00000004;
- static const int decoration_MinimizeBtn = 0x00000008;
- static const int decoration_MaximizeBtn = 0x00000010;
- static const int decoration_CloseBtn = 0x00000020;
- static const int decoration_All = 0x10000000;
-
- /*
- * window type
- */
- enum WMWindowType
- {
- windowType_Normal,
- windowType_ModalDialogue,
- windowType_ModelessDialogue,
- windowType_Utility,
- windowType_Splash,
- windowType_Toolbar,
- windowType_Dock
- };
-
-protected:
- SalDisplay* m_pSalDisplay; // Display to use
- Display* m_pDisplay; // X Display of SalDisplay
- String m_aWMName;
- Atom m_aWMAtoms[ NetAtomMax];
- int m_nDesktops;
- bool m_bEqualWorkAreas;
- ::std::vector< Rectangle >
- m_aWMWorkAreas;
- bool m_bTransientBehaviour;
- bool m_bEnableAlwaysOnTopWorks;
- bool m_bLegacyPartialFullscreen;
- int m_nWinGravity;
- int m_nInitWinGravity;
- bool m_bWMshouldSwitchWorkspace;
- bool m_bWMshouldSwitchWorkspaceInit;
-
- WMAdaptor( SalDisplay * )
-;
- void initAtoms();
- bool getNetWmName();
-
- /*
- * returns whether this instance is useful
- * only useful for createWMAdaptor
- */
- virtual bool isValid() const;
-
- bool getWMshouldSwitchWorkspace() const;
-public:
- virtual ~WMAdaptor();
-
- /*
- * creates a vaild WMAdaptor instance for the SalDisplay
- */
- static WMAdaptor* createWMAdaptor( SalDisplay* );
-
- /*
- * may return an empty string if the window manager could
- * not be identified.
- */
- const String& getWindowManagerName() const
- { return m_aWMName; }
-
- /*
- * gets the number of workareas
- */
- int getWorkAreaCount() const
- { return m_aWMWorkAreas.size(); }
-
- /*
- * gets the current work area/desktop number: [0,m_nDesktops[ or -1 if unknown
- */
- int getCurrentWorkArea() const;
- /*
- * gets the workarea the specified window is on (or -1)
- */
- int getWindowWorkArea( XLIB_Window aWindow ) const;
- /*
- * gets the specified workarea
- */
- const Rectangle& getWorkArea( int n ) const
- { return m_aWMWorkAreas[n]; }
-
- /*
- * attemp to switch the desktop to a certain workarea
- * if bConsiderWM is true, then on some WMs the call will not result in any action
- */
- void switchToWorkArea( int nWorkArea, bool bConsiderWM = true ) const;
-
- /*
- * sets window title
- */
- virtual void setWMName( X11SalFrame* pFrame, const String& rWMName ) const;
-
- /*
- * set NET_WM_PID
- */
- virtual void setPID( X11SalFrame* pFrame ) const;
-
- /*
- * set WM_CLIENT_MACHINE
- */
- virtual void setClientMachine( X11SalFrame* pFrame ) const;
-
- virtual void answerPing( X11SalFrame*, XClientMessageEvent* ) const;
-
- /*
- * maximizes frame
- * maximization can be toggled in either direction
- * to get the original position and size
- * use maximizeFrame( pFrame, false, false )
- */
- virtual void maximizeFrame( X11SalFrame* pFrame, bool bHorizontal = true, bool bVertical = true ) const;
- /*
- * start/stop fullscreen mode on a frame
- */
- virtual void showFullScreen( X11SalFrame* pFrame, bool bFullScreen ) const;
- /*
- * tell whether legacy partial full screen handling is necessary
- * see #i107249#: NET_WM_STATE_FULLSCREEN is not well defined, but de facto
- * modern WM's interpret it the "right" way, namely they make "full screen"
- * taking twin view or Xinerama into accound and honor the positioning hints
- * to see which screen actually was meant to use for fullscreen.
- */
- bool isLegacyPartialFullscreen() const
- { return m_bLegacyPartialFullscreen; }
- /*
- * set window struts
- */
- virtual void setFrameStruts( X11SalFrame*pFrame,
- int left, int right, int top, int bottom,
- int left_start_y, int left_end_y,
- int right_start_y, int right_end_y,
- int top_start_x, int top_end_x,
- int bottom_start_x, int bottom_end_x ) const;
- /*
- * set _NET_WM_USER_TIME property, if NetWM
- */
- virtual void setUserTime( X11SalFrame* i_pFrame, long i_nUserTime ) const;
-
- /*
- * tells whether fullscreen mode is supported by WM
- */
- bool supportsFullScreen() const { return m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ] != 0; }
-
- /*
- * shade/unshade frame
- */
- virtual void shade( X11SalFrame* pFrame, bool bToShaded ) const;
-
- /*
- * set hints what decoration is needed;
- * must be called before showing the frame
- */
- virtual void setFrameTypeAndDecoration( X11SalFrame* pFrame, WMWindowType eType, int nDecorationFlags, X11SalFrame* pTransientFrame = NULL ) const;
-
- /*
- * tells whether there is WM support for splash screens
- */
- bool supportsSplash() const { return m_aWMAtoms[ NET_WM_WINDOW_TYPE_SPLASH ] != 0; }
-
- /*
- * tells whteher there is WM support for NET_WM_WINDOW_TYPE_TOOLBAR
- */
- bool supportsToolbar() const { return m_aWMAtoms[ NET_WM_WINDOW_TYPE_TOOLBAR ] != 0; }
-
- /*
- * enables always on top or equivalent if possible
- */
- virtual void enableAlwaysOnTop( X11SalFrame* pFrame, bool bEnable ) const;
-
- /*
- * tells whether enableAlwaysOnTop actually works with this WM
- */
- bool isAlwaysOnTopOK() const { return m_bEnableAlwaysOnTopWorks; }
-
- /*
- * handle WM messages (especially WM state changes)
- */
- virtual int handlePropertyNotify( X11SalFrame* pFrame, XPropertyEvent* pEvent ) const;
-
- /*
- * called by SalFrame::Show: time to update state properties
- */
- virtual void frameIsMapping( X11SalFrame* ) const;
-
- /*
- * gets a WM atom
- */
- Atom getAtom( WMAtom eAtom ) const
- { return m_aWMAtoms[ eAtom ]; }
-
- int getPositionWinGravity () const
- { return m_nWinGravity; }
- int getInitWinGravity() const
- { return m_nInitWinGravity; }
-
- /*
- * expected behaviour is that the WM will not allow transient
- * windows to get stacked behind the windows they are transient for
- */
- bool isTransientBehaviourAsExpected() const
- { return m_bTransientBehaviour; }
-
- /*
- * changes the transient hint of a window to reference frame
- * if reference frame is NULL the root window is used instead
- */
- void changeReferenceFrame( X11SalFrame* pFrame, X11SalFrame* pReferenceFrame ) const;
-};
-
-} // namespace
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */