[Libreoffice-commits] .: 2 commits - sc/source vcl/inc vcl/source

Markus Mohrhard mmohrhard at kemper.freedesktop.org
Sun Aug 5 05:52:28 PDT 2012


 sc/source/ui/condformat/condformatdlg.cxx |   22 +++++++++++++++++++++-
 sc/source/ui/inc/condformatdlg.hxx        |    1 +
 vcl/inc/vcl/edit.hxx                      |    1 +
 vcl/source/control/edit.cxx               |   17 ++++++++++++++---
 4 files changed, 37 insertions(+), 4 deletions(-)

New commits:
commit 76ccb5fe45aef020f51a6c0d5ed14c95390a471f
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sun Aug 5 14:48:51 2012 +0200

    highlight invalid formulas in cond format dlg, fdo#43653, bnc#730048
    
    Change-Id: I4893eb176aca976c037f8196dd3043e98fbf91dc

diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx
index 641b02e..cd850ac 100644
--- a/sc/source/ui/condformat/condformatdlg.cxx
+++ b/sc/source/ui/condformat/condformatdlg.cxx
@@ -320,8 +320,11 @@ void ScCondFrmtEntry::Init()
     maLbEntryTypeMin.SetSelectHdl( LINK( this, ScCondFrmtEntry, EntryTypeHdl ) );
     maLbEntryTypeMax.SetSelectHdl( LINK( this, ScCondFrmtEntry, EntryTypeHdl ) );
     maLbEntryTypeMiddle.SetSelectHdl( LINK( this, ScCondFrmtEntry, EntryTypeHdl ) );
+    maEdVal1.SetStyle( maEdVal1.GetStyle() | WB_FORCECTRLBACKGROUND );
+    maEdVal2.SetStyle( maEdVal2.GetStyle() | WB_FORCECTRLBACKGROUND );
 
-
+    maEdVal1.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
+    maEdVal2.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
 
     SfxStyleSheetIterator aStyleIter( mpDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
     for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
@@ -813,6 +816,23 @@ IMPL_LINK_NOARG(ScCondFrmtEntry, TypeListHdl)
     return 0;
 }
 
+IMPL_LINK(ScCondFrmtEntry, EdModifyHdl, Edit*, pEdit)
+{
+    rtl::OUString aFormula = pEdit->GetText();
+    ScCompiler aComp( mpDoc, maPos );
+    aComp.SetGrammar( mpDoc->GetGrammar() );
+    boost::scoped_ptr<ScTokenArray> mpCode(aComp.CompileString(aFormula));
+    if(mpCode->GetCodeError())
+    {
+        pEdit->SetControlBackground(GetSettings().GetStyleSettings().GetHighlightColor());
+    }
+    else
+    {
+        pEdit->SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor());
+    }
+    return 0;
+}
+
 IMPL_LINK_NOARG(ScCondFrmtEntry, ColFormatTypeHdl)
 {
     if(maLbColorFormat.GetSelectEntryPos() < 2)
diff --git a/sc/source/ui/inc/condformatdlg.hxx b/sc/source/ui/inc/condformatdlg.hxx
index 3100d9b..98e5926 100644
--- a/sc/source/ui/inc/condformatdlg.hxx
+++ b/sc/source/ui/inc/condformatdlg.hxx
@@ -125,6 +125,7 @@ private:
     DECL_LINK( DataBarTypeSelectHdl, void* );
     DECL_LINK( ConditionTypeSelectHdl, void* );
     DECL_LINK( EntryTypeHdl, ListBox* );
+    DECL_LINK( EdModifyHdl, Edit* );
 
 public:
     ScCondFrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos );
commit 7b322f9aa315740625f265ce78dd06effd61531a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sun Aug 5 14:24:02 2012 +0200

    paint Edit's native borders after background color
    
    Change-Id: I3b5865d862ac7b9958d22d2ff1d3dc693cea2536

diff --git a/vcl/inc/vcl/edit.hxx b/vcl/inc/vcl/edit.hxx
index 16c0e2f..58f88be 100644
--- a/vcl/inc/vcl/edit.hxx
+++ b/vcl/inc/vcl/edit.hxx
@@ -105,6 +105,7 @@ private:
     SAL_DLLPRIVATE void        ImplInsertText( const rtl::OUString& rStr, const Selection* pNewSelection = 0, sal_Bool bIsUserInput = sal_False );
     SAL_DLLPRIVATE String      ImplGetValidString( const String& rString ) const;
     SAL_DLLPRIVATE void        ImplClearBackground( long nXStart, long nXEnd );
+    SAL_DLLPRIVATE void        ImplPaintBorder( long nXStart, long nXEnd );
     SAL_DLLPRIVATE void        ImplShowCursor( sal_Bool bOnlyIfVisible = sal_True );
     SAL_DLLPRIVATE void        ImplAlign();
     SAL_DLLPRIVATE void        ImplAlignAndPaint();
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 8c47e2c..2d5e53e 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -556,7 +556,7 @@ void Edit::ImplRepaint( xub_StrLen nStart, xub_StrLen nEnd, bool bLayout )
         Push( PUSH_FILLCOLOR | PUSH_LINECOLOR );
         SetLineColor();
         SetFillColor( GetControlBackground() );
-        DrawRect( Rectangle( aPos, Size( GetOutputSizePixel().Width() - 2*mnXOffset, nTH ) ) );
+        DrawRect( Rectangle( aPos, Size( GetOutputSizePixel().Width() - 2*mnXOffset, GetOutputSizePixel().Height() ) ) );
         Pop();
 
         SetTextFillColor( GetControlBackground() );
@@ -566,6 +566,8 @@ void Edit::ImplRepaint( xub_StrLen nStart, xub_StrLen nEnd, bool bLayout )
     else
         SetTextFillColor( IsControlBackground() ? GetControlBackground() : rStyleSettings.GetFieldColor() );
 
+    ImplPaintBorder( 0, GetOutputSizePixel().Width() );
+
     sal_Bool bDrawSelection = maSelection.Len() && ( HasFocus() || ( GetStyle() & WB_NOHIDESELECTION ) || mbActivePopup );
 
     long nPos = nStart ? pDX[2*nStart] : 0;
@@ -1095,6 +1097,17 @@ void Edit::ImplClearBackground( long nXStart, long nXEnd )
     aRect.Left() = nXStart;
     aRect.Right() = nXEnd;
 
+    if( !(ImplUseNativeBorder( GetStyle() ) || IsPaintTransparent()) )
+        Erase( aRect );
+}
+
+void Edit::ImplPaintBorder( long nXStart, long nXEnd )
+{
+    Point aTmpPoint;
+    Rectangle aRect( aTmpPoint, GetOutputSizePixel() );
+    aRect.Left() = nXStart;
+    aRect.Right() = nXEnd;
+
     if( ImplUseNativeBorder( GetStyle() ) || IsPaintTransparent() )
     {
         // draw the inner part by painting the whole control using its border window
@@ -1150,8 +1163,6 @@ void Edit::ImplClearBackground( long nXStart, long nXEnd )
 
         }
     }
-    else
-        Erase( aRect );
 }
 
 // -----------------------------------------------------------------------


More information about the Libreoffice-commits mailing list