[Libreoffice-commits] .: 3 commits - vcl/inc vcl/Library_vclplug_gtk3.mk vcl/Module_vcl.mk vcl/unx

Michael Meeks michael at kemper.freedesktop.org
Tue Jun 14 08:34:57 PDT 2011


 vcl/Library_vclplug_gtk3.mk                   |  128 +++++++++++++++++++
 vcl/Module_vcl.mk                             |    5 
 vcl/inc/unx/gtk/gtkdata.hxx                   |   33 +++++
 vcl/inc/unx/gtk/gtkframe.hxx                  |   18 ++
 vcl/inc/unx/gtk/gtkgdi.hxx                    |   16 ++
 vcl/inc/unx/gtk/gtkobject.hxx                 |    6 
 vcl/unx/generic/plugadapt/salplug.cxx         |    9 -
 vcl/unx/gtk/app/gtkdata.cxx                   |   30 ++++
 vcl/unx/gtk/app/gtkinst.cxx                   |   44 ++++++
 vcl/unx/gtk/window/gtkframe.cxx               |  169 +++++++++++++++++---------
 vcl/unx/gtk/window/gtkobject.cxx              |   33 +++--
 vcl/unx/gtk3/a11y/gtk3atkaction.cxx           |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkbridge.cxx           |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkcomponent.cxx        |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkeditabletext.cxx     |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkfactory.cxx          |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkhypertext.cxx        |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkimage.cxx            |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atklistener.cxx         |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkregistry.cxx         |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkselection.cxx        |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atktable.cxx            |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atktext.cxx             |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx   |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkutil.cxx             |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkvalue.cxx            |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkwindow.cxx           |   28 ++++
 vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx          |   28 ++++
 vcl/unx/gtk3/app/gtk3gtkdata.cxx              |   28 ++++
 vcl/unx/gtk3/app/gtk3gtkinst.cxx              |   28 ++++
 vcl/unx/gtk3/app/gtk3gtksys.cxx               |   28 ++++
 vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx |   28 ++++
 vcl/unx/gtk3/window/gtk3gtkframe.cxx          |   28 ++++
 vcl/unx/gtk3/window/gtk3gtkobject.cxx         |   28 ++++
 34 files changed, 1057 insertions(+), 78 deletions(-)

New commits:
commit 4588683845a49b2f37960fc2f24e705abd4dcb80
Author: Michael Meeks <michael.meeks at novell.com>
Date:   Tue Jun 14 14:29:11 2011 +0100

    Various fixes and stubs for gtk+ >= 3.0

diff --git a/vcl/Library_vclplug_gtk3.mk b/vcl/Library_vclplug_gtk3.mk
index 7fff263..83fb830 100644
--- a/vcl/Library_vclplug_gtk3.mk
+++ b/vcl/Library_vclplug_gtk3.mk
@@ -114,7 +114,6 @@ $(eval $(call gb_Library_add_exception_objects,vclplug_gtk3,\
     vcl/unx/gtk3/app/gtk3gtkdata \
     vcl/unx/gtk3/app/gtk3gtkinst \
     vcl/unx/gtk3/app/gtk3gtksys \
-    vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk \
     vcl/unx/gtk3/window/gtk3gtkframe \
     vcl/unx/gtk3/window/gtk3gtkobject \
 ))
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index 6fdad96..c943192 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -30,9 +30,12 @@
 #define _VCL_GTKFRAME_HXX
 
 #include <tools/prex.h>
-#include <gtk/gtk.h>
 #include <gdk/gdk.h>
 #include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+#if GTK_CHECK_VERSION(3,0,0)
+#  include <gtk/gtkx.h>
+#endif
 #include <gdk/gdkkeysyms.h>
 #include <tools/postx.h>
 
@@ -47,6 +50,13 @@
 class GtkSalGraphics;
 class GtkSalDisplay;
 
+#if GTK_CHECK_VERSION(3,0,0)
+typedef XLIB_Window GdkNativeWindow;
+#define GDK_WINDOW_XWINDOW(o) GDK_WINDOW_XID(o)
+#define gdk_set_sm_client_id(i) gdk_x11_set_sm_client_id(i)
+#define gdk_window_foreign_new_for_display(a,b) gdk_x11_window_foreign_new_for_display(a,b)
+#endif
+
 class GtkSalFrame : public SalFrame
 {
     static const int nMaxGraphics = 2;
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 7597ac1..98c3f10 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -37,13 +37,25 @@
 
 #include <unx/salgdi.h>
 
+#if GTK_CHECK_VERSION(3,0,0)
+
+// Disabled for gtk3 - use legacy theming code
+#define GTK_GRAPHICS_DISABLED
+class GtkSalFrame;
+class GtkSalGraphics : public X11SalGraphics {
+public:
+    GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow );
+};
+
+#else
+
 class GtkSalGraphics : public X11SalGraphics
 {
     GtkWidget           *m_pWindow;
     Region               m_aClipRegion;
 
 public:
-                        GtkSalGraphics( GtkWidget *window )
+                         GtkSalGraphics( GtkSalFrame *, GtkWidget *window )
                             : m_pWindow( window ),
                               m_aClipRegion( REGION_NULL )
                               {}
@@ -183,6 +195,8 @@ protected:
                             const OUString& rCaption );
 };
 
+#endif // !gtk3
+
 #endif // _VCL_GTKGDI_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index 8eee53d..2be7c84 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -283,12 +283,19 @@ void GtkSalDisplay::initScreen( int nScreen ) const
     ScreenData& rSD = const_cast<ScreenData&>(m_aScreens[nScreen]);
     if( rSD.m_bInit )
         return;
-    
+
     // choose visual for screen
     SalDisplay::initScreen( nScreen );
+
+#if GTK_CHECK_VERSION(3,0,0)
+    // no colormaps handling in gtk 3
+#else
     // now set a gdk default colormap matching the chosen visual to the screen
-    GdkVisual* pVis = gdkx_visual_get( rSD.m_aVisual.visualid );
     GdkScreen* pScreen = gdk_display_get_screen( m_pGdkDisplay, nScreen );
+//  should really use this:
+//  GdkVisual* pVis = gdk_x11_screen_lookup_visual_get( screen, rSD.m_aVisual.visualid );
+//  and not this:
+    GdkVisual* pVis = gdkx_visual_get( rSD.m_aVisual.visualid );
     if( pVis )
     {
         GdkColormap* pDefCol = gdk_screen_get_default_colormap( pScreen );
@@ -306,6 +313,7 @@ void GtkSalDisplay::initScreen( int nScreen ) const
     else
         fprintf( stderr, "not GdkVisual for visual id %d\n", (int)rSD.m_aVisual.visualid );
     #endif
+#endif
 }
 
 long GtkSalDisplay::Dispatch( XEvent* pEvent )
@@ -330,6 +338,21 @@ GdkCursor* GtkSalDisplay::getFromXPM( const unsigned char *pBitmap,
                                       int nWidth, int nHeight,
                                       int nXHot, int nYHot )
 {
+#if GTK_CHECK_VERSION(3,0,0)
+    g_warning ("FIXME: to use gdk_cursor_new_from_pixbuf instead of spiders");
+    // We need to do something like:
+    /*
+    GdkPixbuf *pPix = gdk_pixbuf_new_from_xpm_data (pBitmap);
+    GdkPixbuf *pMask = gdk_pixbuf_new_from_xpm_data (pMask);
+
+    GdkCursor* gdk_cursor_new_from_pixbuf	 (GdkDisplay      *display,
+                    GdkPixbuf       *pixbuf,
+                    gint             x,
+                    gint             y);
+    */
+    return gdk_cursor_new_for_display (gdk_display_get_default(),
+                                       GDK_SPIDER);
+#else
     GdkScreen *pScreen = gdk_display_get_default_screen( m_pGdkDisplay );
     GdkDrawable *pDrawable = GDK_DRAWABLE( gdk_screen_get_root_window (pScreen) );
     GdkBitmap *pBitmapPix = gdk_bitmap_create_from_data
@@ -347,6 +370,7 @@ GdkCursor* GtkSalDisplay::getFromXPM( const unsigned char *pBitmap,
     return gdk_cursor_new_from_pixmap
             ( pBitmapPix, pMaskPix,
               &aBlack, &aWhite, nXHot, nYHot);
+#endif
 }
 
 #define MAKE_CURSOR( vcl_name, name ) \
@@ -590,7 +614,9 @@ void GtkXLib::Init()
 #endif
     XrmInitialize();
 
+#if !GTK_CHECK_VERSION(3,0,0)
     gtk_set_locale();
+#endif
 
     /*
      * open connection to X11 Display
diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx
index 1fc1cce..745f6a0 100644
--- a/vcl/unx/gtk/app/gtkinst.cxx
+++ b/vcl/unx/gtk/app/gtkinst.cxx
@@ -161,8 +161,12 @@ extern "C"
         if ( hookLocks( pModule ) )
             pYieldMutex = new GtkHookedYieldMutex();
         else
+#if GTK_CHECK_VERSION(3,0,0)
+            g_error ("impossible case for gtk3");
+#else
             pYieldMutex = new GtkYieldMutex();
-                
+#endif
+
         gdk_threads_init();
 
         GtkInstance* pInstance = new GtkInstance( pYieldMutex );
@@ -206,7 +210,7 @@ SalObject* GtkInstance::CreateObject( SalFrame* pParent, SystemWindowData* pWind
     // so we need the X11SalObject in that case
     if( pWindowData )
         return X11SalObject::CreateObject( pParent, pWindowData, bShow );
-    
+
     return new GtkSalObject( static_cast<GtkSalFrame*>(pParent), bShow );
 }
 
@@ -251,12 +255,23 @@ void GtkInstance::AddToRecentDocumentList(const rtl::OUString& rFileUrl, const r
 #endif
 }
 
+
+/*
+ * Obsolete, non-working, and crufty code from the
+ * beginning of time. When we update our base platform
+ * we should kill this with extreme prejudice.
+ */
+#if !GTK_CHECK_VERSION(3,0,0)
+#  define HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
+#endif
+
 GtkYieldMutex::GtkYieldMutex()
 {
 }
 
 void GtkYieldMutex::acquire()
 {
+#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
     oslThreadIdentifier aCurrentThread = osl::Thread::getCurrentIdentifier();
     // protect member manipulation
     SolarMutexObject::acquire();
@@ -276,10 +291,14 @@ void GtkYieldMutex::acquire()
     mnCount = 1;
     mnThreadId = aCurrentThread;
     SolarMutexObject::release();
+#else
+    g_error ("never called");
+#endif
 }
 
 void GtkYieldMutex::release()
 {
+#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
     oslThreadIdentifier aCurrentThread = osl::Thread::getCurrentIdentifier();
     // protect member manipulation
     SolarMutexObject::acquire();
@@ -294,10 +313,14 @@ void GtkYieldMutex::release()
         }
     }
     SolarMutexObject::release();
+#else
+    g_error ("never called");
+#endif
 }
 
 sal_Bool GtkYieldMutex::tryToAcquire()
 {
+#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
     oslThreadIdentifier aCurrentThread = osl::Thread::getCurrentIdentifier();
     // protect member manipulation
     SolarMutexObject::acquire();
@@ -321,18 +344,22 @@ sal_Bool GtkYieldMutex::tryToAcquire()
     // how to we do a try_lock without having a gdk_threads_try_enter ?
     if( ! g_mutex_trylock( gdk_threads_mutex ) )
         return sal_False;
-    
+
     // obtained gdk mutex, now lock count is one by definition
     SolarMutexObject::acquire();
     mnCount = 1;
     mnThreadId = aCurrentThread;
     SolarMutexObject::release();
-    
+
+#else
+    g_error ("never called");
+#endif
     return sal_True;
 }
 
 int GtkYieldMutex::Grab()
 {
+#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
     // this MUST only be called by gdk/gtk callbacks:
     // they are entered with gdk mutex locked; the mutex
     // was unlocked by GtkYieldMutex befor yielding which
@@ -353,10 +380,15 @@ int GtkYieldMutex::Grab()
     mnCount = 1;
     SolarMutexObject::release();
     return nRet;
+#else
+    g_error ("never called");
+    return sal_True;
+#endif
 }
 
 void GtkYieldMutex::Ungrab( int nGrabs )
 {
+#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
     // this MUST only be called when leaving the callback
     // that locked the mutex with Grab()
     SolarMutexObject::acquire();
@@ -364,6 +396,10 @@ void GtkYieldMutex::Ungrab( int nGrabs )
     if( mnCount == 0 )
         mnThreadId = 0;
     SolarMutexObject::release();
+#else
+    (void)nGrabs;
+    g_error ("never called");
+#endif
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index b132180..c9afac2 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -65,6 +65,10 @@
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
 #include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
 
+#if GTK_CHECK_VERSION(3,0,0)
+#  include <gdk/gdkkeysyms-compat.h>
+#endif
+
 #ifdef ENABLE_DBUS
 #include <dbus/dbus-glib.h>
 
@@ -930,10 +934,14 @@ void GtkSalFrame::Init( SystemParentData* pSysData )
     m_aForeignTopLevelWindow = findTopLevelSystemWindow( (GdkNativeWindow)pSysData->aWindow );
     m_pForeignTopLevel = gdk_window_foreign_new_for_display( getGdkDisplay(), m_aForeignTopLevelWindow );
     gdk_window_set_events( m_pForeignTopLevel, GDK_STRUCTURE_MASK );
-        
+
     if( pSysData->nSize > sizeof(pSysData->nSize)+sizeof(pSysData->aWindow) && pSysData->bXEmbedSupport )
     {
+#if GTK_CHECK_VERSION(3,0,0)
+        m_pWindow = gtk_plug_new_for_display( getGdkDisplay(), pSysData->aWindow );
+#else
         m_pWindow = gtk_plug_new( pSysData->aWindow );
+#endif
         m_bWindowIsGtkPlug  = true;
         widget_set_can_default( m_pWindow, true );
         widget_set_can_focus( m_pWindow, true );
@@ -1010,7 +1018,7 @@ SalGraphics* GtkSalFrame::GetGraphics()
                 m_aGraphics[i].bInUse = true;
                 if( ! m_aGraphics[i].pGraphics )
                 {
-                    m_aGraphics[i].pGraphics = new GtkSalGraphics( m_pWindow );
+                    m_aGraphics[i].pGraphics = new GtkSalGraphics( this, m_pWindow );
                     m_aGraphics[i].pGraphics->Init( this, GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)), m_nScreen );
                 }
                 return m_aGraphics[i].pGraphics;
@@ -2357,8 +2365,10 @@ void GtkSalFrame::UpdateSettings( AllSettings& rSettings )
         bFreeGraphics = true;
     }
 
-    pGraphics->updateSettings( rSettings );    
-    
+#ifndef GTK_GRAPHICS_DISABLED
+    pGraphics->updateSettings( rSettings );
+#endif
+
     if( bFreeGraphics )
         ReleaseGraphics( pGraphics );
 }
@@ -2476,7 +2486,9 @@ void GtkSalFrame::createNewWindow( XLIB_Window aNewParent, bool bXEmbed, int nSc
         if( m_aGraphics[i].bInUse )
         {
             m_aGraphics[i].pGraphics->SetDrawable( GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)), m_nScreen );
+#ifndef GTK_GRAPHICS_DISABLED
             m_aGraphics[i].pGraphics->SetWindow( m_pWindow );
+#endif
         }
     }
     
@@ -3228,13 +3240,15 @@ void GtkSalFrame::signalStyleSet( GtkWidget*, GtkStyle* pPrevious, gpointer fram
                                         aWin,
                                         pThis->m_hBackgroundPixmap );
     }
-    
+
+#ifndef GTK_GRAPHICS_DISABLED
     if( ! pThis->m_pParent )
     {
         // signalize theme changed for NWF caches
         // FIXME: should be called only once for a style change
         GtkSalGraphics::bThemeChanged = sal_True;
     }
+#endif
 }
 
 gboolean GtkSalFrame::signalState( GtkWidget*, GdkEvent* pEvent, gpointer frame )
@@ -3242,7 +3256,7 @@ gboolean GtkSalFrame::signalState( GtkWidget*, GdkEvent* pEvent, gpointer frame
     GtkSalFrame* pThis = (GtkSalFrame*)frame;
     if( (pThis->m_nState & GDK_WINDOW_STATE_ICONIFIED) != (pEvent->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED ) )
         pThis->getDisplay()->SendInternalEvent( pThis, NULL, SALEVENT_RESIZE );
-        
+
     if(   (pEvent->window_state.new_window_state & GDK_WINDOW_STATE_MAXIMIZED) &&
         ! (pThis->m_nState & GDK_WINDOW_STATE_MAXIMIZED) )
     {
@@ -3838,4 +3852,17 @@ gboolean GtkSalFrame::IMHandler::signalIMDeleteSurrounding( GtkIMContext*, gint
     return sal_False;
 }
 
+#ifdef GTK_GRAPHICS_DISABLED
+
+void GtkData::initNWF() {}
+void GtkData::deInitNWF() {}
+
+GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
+    : X11SalGraphics()
+{
+    Init( pFrame, GDK_WINDOW_XID( widget_get_window( pWindow ) ),
+          gdk_x11_screen_get_screen_number( gtk_widget_get_screen( pWindow ) ) );
+}
+
+#endif
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk/window/gtkobject.cxx b/vcl/unx/gtk/window/gtkobject.cxx
index c02f3f5..bc9057a 100644
--- a/vcl/unx/gtk/window/gtkobject.cxx
+++ b/vcl/unx/gtk/window/gtkobject.cxx
@@ -41,7 +41,7 @@
 #include <unx/gtk/gtkinst.hxx>
 #include <unx/gtk/gtkgdi.hxx>
 
-GtkSalObject::GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow ) 
+GtkSalObject::GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow )
         : m_pSocket( NULL ),
           m_pRegion( NULL )
 {
commit 1da9e642d93861ec3d6ef9c889efcd895f3fab12
Author: Michael Meeks <michael.meeks at novell.com>
Date:   Tue Jun 14 14:07:28 2011 +0100

    add makefile to build gtk3 pieces

diff --git a/vcl/Library_vclplug_gtk3.mk b/vcl/Library_vclplug_gtk3.mk
new file mode 100644
index 0000000..7fff263
--- /dev/null
+++ b/vcl/Library_vclplug_gtk3.mk
@@ -0,0 +1,129 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+$(eval $(call gb_Library_Library,vclplug_gtk3))
+
+$(eval $(call gb_Library_set_include,vclplug_gtk3,\
+    $$(INCLUDE) \
+    -I$(SRCDIR)/vcl/inc \
+    -I$(SRCDIR)/vcl/inc/pch \
+    -I$(SRCDIR)/solenv/inc \
+    -I$(OUTDIR)/inc/offuh \
+    -I$(OUTDIR)/inc \
+))
+
+$(eval $(call gb_Library_set_cxxflags,vclplug_gtk3,\
+    $$(CXXFLAGS) \
+    $$(GTK3_CFLAGS) \
+))
+
+$(eval $(call gb_Library_set_defs,vclplug_gtk3,\
+    $$(DEFS) \
+    -DVCLPLUG_GTK_IMPLEMENTATION \
+    -DVERSION=\"$(UPD)$(LAST_MINOR)\" \
+))
+
+ifneq ($(ENABLE_DBUS),)
+$(eval $(call gb_Library_set_include,vclplug_gtk3,\
+	$$(INCLUDE) \
+	$(filter -I%,$(shell pkg-config --cflags dbus-glib-1)) \
+))
+$(eval $(call gb_Library_set_defs,vclplug_gtk3,\
+    $$(DEFS) \
+    -DENABLE_DBUS \
+))
+$(eval $(call gb_Library_set_ldflags,vclplug_gtk3,\
+    $$(LDFLAGS) \
+    $(shell pkg-config --libs dbus-glib-1)\
+))
+endif
+
+$(eval $(call gb_Library_set_ldflags,vclplug_gtk3,\
+    $$(LDFLAGS) \
+    $$(GTK3_LIBS) \
+    $$(GTHREAD_LIBS) \
+))
+
+$(eval $(call gb_Library_add_linked_libs,vclplug_gtk3,\
+    vclplug_gen \
+    vcl \
+    tl \
+    utl \
+    sot \
+    ucbhelper \
+    basegfx \
+    comphelper \
+    cppuhelper \
+    icuuc \
+    icule \
+    i18nisolang1 \
+    i18npaper \
+    i18nutil \
+    jvmaccess \
+    cppu \
+    sal \
+    X11 \
+    Xext \
+    SM \
+    ICE \
+    $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,vclplug_gtk3,\
+    vcl/unx/gtk3/a11y/gtk3atkaction \
+    vcl/unx/gtk3/a11y/gtk3atkbridge \
+    vcl/unx/gtk3/a11y/gtk3atkcomponent \
+    vcl/unx/gtk3/a11y/gtk3atkeditabletext \
+    vcl/unx/gtk3/a11y/gtk3atkfactory \
+    vcl/unx/gtk3/a11y/gtk3atkhypertext \
+    vcl/unx/gtk3/a11y/gtk3atkimage \
+    vcl/unx/gtk3/a11y/gtk3atklistener \
+    vcl/unx/gtk3/a11y/gtk3atkregistry \
+    vcl/unx/gtk3/a11y/gtk3atkselection \
+    vcl/unx/gtk3/a11y/gtk3atktable \
+    vcl/unx/gtk3/a11y/gtk3atktextattributes \
+    vcl/unx/gtk3/a11y/gtk3atktext \
+    vcl/unx/gtk3/a11y/gtk3atkutil \
+    vcl/unx/gtk3/a11y/gtk3atkvalue \
+    vcl/unx/gtk3/a11y/gtk3atkwindow \
+    vcl/unx/gtk3/a11y/gtk3atkwrapper \
+    vcl/unx/gtk3/app/gtk3gtkdata \
+    vcl/unx/gtk3/app/gtk3gtkinst \
+    vcl/unx/gtk3/app/gtk3gtksys \
+    vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk \
+    vcl/unx/gtk3/window/gtk3gtkframe \
+    vcl/unx/gtk3/window/gtk3gtkobject \
+))
+
+ifeq ($(OS),LINUX)
+$(eval $(call gb_Library_add_linked_libs,vclplug_gtk3,\
+    dl \
+    m \
+    pthread \
+))
+endif
+# vim: set noet sw=4 ts=4:
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 446bf36..c462e4e 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -48,6 +48,11 @@ $(eval $(call gb_Module_add_targets,vcl,\
     Library_vclplug_gtk \
 ))
 endif
+ifneq ($(ENABLE_GTK3),)
+$(eval $(call gb_Module_add_targets,vcl,\
+    Library_vclplug_gtk3 \
+))
+endif
 ifneq ($(ENABLE_KDE),)
 $(eval $(call gb_Module_add_targets,vcl,\
     Library_vclplug_kde \
commit f40c67743c6f33b5959e99ce2aea2cad49b8eac6
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Jun 14 13:56:27 2011 +0100

    Prepare for gtk3

diff --git a/vcl/inc/unx/gtk/gtkdata.hxx b/vcl/inc/unx/gtk/gtkdata.hxx
index e442628..a14782c 100644
--- a/vcl/inc/unx/gtk/gtkdata.hxx
+++ b/vcl/inc/unx/gtk/gtkdata.hxx
@@ -41,6 +41,39 @@
 
 #include <list>
 
+inline GdkWindow * widget_get_window(GtkWidget *widget)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+    return gtk_widget_get_window(widget);
+#else
+    return widget->window;
+#endif
+}
+
+inline void widget_set_can_focus(GtkWidget *widget, gboolean can_focus)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+    return gtk_widget_set_can_focus(widget, can_focus);
+#else
+    if (can_focus)
+        GTK_WIDGET_SET_FLAGS( widget, GTK_CAN_FOCUS );
+    else
+        GTK_WIDGET_UNSET_FLAGS( widget, GTK_CAN_FOCUS );
+#endif
+}
+
+inline void widget_set_can_default(GtkWidget *widget, gboolean can_default)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+    return gtk_widget_set_can_default(widget, can_default);
+#else
+    if (can_default)
+        GTK_WIDGET_SET_FLAGS( widget, GTK_CAN_DEFAULT );
+    else
+        GTK_WIDGET_UNSET_FLAGS( widget, GTK_CAN_DEFAULT );
+#endif
+}
+
 class GtkData : public X11SalData
 {
 public:
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index b35655b..6fdad96 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -199,7 +199,11 @@ class GtkSalFrame : public SalFrame
     Size                            m_aMinSize;
     Rectangle                       m_aRestorePosSize;
 
+#if GTK_CHECK_VERSION(3,0,0)
+    cairo_region_t*		            m_pRegion;
+#else
     GdkRegion*			            m_pRegion;
+#endif
 
     void Init( SalFrame* pParent, sal_uLong nStyle );
     void Init( SystemParentData* pSysData );
@@ -220,7 +224,7 @@ class GtkSalFrame : public SalFrame
     static gboolean		signalScroll( GtkWidget*, GdkEvent*, gpointer );
     static gboolean		signalCrossing( GtkWidget*, GdkEventCrossing*, gpointer );
     static gboolean		signalVisibility( GtkWidget*, GdkEventVisibility*, gpointer );
-    static void			signalDestroy( GtkObject*, gpointer );
+    static void			signalDestroy( GtkWidget*, gpointer );
 
     void			Center();
     void			SetDefaultSize();
diff --git a/vcl/inc/unx/gtk/gtkobject.hxx b/vcl/inc/unx/gtk/gtkobject.hxx
index 2f78fa6..5b1e3e5 100644
--- a/vcl/inc/unx/gtk/gtkobject.hxx
+++ b/vcl/inc/unx/gtk/gtkobject.hxx
@@ -38,12 +38,16 @@ class GtkSalObject : public SalObject
 {
     SystemChildData		m_aSystemData;
     GtkWidget*			m_pSocket;
+#if GTK_CHECK_VERSION(3,0,0)
+    cairo_region_t*		m_pRegion;
+#else
     GdkRegion*			m_pRegion;
+#endif
 
     // signals
     static gboolean		signalButton( GtkWidget*, GdkEventButton*, gpointer );
     static gboolean		signalFocus( GtkWidget*, GdkEventFocus*, gpointer );
-    static void			signalDestroy( GtkObject*, gpointer );
+    static void			signalDestroy( GtkWidget*, gpointer );
 public:
     GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow = sal_True );
     virtual ~GtkSalObject();
diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
index de7a281..2e78e11 100644
--- a/vcl/unx/generic/plugadapt/salplug.cxx
+++ b/vcl/unx/generic/plugadapt/salplug.cxx
@@ -84,7 +84,8 @@ static SalInstance* tryInstance( const OUString& rModuleBase )
                  * So make sure libgtk+ & co are still mapped into memory when
                  * atk-bridge's atexit handler gets called.
                  */
-                if( rModuleBase.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("gtk")) )
+                if( rModuleBase.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("gtk")) ||
+                    rModuleBase.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("gtk3")) )
                 {
                     pCloseModule = NULL;
                 }
@@ -147,12 +148,12 @@ static SalInstance* autodetect_plugin()
 {
     static const char* pKDEFallbackList[] =
     {
-        "kde4", "kde", "gtk", "gen", 0
+        "kde4", "kde", "gtk3", "gtk", "gen", 0
     };
 
     static const char* pStandardFallbackList[] =
     {
-        "gtk", "gen", 0
+        "gtk3", "gtk", "gen", 0
     };
 
     static const char* pHeadlessFallbackList[] =
@@ -223,7 +224,7 @@ SalInstance *CreateSalInstance()
         pInst = autodetect_plugin();
 
     // fallback, try everything
-    const char* pPlugin[] = { "gtk", "kde4", "kde", "gen", 0 };
+    const char* pPlugin[] = { "gtk3", "gtk", "kde4", "kde", "gen", 0 };
 
     for ( int i = 0; !pInst && pPlugin[ i ]; ++i )
         pInst = tryInstance( OUString::createFromAscii( pPlugin[ i ] ) );
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index 253e91a..b132180 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -80,6 +80,14 @@
 #define GDK_META_MASK       (1 << 28)
 #endif
 
+#if GTK_CHECK_VERSION(3,0,0)
+#define IS_WIDGET_REALIZED gtk_widget_get_realized
+#define IS_WIDGET_MAPPED   gtk_widget_get_mapped
+#else
+#define IS_WIDGET_REALIZED GTK_WIDGET_REALIZED
+#define IS_WIDGET_MAPPED   GTK_WIDGET_MAPPED
+#endif
+
 using namespace com::sun::star;
 
 int GtkSalFrame::m_nFloats = 0;
@@ -432,12 +440,18 @@ GtkSalFrame::~GtkSalFrame()
     getDisplay()->deregisterFrame( this );
     
     if( m_pRegion )
+    {
+#if GTK_CHECK_VERSION(3,0,0)
+        cairo_region_destroy( m_pRegion );
+#else
         gdk_region_destroy( m_pRegion );
+#endif
+    }
 
     if( m_hBackgroundPixmap )
     {
         XSetWindowBackgroundPixmap( getDisplay()->GetDisplay(),
-                                    GDK_WINDOW_XWINDOW(m_pWindow->window),
+                                    GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                                     None );
         XFreePixmap( getDisplay()->GetDisplay(), m_hBackgroundPixmap );
     }
@@ -595,7 +609,7 @@ void GtkSalFrame::InitCommon()
     SalDisplay* pDisp = GetX11SalData()->GetDisplay();
     m_aSystemData.nSize 		= sizeof( SystemChildData );
     m_aSystemData.pDisplay		= pDisp->GetDisplay();
-    m_aSystemData.aWindow		= GDK_WINDOW_XWINDOW(m_pWindow->window);
+    m_aSystemData.aWindow		= GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow));
     m_aSystemData.pSalFrame		= this;
     m_aSystemData.pWidget		= m_pWindow;
     m_aSystemData.pVisual		= pDisp->GetVisual( m_nScreen ).GetVisual();
@@ -647,7 +661,7 @@ void GtkSalFrame::InitCommon()
     *  some paint issues
     */
     XSetWindowBackgroundPixmap( getDisplay()->GetDisplay(),
-                                GDK_WINDOW_XWINDOW(m_pWindow->window),
+                                GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                                 m_hBackgroundPixmap );
 }
 
@@ -681,7 +695,7 @@ static void lcl_set_accept_focus( GtkWindow* pWindow, gboolean bAccept, bool bBe
     else if( ! bBeforeRealize )
     {
         Display* pDisplay = GetX11SalData()->GetDisplay()->GetDisplay();
-        XLIB_Window aWindow = GDK_WINDOW_XWINDOW( GTK_WIDGET(pWindow)->window );
+        XLIB_Window aWindow = GDK_WINDOW_XWINDOW( widget_get_window(GTK_WIDGET(pWindow)) );
         XWMHints* pHints = XGetWMHints( pDisplay, aWindow );
         if( ! pHints )
         {
@@ -867,7 +881,7 @@ void GtkSalFrame::Init( SalFrame* pParent, sal_uLong nStyle )
             /* #i99360# ugly workaround an X11 library bug */
             nUserTime= getDisplay()->GetLastUserEventTime( true );
         }
-        lcl_set_user_time(GTK_WIDGET(m_pWindow)->window, nUserTime);
+        lcl_set_user_time(widget_get_window(GTK_WIDGET(m_pWindow)), nUserTime);
     }
 
     if( bDecoHandling )
@@ -921,7 +935,8 @@ void GtkSalFrame::Init( SystemParentData* pSysData )
     {
         m_pWindow = gtk_plug_new( pSysData->aWindow );
         m_bWindowIsGtkPlug  = true;
-        GTK_WIDGET_SET_FLAGS( m_pWindow, GTK_CAN_FOCUS | GTK_SENSITIVE | GTK_CAN_DEFAULT );
+        widget_set_can_default( m_pWindow, true );
+        widget_set_can_focus( m_pWindow, true );
         gtk_widget_set_sensitive( m_pWindow, true );
     }
     else
@@ -946,7 +961,7 @@ void GtkSalFrame::Init( SystemParentData* pSysData )
     if( ! m_bWindowIsGtkPlug )
     {
         XReparentWindow( getDisplay()->GetDisplay(),
-                         GDK_WINDOW_XWINDOW(m_pWindow->window),
+                         GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                          (XLIB_Window)pSysData->aWindow,
                          0, 0 );
     }
@@ -996,7 +1011,7 @@ SalGraphics* GtkSalFrame::GetGraphics()
                 if( ! m_aGraphics[i].pGraphics )
                 {
                     m_aGraphics[i].pGraphics = new GtkSalGraphics( m_pWindow );
-                    m_aGraphics[i].pGraphics->Init( this, GDK_WINDOW_XWINDOW(m_pWindow->window), m_nScreen );
+                    m_aGraphics[i].pGraphics->Init( this, GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)), m_nScreen );
                 }
                 return m_aGraphics[i].pGraphics;
             }
@@ -1289,7 +1304,7 @@ void GtkSalFrame::Show( sal_Bool bVisible, sal_Bool bNoActivate )
             setMinMaxSize();
             
             // #i45160# switch to desktop where a dialog with parent will appear
-            if( m_pParent && m_pParent->m_nWorkArea != m_nWorkArea && GTK_WIDGET_MAPPED(m_pParent->m_pWindow) )
+            if( m_pParent && m_pParent->m_nWorkArea != m_nWorkArea && IS_WIDGET_MAPPED(m_pParent->m_pWindow) )
                 getDisplay()->getWMAdaptor()->switchToWorkArea( m_pParent->m_nWorkArea );
             
             if( isFloatGrabWindow() &&
@@ -1340,7 +1355,7 @@ void GtkSalFrame::Show( sal_Bool bVisible, sal_Bool bNoActivate )
                 nUserTime= getDisplay()->GetLastUserEventTime( true );
                 //nUserTime = gdk_x11_get_server_time(GTK_WIDGET (m_pWindow)->window);
             }
-            lcl_set_user_time( GTK_WIDGET(m_pWindow)->window, nUserTime );
+            lcl_set_user_time( widget_get_window(GTK_WIDGET(m_pWindow)), nUserTime );
             
             if( ! bNoActivate && (m_nStyle & SAL_FRAME_STYLE_TOOLWINDOW) )
                 m_bSetFocusOnMap = true;
@@ -1449,7 +1464,7 @@ void GtkSalFrame::SetMaxClientSize( long nWidth, long nHeight )
     {
         m_aMaxSize = Size( nWidth, nHeight );
         // Show does a setMinMaxSize
-        if( GTK_WIDGET_MAPPED( m_pWindow ) )
+        if( IS_WIDGET_MAPPED( m_pWindow ) )
             setMinMaxSize();
     }
 }
@@ -1462,7 +1477,7 @@ void GtkSalFrame::SetMinClientSize( long nWidth, long nHeight )
         {
             gtk_widget_set_size_request( m_pWindow, nWidth, nHeight );
             // Show does a setMinMaxSize
-            if( GTK_WIDGET_MAPPED( m_pWindow ) )
+            if( IS_WIDGET_MAPPED( m_pWindow ) )
                 setMinMaxSize();
         }
     }
@@ -1708,7 +1723,7 @@ void GtkSalFrame::moveToScreen( int nScreen )
         gtk_widget_realize( m_pWindow );
         // update system data
         GtkSalDisplay* pDisp = getDisplay();
-        m_aSystemData.aWindow		= GDK_WINDOW_XWINDOW(m_pWindow->window);
+        m_aSystemData.aWindow		= GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow));
         m_aSystemData.pVisual		= pDisp->GetVisual( m_nScreen ).GetVisual();
         m_aSystemData.nScreen		= nScreen;
         m_aSystemData.nDepth		= pDisp->GetVisual( m_nScreen ).GetDepth();
@@ -1719,7 +1734,7 @@ void GtkSalFrame::moveToScreen( int nScreen )
         for( unsigned int i = 0; i < SAL_N_ELEMENTS(m_aGraphics); i++ )
         {
             if( m_aGraphics[i].bInUse )
-                m_aGraphics[i].pGraphics->SetDrawable( GDK_WINDOW_XWINDOW(m_pWindow->window), m_nScreen );
+                m_aGraphics[i].pGraphics->SetDrawable( GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)), m_nScreen );
         }
         updateScreenNumber();
     }
@@ -1748,7 +1763,7 @@ void GtkSalFrame::SetScreenNumber( unsigned int nNewScreen )
             
             Rectangle aOldScreenRect( pDisp->GetXineramaScreens()[maGeometry.nScreenNumber] );
             Rectangle aNewScreenRect( pDisp->GetXineramaScreens()[nNewScreen] );
-            bool bVisible = GTK_WIDGET_MAPPED(m_pWindow);
+            bool bVisible = IS_WIDGET_MAPPED(m_pWindow);
             if( bVisible )
                 Show( sal_False );
             maGeometry.nX = aNewScreenRect.Left() + (maGeometry.nX - aOldScreenRect.Left());
@@ -1773,14 +1788,14 @@ void GtkSalFrame::updateWMClass()
     rtl::OString aResClass = rtl::OUStringToOString(m_sWMClass, RTL_TEXTENCODING_ASCII_US);
     const char *pResClass = aResClass.getLength() ? aResClass.getStr() : X11SalData::getFrameClassName();
 
-    if( GTK_WIDGET_REALIZED( m_pWindow ) )
+    if( IS_WIDGET_REALIZED( m_pWindow ) )
     {
         XClassHint* pClass = XAllocClassHint();
         rtl::OString aResName = X11SalData::getFrameResName( m_nExtStyle );
         pClass->res_name  = const_cast<char*>(aResName.getStr());
         pClass->res_class = const_cast<char*>(pResClass);
         XSetClassHint( getDisplay()->GetDisplay(),
-                       GDK_WINDOW_XWINDOW(m_pWindow->window),
+                       GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                        pClass );
         XFree( pClass );
     }
@@ -1814,7 +1829,7 @@ void GtkSalFrame::ShowFullScreen( sal_Bool bFullScreen, sal_Int32 nScreen )
             {
                 m_aRestorePosSize = Rectangle( Point( maGeometry.nX, maGeometry.nY ),
                                                Size( maGeometry.nWidth, maGeometry.nHeight ) );
-                bool bVisible = GTK_WIDGET_MAPPED(m_pWindow);
+                bool bVisible = IS_WIDGET_MAPPED(m_pWindow);
                 if( bVisible )
                     Show( sal_False );
                 m_nStyle |= SAL_FRAME_STYLE_PARTIAL_FULLSCREEN;
@@ -1847,7 +1862,7 @@ void GtkSalFrame::ShowFullScreen( sal_Bool bFullScreen, sal_Int32 nScreen )
             }
             else
             {
-                bool bVisible = GTK_WIDGET_MAPPED(m_pWindow);
+                bool bVisible = IS_WIDGET_MAPPED(m_pWindow);
                 if( ! getDisplay()->getWMAdaptor()->isLegacyPartialFullscreen() )
                     gtk_window_unfullscreen( GTK_WINDOW(m_pWindow) );
                 if( bVisible )
@@ -2055,7 +2070,7 @@ void GtkSalFrame::StartPresentation( sal_Bool bStart )
         }
 #ifdef ENABLE_DBUS
         m_nGSMCookie = dbus_inhibit_gsm(g_get_application_name(), "presentation", 
-                    GDK_WINDOW_XID(m_pWindow->window));
+                    GDK_WINDOW_XID(widget_get_window(m_pWindow)));
 #endif
     }
     else
@@ -2081,7 +2096,7 @@ void GtkSalFrame::ToTop( sal_uInt16 nFlags )
     {
         if( isChild( false, true ) )
             gtk_widget_grab_focus( m_pWindow );
-        else if( GTK_WIDGET_MAPPED( m_pWindow ) )
+        else if( IS_WIDGET_MAPPED( m_pWindow ) )
         {
             if( ! (nFlags & SAL_FRAME_TOTOP_GRABFOCUS_ONLY) )
                 gtk_window_present( GTK_WINDOW(m_pWindow) );
@@ -2089,7 +2104,7 @@ void GtkSalFrame::ToTop( sal_uInt16 nFlags )
             {
                 /* #i99360# ugly workaround an X11 library bug */
                 guint32 nUserTime= getDisplay()->GetLastUserEventTime( true );
-                gdk_window_focus( m_pWindow->window, nUserTime );
+                gdk_window_focus( widget_get_window(m_pWindow), nUserTime );
             }
             /*  need to do an XSetInputFocus here because
              *  gdk_window_focus will ask a EWMH compliant WM to put the focus
@@ -2101,7 +2116,7 @@ void GtkSalFrame::ToTop( sal_uInt16 nFlags )
                 // sad but true: this can cause an XError, we need to catch that
                 // to do this we need to synchronize with the XServer
                 getDisplay()->GetXLib()->PushXErrorLevel( true );
-                XSetInputFocus( getDisplay()->GetDisplay(), GDK_WINDOW_XWINDOW( m_pWindow->window ), RevertToParent, CurrentTime );
+                XSetInputFocus( getDisplay()->GetDisplay(), GDK_WINDOW_XWINDOW( widget_get_window(m_pWindow) ), RevertToParent, CurrentTime );
                 XSync( getDisplay()->GetDisplay(), False );
                 getDisplay()->GetXLib()->PopXErrorLevel();
             }
@@ -2120,7 +2135,7 @@ void GtkSalFrame::SetPointer( PointerStyle ePointerStyle )
     {
         m_ePointerStyle = ePointerStyle;
         GdkCursor *pCursor = getDisplay()->getCursor( ePointerStyle );
-        gdk_window_set_cursor( m_pWindow->window, pCursor );
+        gdk_window_set_cursor( widget_get_window(m_pWindow), pCursor );
         m_pCurrentCursor = pCursor;
         
         // #i80791# use grabPointer the same way as CaptureMouse, respective float grab
@@ -2158,7 +2173,7 @@ void GtkSalFrame::grabPointer( sal_Bool bGrab, sal_Bool bOwnerEvents )
                 const int nMask = ( GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK );
     
                 if( !pEnv || !*pEnv )
-                    gdk_pointer_grab( m_pWindow->window, bOwnerEvents,
+                    gdk_pointer_grab( widget_get_window( m_pWindow ), bOwnerEvents,
                                       (GdkEventMask) nMask, NULL, m_pCurrentCursor,
                                       GDK_CURRENT_TIME );
             }
@@ -2172,7 +2187,7 @@ void GtkSalFrame::grabPointer( sal_Bool bGrab, sal_Bool bOwnerEvents )
                 // set the right cursor this way
                 if( !pEnv || !*pEnv )
                     XGrabPointer( getDisplay()->GetDisplay(),
-                                  GDK_WINDOW_XWINDOW( m_pWindow->window),
+                                  GDK_WINDOW_XWINDOW( widget_get_window( m_pWindow ) ),
                                   bOwnerEvents,
                                   PointerMotionMask | ButtonPressMask | ButtonReleaseMask,
                                   GrabModeAsync,
@@ -2221,7 +2236,7 @@ void GtkSalFrame::SetPointerPos( long nX, long nY )
     // #i38648# ask for the next motion hint
     gint x, y;
     GdkModifierType mask;
-    gdk_window_get_pointer( pFrame->m_pWindow->window, &x, &y, &mask );
+    gdk_window_get_pointer( widget_get_window(pFrame->m_pWindow) , &x, &y, &mask );
 }
 
 void GtkSalFrame::Flush()
@@ -2319,7 +2334,7 @@ SalBitmap* GtkSalFrame::SnapShot()
         return NULL;
 
     X11SalBitmap *pBmp = new X11SalBitmap;
-    GdkWindow *pWin = m_pWindow->window;
+    GdkWindow *pWin = widget_get_window(m_pWindow);
     if( pBmp->SnapShot( GDK_DISPLAY_XDISPLAY( getGdkDisplay() ),
                         GDK_WINDOW_XID( pWin ) ) )
         return pBmp;
@@ -2381,7 +2396,7 @@ void GtkSalFrame::SetParent( SalFrame* pNewParent )
 
 void GtkSalFrame::createNewWindow( XLIB_Window aNewParent, bool bXEmbed, int nScreen )
 {
-    bool bWasVisible = GTK_WIDGET_MAPPED(m_pWindow);
+    bool bWasVisible = IS_WIDGET_MAPPED(m_pWindow);
     if( bWasVisible )
         Show( sal_False );
     
@@ -2426,7 +2441,13 @@ void GtkSalFrame::createNewWindow( XLIB_Window aNewParent, bool bXEmbed, int nSc
         m_pIMHandler = NULL;
     }
     if( m_pRegion )
+{
+#if GTK_CHECK_VERSION(3,0,0)
+        cairo_region_destroy( m_pRegion );
+#else
         gdk_region_destroy( m_pRegion );
+#endif
+}
     if( m_pFixedContainer )
         gtk_widget_destroy( GTK_WIDGET(m_pFixedContainer) );
     if( m_pWindow )
@@ -2454,7 +2475,7 @@ void GtkSalFrame::createNewWindow( XLIB_Window aNewParent, bool bXEmbed, int nSc
     {
         if( m_aGraphics[i].bInUse )
         {
-            m_aGraphics[i].pGraphics->SetDrawable( GDK_WINDOW_XWINDOW(m_pWindow->window), m_nScreen );
+            m_aGraphics[i].pGraphics->SetDrawable( GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)), m_nScreen );
             m_aGraphics[i].pGraphics->SetWindow( m_pWindow );
         }
     }
@@ -2484,14 +2505,20 @@ bool GtkSalFrame::SetPluginParent( SystemParentData* pSysParent )
 void GtkSalFrame::ResetClipRegion()
 {
     if( m_pWindow )
-        gdk_window_shape_combine_region( m_pWindow->window, NULL, 0, 0 );
+        gdk_window_shape_combine_region( widget_get_window( m_pWindow ), NULL, 0, 0 );
 }
 
 void GtkSalFrame::BeginSetClipRegion( sal_uLong )
 {
+#if GTK_CHECK_VERSION(3,0,0)
+    if( m_pRegion )
+        cairo_region_destroy( m_pRegion );
+    m_pRegion = cairo_region_create();
+#else
     if( m_pRegion )
         gdk_region_destroy( m_pRegion );
     m_pRegion = gdk_region_new();
+#endif
 }
 
 void GtkSalFrame::UnionClipRegion( long nX, long nY, long nWidth, long nHeight )
@@ -2503,21 +2530,24 @@ void GtkSalFrame::UnionClipRegion( long nX, long nY, long nWidth, long nHeight )
         aRect.y			= nY;
         aRect.width		= nWidth;
         aRect.height	= nHeight;
-        
+#if GTK_CHECK_VERSION(3,0,0)
+        cairo_region_union_rectangle( m_pRegion, &aRect );
+#else
         gdk_region_union_with_rect( m_pRegion, &aRect );
+#endif
     }
 }
 
 void GtkSalFrame::EndSetClipRegion()
 {
     if( m_pWindow && m_pRegion )
-        gdk_window_shape_combine_region( m_pWindow->window, m_pRegion, 0, 0 );
+        gdk_window_shape_combine_region( widget_get_window(m_pWindow), m_pRegion, 0, 0 );
 }
 
 bool GtkSalFrame::Dispatch( const XEvent* pEvent )
 {
     bool bContinueDispatch = true;
-    
+
     if( pEvent->type == PropertyNotify )
     {
         vcl_sal::WMAdaptor* pAdaptor = getDisplay()->getWMAdaptor();
@@ -2525,7 +2555,7 @@ bool GtkSalFrame::Dispatch( const XEvent* pEvent )
         if( pEvent->xproperty.atom == nDesktopAtom &&
             pEvent->xproperty.state == PropertyNewValue )
         {
-            m_nWorkArea = pAdaptor->getWindowWorkArea( GDK_WINDOW_XWINDOW( m_pWindow->window) );
+            m_nWorkArea = pAdaptor->getWindowWorkArea( GDK_WINDOW_XWINDOW( widget_get_window(m_pWindow)) );
         }
     }
     else if( pEvent->type == ConfigureNotify )
@@ -2552,7 +2582,7 @@ bool GtkSalFrame::Dispatch( const XEvent* pEvent )
             int x = 0, y = 0;
             XLIB_Window aChild;
             XTranslateCoordinates( getDisplay()->GetDisplay(),
-                                   GDK_WINDOW_XWINDOW( m_pWindow->window),
+                                   GDK_WINDOW_XWINDOW( widget_get_window(m_pWindow) ),
                                    getDisplay()->GetRootWindow( getDisplay()->GetDefaultScreenNumber() ),
                                    0, 0,
                                    &x, &y,
@@ -2567,7 +2597,7 @@ bool GtkSalFrame::Dispatch( const XEvent* pEvent )
     }
     else if( pEvent->type == ClientMessage &&
              pEvent->xclient.message_type == getDisplay()->getWMAdaptor()->getAtom( vcl_sal::WMAdaptor::XEMBED ) &&
-             pEvent->xclient.window == GDK_WINDOW_XWINDOW(m_pWindow->window) &&
+             pEvent->xclient.window == GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)) &&
              m_bWindowIsGtkPlug
              )
     {
@@ -2579,7 +2609,7 @@ bool GtkSalFrame::Dispatch( const XEvent* pEvent )
         {
             GdkEventFocus aEvent;
             aEvent.type = GDK_FOCUS_CHANGE;
-            aEvent.window = m_pWindow->window;
+            aEvent.window = widget_get_window( m_pWindow );
             aEvent.send_event = sal_True;
             aEvent.in = (pEvent->xclient.data.l[1] == 1);
             signalFocus( m_pWindow, &aEvent, this );
@@ -2594,7 +2624,7 @@ void GtkSalFrame::SetBackgroundBitmap( SalBitmap* pBitmap )
     if( m_hBackgroundPixmap )
     {
         XSetWindowBackgroundPixmap( getDisplay()->GetDisplay(),
-                                    GDK_WINDOW_XWINDOW(m_pWindow->window),
+                                    GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                                     None );
         XFreePixmap( getDisplay()->GetDisplay(), m_hBackgroundPixmap );
         m_hBackgroundPixmap = None;
@@ -2607,7 +2637,7 @@ void GtkSalFrame::SetBackgroundBitmap( SalBitmap* pBitmap )
         {
             m_hBackgroundPixmap =
                 XCreatePixmap( getDisplay()->GetDisplay(),
-                               GDK_WINDOW_XWINDOW(m_pWindow->window),
+                               GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                                aSize.Width(),
                                aSize.Height(),
                                getDisplay()->GetVisual(m_nScreen).GetDepth() );
@@ -2623,7 +2653,7 @@ void GtkSalFrame::SetBackgroundBitmap( SalBitmap* pBitmap )
                                aTwoRect,
                                getDisplay()->GetCopyGC(m_nScreen) );
                 XSetWindowBackgroundPixmap( getDisplay()->GetDisplay(),
-                                            GDK_WINDOW_XWINDOW(m_pWindow->window),
+                                            GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow)),
                                             m_hBackgroundPixmap );
             }
         }
@@ -2796,7 +2826,7 @@ gboolean GtkSalFrame::signalMotion( GtkWidget*, GdkEventMotion* pEvent, gpointer
             // ask for the next hint
             gint x, y;
             GdkModifierType mask;
-            gdk_window_get_pointer( GTK_WIDGET(pThis->m_pWindow)->window, &x, &y, &mask );
+            gdk_window_get_pointer( widget_get_window(GTK_WIDGET(pThis->m_pWindow)), &x, &y, &mask );
         }
     }
 
@@ -2882,7 +2912,7 @@ IMPL_LINK( GtkSalFrame, ImplDelayedFullScreenHdl, void*, EMPTYARG )
         XEvent aEvent;
         aEvent.type					= ClientMessage;
         aEvent.xclient.display		= getDisplay()->GetDisplay();
-        aEvent.xclient.window		= GDK_WINDOW_XWINDOW(m_pWindow->window);
+        aEvent.xclient.window		= GDK_WINDOW_XWINDOW(widget_get_window(m_pWindow));
         aEvent.xclient.message_type	= nStateAtom;
         aEvent.xclient.format		= 32;
         aEvent.xclient.data.l[0]	= 1;
@@ -2932,7 +2962,7 @@ gboolean GtkSalFrame::signalMap( GtkWidget*, GdkEvent*, gpointer frame )
     if( bSetFocus )
     {
         XSetInputFocus( pThis->getDisplay()->GetDisplay(),
-                        GDK_WINDOW_XWINDOW( GTK_WIDGET(pThis->m_pWindow)->window),
+                        GDK_WINDOW_XWINDOW( widget_get_window(GTK_WIDGET(pThis->m_pWindow))),
                         RevertToParent, CurrentTime );
     }
     
@@ -2980,7 +3010,7 @@ gboolean GtkSalFrame::signalConfigure( GtkWidget*, GdkEventConfigure* pEvent, gp
      */
     XLIB_Window aChild;
     XTranslateCoordinates( pThis->getDisplay()->GetDisplay(),
-                           GDK_WINDOW_XWINDOW(GTK_WIDGET(pThis->m_pWindow)->window),
+                           GDK_WINDOW_XWINDOW(widget_get_window(GTK_WIDGET(pThis->m_pWindow))),
                            pThis->getDisplay()->GetRootWindow( pThis->getDisplay()->GetDefaultScreenNumber() ),
                            0, 0,
                            &x, &y,
@@ -3014,7 +3044,7 @@ gboolean GtkSalFrame::signalConfigure( GtkWidget*, GdkEventConfigure* pEvent, gp
     if( ! (pThis->m_nStyle & SAL_FRAME_STYLE_PLUG) )
     {
         GdkRectangle aRect;
-        gdk_window_get_frame_extents( GTK_WIDGET(pThis->m_pWindow)->window, &aRect );
+        gdk_window_get_frame_extents( widget_get_window(GTK_WIDGET(pThis->m_pWindow)), &aRect );
         pThis->maGeometry.nTopDecoration	= y - aRect.y;
         pThis->maGeometry.nBottomDecoration	= aRect.y + aRect.height - y - pEvent->height;
         pThis->maGeometry.nLeftDecoration	= x - aRect.x;
@@ -3189,7 +3219,7 @@ void GtkSalFrame::signalStyleSet( GtkWidget*, GtkStyle* pPrevious, gpointer fram
     *  some time on the Xserver as well as prevent
     *  some paint issues
     */
-    GdkWindow* pWin = GTK_WIDGET(pThis->getWindow())->window;
+    GdkWindow* pWin = widget_get_window(GTK_WIDGET(pThis->getWindow()));
     if( pWin )
     {
         XLIB_Window aWin = GDK_WINDOW_XWINDOW(pWin);
@@ -3242,10 +3272,10 @@ gboolean GtkSalFrame::signalVisibility( GtkWidget*, GdkEventVisibility* pEvent,
     return sal_False;
 }
 
-void GtkSalFrame::signalDestroy( GtkObject* pObj, gpointer frame )
+void GtkSalFrame::signalDestroy( GtkWidget* pObj, gpointer frame )
 {
     GtkSalFrame* pThis = (GtkSalFrame*)frame;
-    if( GTK_WIDGET( pObj ) == pThis->m_pWindow )
+    if( pObj == pThis->m_pWindow )
     {
         pThis->m_pFixedContainer = NULL;
         pThis->m_pWindow = NULL;
@@ -3293,7 +3323,7 @@ void GtkSalFrame::IMHandler::createIMContext()
                           G_CALLBACK (signalIMPreeditEnd), this );
 
         m_pFrame->getDisplay()->GetXLib()->PushXErrorLevel( true );
-        gtk_im_context_set_client_window( m_pIMContext, GTK_WIDGET(m_pFrame->m_pWindow)->window );
+        gtk_im_context_set_client_window( m_pIMContext, widget_get_window(GTK_WIDGET(m_pFrame->m_pWindow)) );
         gtk_im_context_focus_in( m_pIMContext );
         m_pFrame->getDisplay()->GetXLib()->PopXErrorLevel();
         m_bFocused = true;
diff --git a/vcl/unx/gtk/window/gtkobject.cxx b/vcl/unx/gtk/window/gtkobject.cxx
index f651807..c02f3f5 100644
--- a/vcl/unx/gtk/window/gtkobject.cxx
+++ b/vcl/unx/gtk/window/gtkobject.cxx
@@ -39,6 +39,7 @@
 #include <unx/gtk/gtkframe.hxx>
 #include <unx/gtk/gtkdata.hxx>
 #include <unx/gtk/gtkinst.hxx>
+#include <unx/gtk/gtkgdi.hxx>
 
 GtkSalObject::GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow ) 
         : m_pSocket( NULL ),
@@ -65,7 +66,7 @@ GtkSalObject::GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow )
         SalDisplay* pDisp = GetX11SalData()->GetDisplay();
         m_aSystemData.nSize 		= sizeof( SystemChildData );
         m_aSystemData.pDisplay		= pDisp->GetDisplay();
-        m_aSystemData.aWindow		= GDK_WINDOW_XWINDOW(m_pSocket->window);
+        m_aSystemData.aWindow		= GDK_WINDOW_XWINDOW(widget_get_window(m_pSocket));
         m_aSystemData.pSalFrame		= NULL;
         m_aSystemData.pWidget		= m_pSocket;
         m_aSystemData.pVisual		= pDisp->GetVisual(pParent->getScreenNumber()).GetVisual();
@@ -73,7 +74,7 @@ GtkSalObject::GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow )
         m_aSystemData.nDepth		= pDisp->GetVisual(pParent->getScreenNumber()).GetDepth();
         m_aSystemData.aColormap		= pDisp->GetColormap(pParent->getScreenNumber()).GetXColormap();
         m_aSystemData.pAppContext	= NULL;
-        m_aSystemData.aShellWindow	= GDK_WINDOW_XWINDOW(GTK_WIDGET(pParent->getWindow())->window);
+        m_aSystemData.aShellWindow	= GDK_WINDOW_XWINDOW(widget_get_window(GTK_WIDGET(pParent->getWindow())));
         m_aSystemData.pShellWidget	= GTK_WIDGET(pParent->getWindow());
 
         g_signal_connect( G_OBJECT(m_pSocket), "button-press-event", G_CALLBACK(signalButton), this );
@@ -90,7 +91,13 @@ GtkSalObject::GtkSalObject( GtkSalFrame* pParent, sal_Bool bShow )
 GtkSalObject::~GtkSalObject()
 {
     if( m_pRegion )
+    {
+#if GTK_CHECK_VERSION(3,0,0)
+        cairo_region_destroy( m_pRegion );
+#else
         gdk_region_destroy( m_pRegion );
+#endif
+    }
     if( m_pSocket )
     {
         // remove socket from parent frame's fixed container
@@ -108,7 +115,7 @@ GtkSalObject::~GtkSalObject()
 void GtkSalObject::ResetClipRegion()
 {
     if( m_pSocket )
-        gdk_window_shape_combine_region( m_pSocket->window, NULL, 0, 0 );
+        gdk_window_shape_combine_region( widget_get_window(m_pSocket), NULL, 0, 0 );
 }
 
 sal_uInt16 GtkSalObject::GetClipRegionType()
@@ -118,9 +125,15 @@ sal_uInt16 GtkSalObject::GetClipRegionType()
 
 void GtkSalObject::BeginSetClipRegion( sal_uLong )
 {
+#if GTK_CHECK_VERSION(3,0,0)
+    if( m_pRegion )
+        cairo_region_destroy( m_pRegion );
+    m_pRegion = cairo_region_create();
+#else
     if( m_pRegion )
         gdk_region_destroy( m_pRegion );
     m_pRegion = gdk_region_new();
+#endif
 }
 
 void GtkSalObject::UnionClipRegion( long nX, long nY, long nWidth, long nHeight )
@@ -130,14 +143,18 @@ void GtkSalObject::UnionClipRegion( long nX, long nY, long nWidth, long nHeight
     aRect.y			= nY;
     aRect.width		= nWidth;
     aRect.height	= nHeight;
-    
+
+#if GTK_CHECK_VERSION(3,0,0)
+    cairo_region_union_rectangle( m_pRegion, &aRect );
+#else
     gdk_region_union_with_rect( m_pRegion, &aRect );
+#endif
 }
 
 void GtkSalObject::EndSetClipRegion()
 {
     if( m_pSocket )
-        gdk_window_shape_combine_region( m_pSocket->window, m_pRegion, 0, 0 );
+        gdk_window_shape_combine_region( widget_get_window(m_pSocket), m_pRegion, 0, 0 );
 }
 
 void GtkSalObject::SetPosSize( long nX, long nY, long nWidth, long nHeight )
@@ -208,10 +225,10 @@ gboolean GtkSalObject::signalFocus( GtkWidget*, GdkEventFocus* pEvent, gpointer
     return FALSE;
 }
 
-void GtkSalObject::signalDestroy( GtkObject* pObj, gpointer object )
+void GtkSalObject::signalDestroy( GtkWidget* pObj, gpointer object )
 {
     GtkSalObject* pThis = (GtkSalObject*)object;
-    if( GTK_WIDGET(pObj) == pThis->m_pSocket )
+    if( pObj == pThis->m_pSocket )
     {
         pThis->m_pSocket = NULL;
     }
diff --git a/vcl/unx/gtk3/a11y/gtk3atkaction.cxx b/vcl/unx/gtk3/a11y/gtk3atkaction.cxx
new file mode 100644
index 0000000..71a92c8
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkaction.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkaction.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkbridge.cxx b/vcl/unx/gtk3/a11y/gtk3atkbridge.cxx
new file mode 100644
index 0000000..34d094f
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkbridge.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkbridge.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkcomponent.cxx b/vcl/unx/gtk3/a11y/gtk3atkcomponent.cxx
new file mode 100644
index 0000000..cd33fcf
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkcomponent.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkcomponent.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkeditabletext.cxx b/vcl/unx/gtk3/a11y/gtk3atkeditabletext.cxx
new file mode 100644
index 0000000..6ba2164
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkeditabletext.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkeditabletext.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkfactory.cxx b/vcl/unx/gtk3/a11y/gtk3atkfactory.cxx
new file mode 100644
index 0000000..3fd107f
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkfactory.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkfactory.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkhypertext.cxx b/vcl/unx/gtk3/a11y/gtk3atkhypertext.cxx
new file mode 100644
index 0000000..2945882
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkhypertext.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkhypertext.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkimage.cxx b/vcl/unx/gtk3/a11y/gtk3atkimage.cxx
new file mode 100644
index 0000000..e8404b1
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkimage.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkimage.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atklistener.cxx b/vcl/unx/gtk3/a11y/gtk3atklistener.cxx
new file mode 100644
index 0000000..a43aeab
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atklistener.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atklistener.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkregistry.cxx b/vcl/unx/gtk3/a11y/gtk3atkregistry.cxx
new file mode 100644
index 0000000..95c372a
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkregistry.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkregistry.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkselection.cxx b/vcl/unx/gtk3/a11y/gtk3atkselection.cxx
new file mode 100644
index 0000000..860e125
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkselection.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkselection.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atktable.cxx b/vcl/unx/gtk3/a11y/gtk3atktable.cxx
new file mode 100644
index 0000000..39dc5fc
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atktable.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atktable.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atktext.cxx b/vcl/unx/gtk3/a11y/gtk3atktext.cxx
new file mode 100644
index 0000000..3239c66
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atktext.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atktext.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx b/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx
new file mode 100644
index 0000000..61eeb47
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atktextattributes.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkutil.cxx b/vcl/unx/gtk3/a11y/gtk3atkutil.cxx
new file mode 100644
index 0000000..44b41f6
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkutil.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkutil.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkvalue.cxx b/vcl/unx/gtk3/a11y/gtk3atkvalue.cxx
new file mode 100644
index 0000000..8398e0f
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkvalue.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkvalue.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkwindow.cxx b/vcl/unx/gtk3/a11y/gtk3atkwindow.cxx
new file mode 100644
index 0000000..3b11cf0
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkwindow.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkwindow.cxx"
diff --git a/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx b/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx
new file mode 100644
index 0000000..9a6c2e9
--- /dev/null
+++ b/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/a11y/atkwrapper.cxx"
diff --git a/vcl/unx/gtk3/app/gtk3gtkdata.cxx b/vcl/unx/gtk3/app/gtk3gtkdata.cxx
new file mode 100644
index 0000000..a6d7a0e
--- /dev/null
+++ b/vcl/unx/gtk3/app/gtk3gtkdata.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/app/gtkdata.cxx"
diff --git a/vcl/unx/gtk3/app/gtk3gtkinst.cxx b/vcl/unx/gtk3/app/gtk3gtkinst.cxx
new file mode 100644
index 0000000..ad2d59a
--- /dev/null
+++ b/vcl/unx/gtk3/app/gtk3gtkinst.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/app/gtkinst.cxx"
diff --git a/vcl/unx/gtk3/app/gtk3gtksys.cxx b/vcl/unx/gtk3/app/gtk3gtksys.cxx
new file mode 100644
index 0000000..ee769b3
--- /dev/null
+++ b/vcl/unx/gtk3/app/gtk3gtksys.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/app/gtksys.cxx"
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
new file mode 100644
index 0000000..07dc4e5
--- /dev/null
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/gdi/salnativewidgets-gtk.cxx"
diff --git a/vcl/unx/gtk3/window/gtk3gtkframe.cxx b/vcl/unx/gtk3/window/gtk3gtkframe.cxx
new file mode 100644
index 0000000..a1d950e
--- /dev/null
+++ b/vcl/unx/gtk3/window/gtk3gtkframe.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/window/gtkframe.cxx"
diff --git a/vcl/unx/gtk3/window/gtk3gtkobject.cxx b/vcl/unx/gtk3/window/gtk3gtkobject.cxx
new file mode 100644
index 0000000..ab16280
--- /dev/null
+++ b/vcl/unx/gtk3/window/gtk3gtkobject.cxx
@@ -0,0 +1,28 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *        Caolán McNamara <caolanm at redhat.com> (Red Hat, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Caolán McNamara <caolanm at redhat.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "../../gtk/window/gtkobject.cxx"


More information about the Libreoffice-commits mailing list