bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx | 2 connectivity/source/drivers/odbcbase/ODriver.cxx | 9 -- odk/settings/settings.mk | 28 ++++-- sal/osl/unx/util.c | 2 svtools/source/control/headbar.cxx | 76 ++++++++++++------ vcl/inc/unx/gtk/gtkgdi.hxx | 5 + vcl/inc/vcl/salnativewidgets.hxx | 2 vcl/unx/generic/app/wmadaptor.cxx | 3 vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 64 ++++++++++++++- 9 files changed, 152 insertions(+), 39 deletions(-)
New commits: commit f2c09d47407ec8bdd55f789fdba7ff02e14783e8 Author: Pierre-Eric Pelloux-Prayer <pierre-e...@lanedo.com> Date: Mon Jul 9 12:15:53 2012 +0200 solaris: fix compilation error by adding temp var holding const_cast result Change-Id: I3e42bb8dae6ad628f5414d8e46616432a704679f diff --git a/vcl/unx/generic/app/wmadaptor.cxx b/vcl/unx/generic/app/wmadaptor.cxx index a0791e0..784cf10 100644 --- a/vcl/unx/generic/app/wmadaptor.cxx +++ b/vcl/unx/generic/app/wmadaptor.cxx @@ -1038,8 +1038,9 @@ void WMAdaptor::setWMName( X11SalFrame* pFrame, const String& rWMName ) const bOnce = false; XTextProperty aTestProp = { NULL, None, 0, 0 }; const char *pText = "trustme"; + char* pT = const_cast<char*>(pText); XmbTextListToTextProperty( m_pDisplay, - &const_cast<char*>(pText), + &pT, 1, XStdICCTextStyle, &aTestProp ); commit 34f8b2b78ec7f7397e6ca9c69b6a77a9c6aa58a3 Author: Pierre-Eric Pelloux-Prayer <pierre-e...@lanedo.com> Date: Mon Jul 9 12:12:14 2012 +0200 single cpu detection: remove 'defined(__SUNPRO_C)' requirement Change-Id: Iab3d103688d07ceea05b257ac012a0292c837a85 diff --git a/sal/osl/unx/util.c b/sal/osl/unx/util.c index d402575..fd69c0d 100644 --- a/sal/osl/unx/util.c +++ b/sal/osl/unx/util.c @@ -317,7 +317,7 @@ void osl_InitSparcV9(void) #endif #if ( defined(__GNUC__) && (defined(X86) || defined(X86_64)) )\ - || ( defined(SOLARIS) && defined (__SUNPRO_C) && defined(__i386) ) + || ( defined(SOLARIS) && defined(__i386) ) /* Safe default */ int osl_isSingleCPU = 0; commit eb1192ec1fea481548b5a40f980f59b670232150 Author: Pierre-Eric Pelloux-Prayer <pierre-e...@lanedo.com> Date: Mon Jul 9 12:09:54 2012 +0200 solaris: update settings.mk to use gcc Change-Id: Ife7a4806776f55babfab11ceac25a3d2d66fe5af diff --git a/odk/settings/settings.mk b/odk/settings/settings.mk index 797d123..f2eeb14 100644 --- a/odk/settings/settings.mk +++ b/odk/settings/settings.mk @@ -173,21 +173,32 @@ DELRECURSIVE=rm -rf COPY=cp URLPREFIX=file:// +COMID=gcc3 +CPPU_ENV=gcc3 + # Include UDK version numbers include $(PRJ)/include/udkversion.mk +#SALLIB=-luno_sal +#CPPULIB=-luno_cppu +#CPPUHELPERLIB=-luno_cppuhelperC52 +#SALHELPERLIB=-luno_salhelperC52 +#REGLIB=-lreg +#STORELIB=-lstore SALLIB=-luno_sal CPPULIB=-luno_cppu -CPPUHELPERLIB=-luno_cppuhelperC52 -SALHELPERLIB=-luno_salhelperC52 +CPPUHELPERLIB=-luno_cppuhelper$(COMID) +SALHELPERLIB=-luno_salhelper$(COMID) REGLIB=-lreg STORELIB=-lstore EMPTYSTRING= PATH_SEPARATOR=: -CC_FLAGS_JNI=-c -KPIC -CC_FLAGS=-c -KPIC -xldscope=hidden +#CC_FLAGS_JNI=-c -KPIC +#CC_FLAGS=-c -KPIC -xldscope=hidden +CC_FLAGS_JNI=-c -fpic +CC_FLAGS=-c -fpic -fvisibility=hidden ifeq "$(DEBUG)" "yes" CC_FLAGS_JNI+=-g CC_FLAGS+=-g @@ -198,11 +209,14 @@ SDK_JAVA_INCLUDES = -I"$(OO_SDK_JAVA_HOME)/include" -I"$(OO_SDK_JAVA_HOME)/inclu # define for used compiler necessary for UNO # -DCPPU_ENV=sunpro5 -- sunpro cc 5.x solaris sparc/intel -CC_DEFINES_JNI=-DUNX -DSOLARIS -DCPPU_ENV=sunpro5 -CC_DEFINES=-DUNX -DSOLARIS -DSPARC -DCPPU_ENV=sunpro5 -DHAVE_GCC_VISIBILITY_FEATURE +#CC_DEFINES_JNI=-DUNX -DSOLARIS -DCPPU_ENV=sunpro5 +CC_DEFINES_JNI=-DUNX -DSOLARIS -DCPPU_ENV=$(CPPU_ENV) -DGCC -DGXX_INCLUDE_PATH=$(SDK_GXX_INCLUDE_PATH) +#CC_DEFINES=-DUNX -DSOLARIS -DSPARC -DCPPU_ENV=sunpro5 -DHAVE_GCC_VISIBILITY_FEATURE +CC_DEFINES=-DUNX -DSOLARIS -DSPARC -DCPPU_ENV=$(CPPU_ENV) -DHAVE_GCC_VISIBILITY_FEATURE -DGCC -DGXX_INCLUDE_PATH=$(SDK_GXX_INCLUDE_PATH) CC_OUTPUT_SWITCH=-o -LIBRARY_LINK_FLAGS=-w -mt -z combreloc -PIC -temp=/tmp '-R$$ORIGIN' -z text -norunpath -G -Bdirect -Bdynamic -lpthread -lCrun -lc -lm +#LIBRARY_LINK_FLAGS=-w -mt -z combreloc -PIC -temp=/tmp '-R$$ORIGIN' -z text -norunpath -G -Bdirect -Bdynamic -lpthread -lCrun -lc -lm +LIBRARY_LINK_FLAGS=-w -mt -z combreloc -fPIC -PIC -temp=/tmp '-R$$ORIGIN' -z text -norunpath -G -Bdirect -Bdynamic -lpthread -lCrun -lc -lm # means if used CC is lower then version 5.5 use option -instance=static ifeq ($(OO_SDK_CC_55_OR_HIGHER),) LIBRARY_LINK_FLAGS+=-instances=static commit 81c5a10a8db5530eb028c85887f0cc73d16c04d3 Author: Pierre-Eric Pelloux-Prayer <pierre-e...@lanedo.com> Date: Mon Jul 9 11:25:06 2012 +0200 Remove conflicting typedef Barely used typedef produced compilation error on Solaris, due to already defined type 'SS'. Change-Id: I2d1d563d8c4818a4afe9656cc4a62ba1bbaaafd2 diff --git a/connectivity/source/drivers/odbcbase/ODriver.cxx b/connectivity/source/drivers/odbcbase/ODriver.cxx index e937363..e5c2cf1 100644 --- a/connectivity/source/drivers/odbcbase/ODriver.cxx +++ b/connectivity/source/drivers/odbcbase/ODriver.cxx @@ -63,11 +63,10 @@ rtl::OUString ODBCDriver::getImplementationName_Static( ) throw(RuntimeExceptio // Please take care when changing it. } -typedef Sequence< ::rtl::OUString > SS; //------------------------------------------------------------------------------ -SS ODBCDriver::getSupportedServiceNames_Static( ) throw (RuntimeException) +Sequence< ::rtl::OUString > ODBCDriver::getSupportedServiceNames_Static( ) throw (RuntimeException) { - SS aSNS( 1 ); + Sequence< ::rtl::OUString > aSNS( 1 ); aSNS[0] = ::rtl::OUString("com.sun.star.sdbc.Driver"); return aSNS; } @@ -81,7 +80,7 @@ SS ODBCDriver::getSupportedServiceNames_Static( ) throw (RuntimeException) //------------------------------------------------------------------ sal_Bool SAL_CALL ODBCDriver::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) { - SS aSupported(getSupportedServiceNames()); + Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); const ::rtl::OUString* pSupported = aSupported.getConstArray(); const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) @@ -91,7 +90,7 @@ sal_Bool SAL_CALL ODBCDriver::supportsService( const ::rtl::OUString& _rServiceN } //------------------------------------------------------------------ -SS SAL_CALL ODBCDriver::getSupportedServiceNames( ) throw(RuntimeException) +Sequence< ::rtl::OUString > SAL_CALL ODBCDriver::getSupportedServiceNames( ) throw(RuntimeException) { return getSupportedServiceNames_Static(); } commit ffc7b3f8a19f643f2e0b95d72ff5608ba0bf385e Author: Pierre-Eric Pelloux-Prayer <pierre-e...@lanedo.com> Date: Mon Jul 9 11:22:19 2012 +0200 Mark ecx register as clobbered (solaris/intel) This is a followup of : commit e748b096633c5ef747f0630d13708d8dd7308a86 Author: Kristian Rietveld <k...@lanedo.com> Date: Sat Oct 15 01:15:21 2011 +0200 Mark ecx register as clobbered The inline assembly code executes a function call and functions are free to use eax, ecx and edx without preservation. We must thus mark ecx as a clobber register. Change-Id: I4e9ed38189b23c2bb6d4fbdedc34c318026acfe7 diff --git a/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx index a97a736..8099a25 100644 --- a/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx @@ -97,7 +97,7 @@ static void callVirtualMethod( : : "m"(nStackLongs), "m"(pStackLongs), "m"(pAdjustedThisPtr), "m"(nVtableIndex), "m"(eax), "m"(edx), "m"(stackptr) - : "eax", "edx" ); + : "eax", "ecx", "edx" ); switch( eReturnType ) { case typelib_TypeClass_HYPER: commit 27dfb08d09803055a76ece27dfda47cbc79eb251 Author: Ruslan Kabatsayev <b7.10110...@gmail.com> Date: Sat Jul 7 21:19:39 2012 +0400 Implement support for listview headers native render, add GTK implementation Change-Id: Ief59396e772512b8696e03af86535754b3697d13 diff --git a/svtools/source/control/headbar.cxx b/svtools/source/control/headbar.cxx index 30343f6..3f004e3 100644 --- a/svtools/source/control/headbar.cxx +++ b/svtools/source/control/headbar.cxx @@ -34,6 +34,7 @@ #include <vcl/svapp.hxx> #include <vcl/help.hxx> #include <vcl/image.hxx> +#include <vcl/salnativewidgets.hxx> #include <com/sun/star/accessibility/XAccessible.hpp> // ======================================================================= @@ -320,6 +321,11 @@ void HeaderBar::ImplDrawItem( OutputDevice* pDev, const Rectangle* pRect, sal_uLong ) { + Window *const pWin = (pDev->GetOutDevType()==OUTDEV_WINDOW) ? (Window*) pDev : NULL; + ImplControlValue aControlValue(0); + Rectangle aCtrlRegion; + ControlState nState(0); + Rectangle aRect = rItemRect; // Wenn kein Platz, dann brauchen wir auch nichts ausgeben @@ -346,35 +352,61 @@ void HeaderBar::ImplDrawItem( OutputDevice* pDev, HeaderBarItemBits nBits = pItem->mnBits; const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - // Border muss nicht gemalt werden - aRect.Top() += mnBorderOff1; - aRect.Bottom() -= mnBorderOff2; + if( pWin && pWin->IsNativeControlSupported(CTRL_WINDOW_BACKGROUND, PART_ENTIRE_CONTROL) ) + { + aCtrlRegion=aRect; + pWin->DrawNativeControl( CTRL_WINDOW_BACKGROUND, PART_ENTIRE_CONTROL, + aCtrlRegion, nState, aControlValue, + rtl::OUString() ); - // Hintergrund loeschen - if ( !pRect || bDrag ) + } + else { - if ( bDrag ) + // Border muss nicht gemalt werden + aRect.Top() += mnBorderOff1; + aRect.Bottom() -= mnBorderOff2; + + // Hintergrund loeschen + if ( !pRect || bDrag ) { - pDev->SetLineColor(); - pDev->SetFillColor( rStyleSettings.GetCheckedColor() ); - pDev->DrawRect( aRect ); + if ( bDrag ) + { + pDev->SetLineColor(); + pDev->SetFillColor( rStyleSettings.GetCheckedColor() ); + pDev->DrawRect( aRect ); + } + else + pDev->DrawWallpaper( aRect, GetBackground() ); } - else - pDev->DrawWallpaper( aRect, GetBackground() ); } - // Trennlinie malen - pDev->SetLineColor( rStyleSettings.GetDarkShadowColor() ); - pDev->DrawLine( Point( aRect.Right(), aRect.Top() ), - Point( aRect.Right(), aRect.Bottom() ) ); - - // ButtonStyle malen - // avoid 3D borders Color aSelectionTextColor( COL_TRANSPARENT ); - if( bHigh ) - DrawSelectionBackground( aRect, 1, sal_True, sal_False, sal_False, &aSelectionTextColor ); - else if ( !mbButtonStyle || (nBits & HIB_FLAT) ) - DrawSelectionBackground( aRect, 0, sal_True, sal_False, sal_False, &aSelectionTextColor ); + + if( pWin && pWin->IsNativeControlSupported(CTRL_LISTHEADER, PART_BUTTON) ) + { + aCtrlRegion=aRect; + aControlValue.setTristateVal(BUTTONVALUE_ON); + nState|=CTRL_STATE_ENABLED; + if(bHigh) + nState|=CTRL_STATE_PRESSED; + pWin->DrawNativeControl( CTRL_LISTHEADER, PART_BUTTON, + aCtrlRegion, nState, aControlValue, + rtl::OUString() ); + } + else + { + // Trennlinie malen + pDev->SetLineColor( rStyleSettings.GetDarkShadowColor() ); + pDev->DrawLine( Point( aRect.Right(), aRect.Top() ), + Point( aRect.Right(), aRect.Bottom() ) ); + + // ButtonStyle malen + // avoid 3D borders + if( bHigh ) + DrawSelectionBackground( aRect, 1, sal_True, sal_False, sal_False, &aSelectionTextColor ); + else if ( !mbButtonStyle || (nBits & HIB_FLAT) ) + DrawSelectionBackground( aRect, 0, sal_True, sal_False, sal_False, &aSelectionTextColor ); + } // Wenn kein Platz, dann brauchen wir auch nichts ausgeben if ( aRect.GetWidth() < 1 ) diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx index a8d6584..ab03d18 100644 --- a/vcl/inc/unx/gtk/gtkgdi.hxx +++ b/vcl/inc/unx/gtk/gtkgdi.hxx @@ -165,6 +165,11 @@ protected: GdkPixmap* NWGetPixmapFromScreen( Rectangle srcRect ); sal_Bool NWRenderPixmapToScreen( GdkPixmap* pPixmap, Rectangle dstRect ); + sal_Bool NWPaintGTKListHeader( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart, + const Rectangle& rControlRectangle, + const clipList& rClipList, + ControlState nState, const ImplControlValue& aValue, + const OUString& rCaption ); sal_Bool NWPaintGTKFixedLine( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart, const Rectangle& rControlRectangle, const clipList& rClipList, diff --git a/vcl/inc/vcl/salnativewidgets.hxx b/vcl/inc/vcl/salnativewidgets.hxx index a3c9bab..02857a1 100644 --- a/vcl/inc/vcl/salnativewidgets.hxx +++ b/vcl/inc/vcl/salnativewidgets.hxx @@ -142,6 +142,8 @@ typedef sal_uInt32 ControlType; // nets between elements of listviews // with nodes #define CTRL_LISTNET 171 +// for list headers +#define CTRL_LISTHEADER 172 /* Control Parts: diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index 96b702b..3106751 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -639,6 +639,11 @@ sal_Bool GtkSalGraphics::IsNativeControlSupported( ControlType nType, ControlPar if(nPart == PART_SEPARATOR_VERT || nPart == PART_SEPARATOR_HORZ) return true; break; + + case CTRL_LISTHEADER: + if(nPart == PART_BUTTON) + return true; + break; } return false; @@ -929,11 +934,14 @@ sal_Bool GtkSalGraphics::drawNativeControl( ControlType nType, { returnVal = NWPaintGTKFixedLine( gdkDrawable, nType, nPart, aCtrlRect, aClip, nState, aValue, rCaption ); } - - if(nType==CTRL_FRAME) + else if(nType==CTRL_FRAME) { returnVal = NWPaintGTKFrame( gdkDrawable, nType, nPart, aCtrlRect, aClip, nState, aValue, rCaption); } + else if(nType==CTRL_LISTHEADER) + { + returnVal = NWPaintGTKListHeader( gdkDrawable, nType, nPart, aCtrlRect, aClip, nState, aValue, rCaption ); + } if( pixmap ) { @@ -1195,6 +1203,47 @@ sal_Bool GtkSalGraphics::getNativeControlRegion( ControlType nType, /************************************************************************ * Individual control drawing functions ************************************************************************/ +sal_Bool GtkSalGraphics::NWPaintGTKListHeader( + GdkDrawable* gdkDrawable, + ControlType, ControlPart, + const Rectangle& rControlRectangle, + const clipList& rClipList, + ControlState nState, const ImplControlValue&, + const OUString& ) +{ + GtkStateType stateType; + GtkShadowType shadowType; + NWEnsureGTKTreeView( m_nXScreen ); + GtkWidget* &treeview(gWidgetData[m_nXScreen].gTreeView); + GtkTreeViewColumn* column=gtk_tree_view_get_column(GTK_TREE_VIEW(treeview),0); + GtkWidget* button=gtk_tree_view_column_get_widget(column); + while(button && !GTK_IS_BUTTON(button)) + button=gtk_widget_get_parent(button); + if(!button) + // Shouldn't ever happen + return false; + gtk_widget_realize(button); + NWConvertVCLStateToGTKState( nState, &stateType, &shadowType ); + NWSetWidgetState( button, nState, stateType ); + + GdkRectangle clipRect; + for( clipList::const_iterator it = rClipList.begin(); it != rClipList.end(); ++it ) + { + clipRect.x = it->Left(); + clipRect.y = it->Top(); + clipRect.width = it->GetWidth(); + clipRect.height = it->GetHeight(); + + gtk_paint_box(button->style,gdkDrawable,stateType,shadowType,&clipRect, + button,"button", + rControlRectangle.Left()-1, + rControlRectangle.Top(), + rControlRectangle.GetWidth()+1, + rControlRectangle.GetHeight()); + } + return true; +} + sal_Bool GtkSalGraphics::NWPaintGTKFixedLine( GdkDrawable* gdkDrawable, ControlType, ControlPart nPart, @@ -4338,6 +4387,17 @@ static void NWEnsureGTKTreeView( SalX11Screen nScreen ) if( !gWidgetData[nScreen].gTreeView ) { gWidgetData[nScreen].gTreeView = gtk_tree_view_new (); + + // Columns will be used for tree header rendering + GtkCellRenderer* renderer=gtk_cell_renderer_text_new(); + GtkTreeViewColumn* column=gtk_tree_view_column_new_with_attributes("",renderer,"text",0,NULL); + gtk_tree_view_column_set_widget(column,gtk_label_new("")); + gtk_tree_view_append_column(GTK_TREE_VIEW(gWidgetData[nScreen].gTreeView), column); + + // Add one more column so that some engines like clearlooks did render separators between columns + column=gtk_tree_view_column_new_with_attributes("",renderer,"text",0,NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(gWidgetData[nScreen].gTreeView), column); + NWAddWidgetToCacheWindow( gWidgetData[nScreen].gTreeView, nScreen ); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits