[Libreoffice-commits] .: Branch 'libreoffice-3-5' - 2 commits - dbaccess/source

Petr Mladek pmladek at kemper.freedesktop.org
Tue Mar 20 04:40:56 PDT 2012


 dbaccess/source/ui/querydesign/QueryDesignView.cxx    |    2 +-
 dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx |   12 ++++++++++--
 dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx |    1 +
 3 files changed, 12 insertions(+), 3 deletions(-)

New commits:
commit 1523e93bfc9a5d96fa519c801e904aab82a2b4d4
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Mar 20 11:03:08 2012 +0100

    fdo#47560 properly separate each new sorting column
    
    Signed-off-by: Petr Mladek <pmladek at suse.cz>

diff --git a/dbaccess/source/ui/querydesign/QueryDesignView.cxx b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
index c9c6092..1a18286 100644
--- a/dbaccess/source/ui/querydesign/QueryDesignView.cxx
+++ b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
@@ -2325,9 +2325,9 @@ namespace
 
             OQueryController& rController = static_cast<OQueryController&>(_pView->getController());
             EOrderDir eOrderDir;
-            OTableFieldDescRef aDragLeft = new OTableFieldDesc();
             for( sal_uInt32 i=0 ; i<pNode->count() ; i++ )
             {
+                OTableFieldDescRef aDragLeft = new OTableFieldDesc();
                 eOrderDir = ORDER_ASC;
                 ::connectivity::OSQLParseNode*  pChild = pNode->getChild( i );
 
commit 7e0be5ebd688a5e8c2faa8f097f104c89139efeb
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Mar 20 11:01:12 2012 +0100

    fdo#47370 properly duplicate (invisible) out-of-order sort columns
    
    Keep track of position of previous sorting column and use it to decide whether to duplicate invisible new sort column
    
    Signed-off-by: Petr Mladek <pmladek at suse.cz>

diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index d13d5f9..177313c 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -68,6 +68,7 @@ const String g_strZero = String::CreateFromAscii("0");
 #define CHECKBOX_SIZE       10
 #define HANDLE_ID            0
 #define HANDLE_COLUMN_WITDH 70
+#define SORT_COLUMN_NONE    0xFFFFFFFF
 
 // -----------------------------------------------------------------------------
 namespace
@@ -113,6 +114,7 @@ OSelectionBrowseBox::OSelectionBrowseBox( Window* pParent )
                                   BROWSER_HIDECURSOR | BROWSER_HLINESFULL | BROWSER_VLINESFULL )
                    ,m_aFunctionStrings(ModuleRes(STR_QUERY_FUNCTIONS))
                    ,m_nVisibleCount(0)
+                   ,m_nLastSortColumn(SORT_COLUMN_NONE)
                    ,m_bOrderByUnRelated(sal_True)
                    ,m_bGroupByUnRelated(sal_True)
                    ,m_bStopTimer(sal_False)
@@ -418,6 +420,7 @@ void OSelectionBrowseBox::ClearAll()
             aIter = getFields().rbegin();
         }
     }
+    m_nLastSortColumn = SORT_COLUMN_NONE;
     SetUpdateMode(sal_True);
 }
 //------------------------------------------------------------------------------
@@ -1873,11 +1876,14 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const S
 //------------------------------------------------------------------------------
 void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrderDir eDir, sal_uInt32 _nCurrentPos)
 {
+    if (_nCurrentPos == 0)
+        m_nLastSortColumn = SORT_COLUMN_NONE;
+
     Reference< XConnection> xConnection = static_cast<OQueryController&>(getDesignView()->getController()).getConnection();
     if(!xConnection.is())
         return;
     DBG_CHKTHIS(OSelectionBrowseBox,NULL);
-    OSL_ENSURE(!rInfo->IsEmpty(),"AddOrder:: OTableFieldDescRef sollte nicht Empty sein!");
+    OSL_ENSURE(!rInfo->IsEmpty(),"AddOrder:: OTableFieldDescRef should not be Empty!");
     OTableFieldDescRef pEntry;
     Reference<XDatabaseMetaData> xMeta = xConnection->getMetaData();
     ::comphelper::UStringMixEqual bCase(xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers());
@@ -1896,7 +1902,7 @@ void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrde
             bCase(aAlias,rInfo->GetAlias()))
         {
             sal_uInt32 nPos = aIter - rFields.begin();
-            bAppend = _nCurrentPos > nPos;
+            bAppend = (m_nLastSortColumn != SORT_COLUMN_NONE) && (nPos <= m_nLastSortColumn);
             if ( bAppend )
                 aIter = rFields.end();
             else
@@ -1904,6 +1910,7 @@ void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrde
                 if ( !m_bOrderByUnRelated )
                     pEntry->SetVisible(sal_True);
                 pEntry->SetOrderDir( eDir );
+                m_nLastSortColumn = nPos;
             }
             break;
         }
@@ -1914,6 +1921,7 @@ void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrde
         OTableFieldDescRef pTmp = InsertField(rInfo, BROWSER_INVALIDID, sal_False, sal_False );
         if(pTmp.is())
         {
+            m_nLastSortColumn = pTmp->GetColumnId() - 1;
             if ( !m_bOrderByUnRelated && !bAppend )
                 pTmp->SetVisible(sal_True);
             pTmp->SetOrderDir( eDir );
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx
index 35b666f..50c0244 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.hxx
@@ -87,6 +87,7 @@ namespace dbaui
 
         String                              m_aFunctionStrings;
         sal_uInt16                          m_nVisibleCount;                // Anzahl der max sichtbaren Zeilen
+        sal_uInt32                          m_nLastSortColumn;              // index of last (highest) sort column
         sal_Bool                            m_bOrderByUnRelated;
         sal_Bool                            m_bGroupByUnRelated;
         sal_Bool                            m_bStopTimer;


More information about the Libreoffice-commits mailing list