diff options
Diffstat (limited to 'vcl/unx/inc/plugins/gtk/gtkframe.hxx')
-rw-r--r-- | vcl/unx/inc/plugins/gtk/gtkframe.hxx | 407 |
1 files changed, 0 insertions, 407 deletions
diff --git a/vcl/unx/inc/plugins/gtk/gtkframe.hxx b/vcl/unx/inc/plugins/gtk/gtkframe.hxx deleted file mode 100644 index 1ddc9e24e4f1..000000000000 --- a/vcl/unx/inc/plugins/gtk/gtkframe.hxx +++ /dev/null @@ -1,407 +0,0 @@ -/************************************************************************* - * - * 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_GTKFRAME_HXX -#define _VCL_GTKFRAME_HXX - -#include <tools/prex.h> -#include <gtk/gtk.h> -#include <gdk/gdk.h> -#include <gdk/gdkx.h> -#include <gdk/gdkkeysyms.h> -#include <tools/postx.h> - -#include <vcl/salframe.hxx> -#include <vcl/sysdata.hxx> - -#include "tools/link.hxx" - -#include <list> -#include <vector> - -class GtkSalGraphics; -class GtkSalDisplay; - -class GtkSalFrame : public SalFrame -{ - static const int nMaxGraphics = 2; - - struct GraphicsHolder - { - GtkSalGraphics* pGraphics; - bool bInUse; - GraphicsHolder() - : pGraphics( NULL ), - bInUse( false ) - {} - ~GraphicsHolder(); - }; - - struct IMHandler - { - //-------------------------------------------------------- - // Not all GTK Input Methods swallow key release - // events. Since they swallow the key press events and we - // are left with the key release events, we need to - // manually swallow those. To do this, we keep a list of - // the previous 10 key press events in each GtkSalFrame - // and when we get a key release that matches one of the - // key press events in our list, we swallow it. - struct PreviousKeyPress - { - GdkWindow *window; - gint8 send_event; - guint32 time; - guint state; - guint keyval; - guint16 hardware_keycode; - guint8 group; - - PreviousKeyPress (GdkEventKey *event) - : window (NULL), - send_event (0), - time (0), - state (0), - keyval (0), - hardware_keycode (0), - group (0) - { - if (event) - { - window = event->window; - send_event = event->send_event; - time = event->time; - state = event->state; - keyval = event->keyval; - hardware_keycode = event->hardware_keycode; - group = event->group; - } - } - - PreviousKeyPress( const PreviousKeyPress& rPrev ) - : window( rPrev.window ), - send_event( rPrev.send_event ), - time( rPrev.time ), - state( rPrev.state ), - keyval( rPrev.keyval ), - hardware_keycode( rPrev.hardware_keycode ), - group( rPrev.group ) - {} - - bool operator== (GdkEventKey *event) const - { - return (event != NULL) - && (event->window == window) - && (event->send_event == send_event) - && (event->state == state) - && (event->keyval == keyval) - && (event->hardware_keycode == hardware_keycode) - && (event->group == group) - && (event->time - time < 3) - ; - } - }; - - - GtkSalFrame* m_pFrame; - std::list< PreviousKeyPress > m_aPrevKeyPresses; - int m_nPrevKeyPresses; // avoid using size() - GtkIMContext* m_pIMContext; - bool m_bFocused; - bool m_bPreeditJustChanged; - SalExtTextInputEvent m_aInputEvent; - std::vector< sal_uInt16 > m_aInputFlags; - - IMHandler( GtkSalFrame* ); - ~IMHandler(); - - void createIMContext(); - void deleteIMContext(); - void updateIMSpotLocation(); - void setInputContext( SalInputContext* pContext ); - void endExtTextInput( sal_uInt16 nFlags ); - bool handleKeyEvent( GdkEventKey* pEvent ); - void focusChanged( bool bFocusIn ); - - void doCallEndExtTextInput(); - void sendEmptyCommit(); - - - static void signalIMCommit( GtkIMContext*, gchar*, gpointer ); - static gboolean signalIMDeleteSurrounding( GtkIMContext*, gint, gint, gpointer ); - static void signalIMPreeditChanged( GtkIMContext*, gpointer ); - static void signalIMPreeditEnd( GtkIMContext*, gpointer ); - static void signalIMPreeditStart( GtkIMContext*, gpointer ); - static gboolean signalIMRetrieveSurrounding( GtkIMContext*, gpointer ); - }; - friend struct IMHandler; - - int m_nScreen; - GtkWidget* m_pWindow; - GdkWindow* m_pForeignParent; - GdkNativeWindow m_aForeignParentWindow; - GdkWindow* m_pForeignTopLevel; - GdkNativeWindow m_aForeignTopLevelWindow; - Pixmap m_hBackgroundPixmap; - sal_uLong m_nStyle; - SalExtStyle m_nExtStyle; - GtkFixed* m_pFixedContainer; - GtkSalFrame* m_pParent; - std::list< GtkSalFrame* > m_aChildren; - GdkWindowState m_nState; - SystemEnvData m_aSystemData; - GraphicsHolder m_aGraphics[ nMaxGraphics ]; - sal_uInt16 m_nKeyModifiers; - GdkCursor *m_pCurrentCursor; - GdkVisibilityState m_nVisibility; - PointerStyle m_ePointerStyle; - int m_nSavedScreenSaverTimeout; - guint m_nGSMCookie; - int m_nWorkArea; - bool m_bFullscreen; - bool m_bSingleAltPress; - bool m_bDefaultPos; - bool m_bDefaultSize; - bool m_bSendModChangeOnRelease; - bool m_bWindowIsGtkPlug; - bool m_bSetFocusOnMap; - String m_aTitle; - - IMHandler* m_pIMHandler; - - Size m_aMaxSize; - Size m_aMinSize; - Rectangle m_aRestorePosSize; - - GdkRegion* m_pRegion; - - void Init( SalFrame* pParent, sal_uLong nStyle ); - void Init( SystemParentData* pSysData ); - void InitCommon(); - - // signals - static gboolean signalButton( GtkWidget*, GdkEventButton*, gpointer ); - static void signalStyleSet( GtkWidget*, GtkStyle* pPrevious, gpointer ); - static gboolean signalExpose( GtkWidget*, GdkEventExpose*, gpointer ); - static gboolean signalFocus( GtkWidget*, GdkEventFocus*, gpointer ); - static gboolean signalMap( GtkWidget*, GdkEvent*, gpointer ); - static gboolean signalUnmap( GtkWidget*, GdkEvent*, gpointer ); - static gboolean signalConfigure( GtkWidget*, GdkEventConfigure*, gpointer ); - static gboolean signalMotion( GtkWidget*, GdkEventMotion*, gpointer ); - static gboolean signalKey( GtkWidget*, GdkEventKey*, gpointer ); - static gboolean signalDelete( GtkWidget*, GdkEvent*, gpointer ); - static gboolean signalState( GtkWidget*, GdkEvent*, gpointer ); - static gboolean signalScroll( GtkWidget*, GdkEvent*, gpointer ); - static gboolean signalCrossing( GtkWidget*, GdkEventCrossing*, gpointer ); - static gboolean signalVisibility( GtkWidget*, GdkEventVisibility*, gpointer ); - static void signalDestroy( GtkObject*, gpointer ); - - void Center(); - void SetDefaultSize(); - void setAutoLock( bool bLock ); - void setScreenSaverTimeout( int nTimeout ); - - void doKeyCallback( guint state, - guint keyval, - guint16 hardware_keycode, - guint8 group, - guint32 time, - sal_Unicode aOrigCode, - bool bDown, - bool bSendRelease - ); - - - GdkNativeWindow findTopLevelSystemWindow( GdkNativeWindow aWindow ); - - static int m_nFloats; - - bool isFloatGrabWindow() const - { - return - (m_nStyle & SAL_FRAME_STYLE_FLOAT) && // only a float can be floatgrab - !(m_nStyle & SAL_FRAME_STYLE_TOOLTIP) && // tool tips are not - !(m_nStyle & SAL_FRAME_STYLE_OWNERDRAWDECORATION) && // toolbars are also not - !(m_nStyle & SAL_FRAME_STYLE_FLOAT_FOCUSABLE); // focusable floats are not - } - - bool isChild( bool bPlug = true, bool bSysChild = true ) - { - sal_uLong nMask = 0; - if( bPlug ) - nMask |= SAL_FRAME_STYLE_PLUG; - if( bSysChild ) - nMask |= SAL_FRAME_STYLE_SYSTEMCHILD; - return (m_nStyle & nMask) != 0; - } - - void resizeWindow( long nWidth, long nHeight ); - void moveWindow( long nX, long nY ); - - Size calcDefaultSize(); - - void setMinMaxSize(); - void createNewWindow( XLIB_Window aParent, bool bXEmbed, int nScreen ); - void askForXEmbedFocus( sal_Int32 nTimecode ); - - DECL_LINK( ImplDelayedFullScreenHdl, void* ); -public: - GtkSalFrame( SalFrame* pParent, sal_uLong nStyle ); - GtkSalFrame( SystemParentData* pSysData ); - - // dispatches an event, returns true if dispatched - // and false else; if true was returned the event should - // be swallowed - bool Dispatch( const XEvent* pEvent ); - void grabPointer( sal_Bool bGrab, sal_Bool bOwnerEvents = sal_False ); - - GtkSalDisplay* getDisplay(); - GdkDisplay* getGdkDisplay(); - GtkWidget* getWindow() const { return m_pWindow; } - GtkFixed* getFixedContainer() const { return m_pFixedContainer; } - GdkWindow* getForeignParent() const { return m_pForeignParent; } - GdkNativeWindow getForeignParentWindow() const { return m_aForeignParentWindow; } - GdkWindow* getForeignTopLevel() const { return m_pForeignTopLevel; } - GdkNativeWindow getForeignTopLevelWindow() const { return m_aForeignTopLevelWindow; } - GdkVisibilityState getVisibilityState() const - { return m_nVisibility; } - Pixmap getBackgroundPixmap() const { return m_hBackgroundPixmap; } - int getScreenNumber() const { return m_nScreen; } - void updateScreenNumber(); - - void moveToScreen( int nScreen ); - - virtual ~GtkSalFrame(); - - // SalGraphics or NULL, but two Graphics for all SalFrames - // must be returned - virtual SalGraphics* GetGraphics(); - virtual void ReleaseGraphics( SalGraphics* pGraphics ); - - // Event must be destroyed, when Frame is destroyed - // When Event is called, SalInstance::Yield() must be returned - virtual sal_Bool PostEvent( void* pData ); - - virtual void SetTitle( const XubString& rTitle ); - virtual void SetIcon( sal_uInt16 nIcon ); - virtual void SetMenu( SalMenu *pSalMenu ); - virtual void DrawMenuBar(); - - virtual void SetExtendedFrameStyle( SalExtStyle nExtStyle ); - // Before the window is visible, a resize event - // must be sent with the correct size - virtual void Show( sal_Bool bVisible, sal_Bool bNoActivate = sal_False ); - virtual void Enable( sal_Bool bEnable ); - // Set ClientSize and Center the Window to the desktop - // and send/post a resize message - virtual void SetMinClientSize( long nWidth, long nHeight ); - virtual void SetMaxClientSize( long nWidth, long nHeight ); - virtual void SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_uInt16 nFlags ); - virtual void GetClientSize( long& rWidth, long& rHeight ); - virtual void GetWorkArea( Rectangle& rRect ); - virtual SalFrame* GetParent() const; - virtual void SetWindowState( const SalFrameState* pState ); - virtual sal_Bool GetWindowState( SalFrameState* pState ); - virtual void ShowFullScreen( sal_Bool bFullScreen, sal_Int32 nDisplay ); - // Enable/Disable ScreenSaver, SystemAgents, ... - virtual void StartPresentation( sal_Bool bStart ); - // Show Window over all other Windows - virtual void SetAlwaysOnTop( sal_Bool bOnTop ); - - // Window to top and grab focus - virtual void ToTop( sal_uInt16 nFlags ); - - // this function can call with the same - // pointer style - virtual void SetPointer( PointerStyle ePointerStyle ); - virtual void CaptureMouse( sal_Bool bMouse ); - virtual void SetPointerPos( long nX, long nY ); - - // flush output buffer - using SalFrame::Flush; - virtual void Flush(); - // flush output buffer, wait till outstanding operations are done - virtual void Sync(); - - virtual void SetInputContext( SalInputContext* pContext ); - virtual void EndExtTextInput( sal_uInt16 nFlags ); - - virtual String GetKeyName( sal_uInt16 nKeyCode ); - virtual String GetSymbolKeyName( const XubString& rFontName, sal_uInt16 nKeyCode ); - virtual sal_Bool MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType, KeyCode& rKeyCode ); - - // returns the input language used for the last key stroke - // may be LANGUAGE_DONTKNOW if not supported by the OS - virtual LanguageType GetInputLanguage(); - - virtual SalBitmap* SnapShot(); - - virtual void UpdateSettings( AllSettings& rSettings ); - - virtual void Beep( SoundType eSoundType ); - - // returns system data (most prominent: window handle) - virtual const SystemEnvData* GetSystemData() const; - - - // get current modifier and button mask - virtual SalPointerState GetPointerState(); - - // set new parent window - virtual void SetParent( SalFrame* pNewParent ); - // reparent window to act as a plugin; implementation - // may choose to use a new system window internally - // return false to indicate failure - virtual bool SetPluginParent( SystemParentData* pNewParent ); - - virtual void SetBackgroundBitmap( SalBitmap* ); - - virtual void SetScreenNumber( unsigned int ); - - // shaped system windows - // set clip region to none (-> rectangular windows, normal state) - virtual void ResetClipRegion(); - // start setting the clipregion consisting of nRects rectangles - virtual void BeginSetClipRegion( sal_uLong nRects ); - // add a rectangle to the clip region - virtual void UnionClipRegion( long nX, long nY, long nWidth, long nHeight ); - // done setting up the clipregion - virtual void EndSetClipRegion(); - - static GtkSalFrame *getFromWindow( GtkWindow *pWindow ); -}; - - -#define OOO_TYPE_FIXED ooo_fixed_get_type() - -extern "C" { - -GType ooo_fixed_get_type( void ); - -} // extern "C" - -#endif //_VCL_GTKFRAME_HXX |