[Libreoffice-commits] .: 76 commits - dbaccess/inc dbaccess/Library_dbu.mk dbaccess/qa dbaccess/source reportdesign/source

Jan Holesovsky kendy at kemper.freedesktop.org
Fri May 27 12:14:49 PDT 2011


 dbaccess/Library_dbu.mk                                     |    1 
 dbaccess/inc/dbaccess_helpid.hrc                            |    1 
 dbaccess/qa/complex/dbaccess/Query.java                     |   49 +--
 dbaccess/qa/complex/dbaccess/RowSet.java                    |    4 
 dbaccess/qa/complex/dbaccess/SingleSelectQueryComposer.java |   90 +++---
 dbaccess/source/core/api/CacheSet.cxx                       |   15 +
 dbaccess/source/core/api/CacheSet.hxx                       |    3 
 dbaccess/source/core/api/KeySet.cxx                         |   61 +++-
 dbaccess/source/core/api/KeySet.hxx                         |    9 
 dbaccess/source/core/api/OptimisticSet.cxx                  |    5 
 dbaccess/source/core/api/OptimisticSet.hxx                  |    3 
 dbaccess/source/core/api/RowSet.cxx                         |   87 +++--
 dbaccess/source/core/api/RowSetBase.cxx                     |    9 
 dbaccess/source/core/api/RowSetBase.hxx                     |    3 
 dbaccess/source/core/api/RowSetCache.cxx                    |  163 +++++++---
 dbaccess/source/core/api/SingleSelectQueryComposer.cxx      |   28 +
 dbaccess/source/core/dataaccess/SharedConnection.cxx        |    2 
 dbaccess/source/core/dataaccess/datasource.cxx              |    2 
 dbaccess/source/core/misc/DatabaseDataProvider.cxx          |    2 
 dbaccess/source/ui/app/AppController.cxx                    |  106 ++++---
 dbaccess/source/ui/app/AppControllerGen.cxx                 |    1 
 dbaccess/source/ui/app/AppDetailView.cxx                    |    8 
 dbaccess/source/ui/app/app.src                              |    6 
 dbaccess/source/ui/app/closeveto.cxx                        |  180 ++++++++++++
 dbaccess/source/ui/app/closeveto.hxx                        |   67 ++++
 dbaccess/source/ui/browser/brwctrlr.cxx                     |   18 -
 dbaccess/source/ui/browser/genericcontroller.cxx            |    3 
 dbaccess/source/ui/browser/unodatbr.cxx                     |   58 ++-
 dbaccess/source/ui/control/FieldDescControl.cxx             |   30 --
 dbaccess/source/ui/dlg/DbAdminImpl.cxx                      |    2 
 dbaccess/source/ui/dlg/advancedsettings.cxx                 |   33 +-
 dbaccess/source/ui/dlg/advancedsettings.hrc                 |    1 
 dbaccess/source/ui/dlg/advancedsettings.hxx                 |    1 
 dbaccess/source/ui/dlg/advancedsettings.src                 |   17 -
 dbaccess/source/ui/dlg/dbadmin.cxx                          |    2 
 dbaccess/source/ui/inc/dbu_qry.hrc                          |    4 
 dbaccess/source/ui/inc/dsitems.hxx                          |    3 
 dbaccess/source/ui/inc/dsmeta.hxx                           |    1 
 dbaccess/source/ui/misc/DExport.cxx                         |    3 
 dbaccess/source/ui/misc/databaseobjectview.cxx              |    3 
 dbaccess/source/ui/misc/dsmeta.cxx                          |    1 
 dbaccess/source/ui/querydesign/QueryDesignView.cxx          |   12 
 dbaccess/source/ui/querydesign/query.src                    |    8 
 dbaccess/source/ui/tabledesign/FieldDescriptions.cxx        |    1 
 dbaccess/source/ui/tabledesign/TEditControl.cxx             |   22 -
 reportdesign/source/core/sdr/RptObject.cxx                  |   32 +-
 reportdesign/source/ui/inc/ReportSection.hxx                |    4 
 reportdesign/source/ui/inc/ReportWindow.hxx                 |    9 
 reportdesign/source/ui/inspection/GeometryHandler.cxx       |    8 
 reportdesign/source/ui/misc/ColorListener.cxx               |   16 -
 reportdesign/source/ui/misc/UITools.cxx                     |   23 -
 reportdesign/source/ui/report/DesignView.cxx                |    5 
 reportdesign/source/ui/report/EndMarker.cxx                 |    5 
 reportdesign/source/ui/report/ReportController.cxx          |    8 
 reportdesign/source/ui/report/ReportSection.cxx             |  163 +++++-----
 reportdesign/source/ui/report/ReportWindow.cxx              |   14 
 reportdesign/source/ui/report/ScrollHelper.cxx              |    2 
 reportdesign/source/ui/report/SectionView.cxx               |    1 
 reportdesign/source/ui/report/SectionWindow.cxx             |   29 +
 reportdesign/source/ui/report/StartMarker.cxx               |   17 -
 reportdesign/source/ui/report/ViewsWindow.cxx               |   78 ++++-
 reportdesign/source/ui/report/dlgedfunc.cxx                 |   16 -
 62 files changed, 1065 insertions(+), 493 deletions(-)

New commits:
commit 1b9d68febdb9b19e3255aa88b0b52bb3b5682669
Merge: 7c6061d... 5d3edf5...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Fri May 27 20:49:14 2011 +0200

    Merge branch 'master' of git://anongit.freedesktop.org/libreoffice/base

commit 7c6061d701fb4c64ab998223fd4328435c23d994
Merge: 3152eef... 2452624...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Fri May 27 20:39:17 2011 +0200

    Merge remote-tracking branch 'origin/integration/dev300_m106'
    
    Conflicts:
    	dbaccess/source/ui/app/makefile.mk

diff --cc dbaccess/Library_dbu.mk
index 68472cd,0000000..7f8c6db
mode 100644,000000..100644
--- a/dbaccess/Library_dbu.mk
+++ b/dbaccess/Library_dbu.mk
@@@ -1,320 -1,0 +1,321 @@@
 +# 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 or as specified alternatively below. 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
 +#       David Tardon, Red Hat Inc. <dtardon at redhat.com>
 +# Portions created by the Initial Developer are Copyright (C) 2010 the
 +# Initial Developer. All Rights Reserved.
 +#
 +# Major Contributor(s):
 +#
 +# For minor contributions see the git repository.
 +#
 +# 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.
 +
 +$(eval $(call gb_Library_Library,dbu))
 +
 +$(eval $(call gb_Library_add_precompiled_header,dbu,$(SRCDIR)/dbaccess/inc/pch/precompiled_dbaccess))
 +
 +$(eval $(call gb_Library_set_include,dbu,\
 +    $$(INCLUDE) \
 +    -I$(realpath $(SRCDIR)/dbaccess/inc) \
 +    -I$(realpath $(SRCDIR)/dbaccess/inc/pch) \
 +    -I$(realpath $(SRCDIR)/dbaccess/source/inc) \
 +    -I$(realpath $(SRCDIR)/dbaccess/source/ui/inc) \
 +    -I$(WORKDIR)/inc/dbaccess \
 +    -I$(OUTDIR)/inc \
 +    -I$(OUTDIR)/inc/offuh \
 +))
 +
 +$(eval $(call gb_Library_set_defs,dbu,\
 +    $$(DEFS) \
 +    -DDBACCESS_DLLIMPLEMENTATION \
 +    $(if $(filter YES,$(SYSTEM_ODBC_HEADERS)),-DSYSTEM_ODBC_HEADERS) \
 +))
 +
 +ifeq (,$(strip $(PROF_EDITION)))
 +$(eval $(call gb_Library_set_defs,dbu,\
 +    $$(DEFS) \
 +    -DWINDOWS_VISTA_PSDK \
 +))
 +endif
 +
 +ifeq ($(GUI)$(COM),WNTGCC) # for adoint.h
 +$(eval $(call gb_Library_set_cflags,dbu,\
 +    $$(CFLAGS) \
 +    -fpermissive \
 +))
 +endif
 +
 +$(eval $(call gb_Library_add_linked_libs,dbu,\
 +    comphelper \
 +    cppu \
 +    cppuhelper \
 +    dba \
 +    dbtools \
 +    editeng \
 +    fwe \
 +    sal \
 +    salhelper \
 +    sfx \
 +    sot \
 +    svl \
 +    svt \
 +    svxcore \
 +    svx \
 +    tk \
 +    tl \
 +    ucbhelper \
 +    utl \
 +    vcl \
 +    $(gb_STDLIBS) \
 +))
 +
 +ifeq ($(GUI),WNT)
 +$(eval $(call gb_Library_add_linked_libs,dbu,\
 +    ole32 \
 +    oleaut32 \
 +    uuid \
 +))
 +endif
 +
 +$(eval $(call gb_Library_set_componentfile,dbu,dbaccess/util/dbu))
 +
 +$(eval $(call gb_Library_add_exception_objects,dbu,\
 +    dbaccess/source/shared/dbu_reghelper \
 +    dbaccess/source/ui/app/AppController \
 +    dbaccess/source/ui/app/AppControllerDnD \
 +    dbaccess/source/ui/app/AppControllerGen \
 +    dbaccess/source/ui/app/AppDetailPageHelper \
 +    dbaccess/source/ui/app/AppDetailView \
 +    dbaccess/source/ui/app/AppIconControl \
 +    dbaccess/source/ui/app/AppSwapWindow \
 +    dbaccess/source/ui/app/AppTitleWindow \
 +    dbaccess/source/ui/app/AppView \
++    dbaccess/source/ui/app/closeveto \
 +    dbaccess/source/ui/app/subcomponentmanager \
 +    dbaccess/source/ui/browser/AsyncronousLink \
 +    dbaccess/source/ui/browser/brwctrlr \
 +    dbaccess/source/ui/browser/brwview \
 +    dbaccess/source/ui/browser/dataview \
 +    dbaccess/source/ui/browser/dbexchange \
 +    dbaccess/source/ui/browser/dbloader \
 +    dbaccess/source/ui/browser/dbtreemodel \
 +    dbaccess/source/ui/browser/dbtreeview \
 +    dbaccess/source/ui/browser/dsbrowserDnD \
 +    dbaccess/source/ui/browser/dsEntriesNoExp \
 +    dbaccess/source/ui/browser/exsrcbrw \
 +    dbaccess/source/ui/browser/formadapter \
 +    dbaccess/source/ui/browser/genericcontroller \
 +    dbaccess/source/ui/browser/sbagrid \
 +    dbaccess/source/ui/browser/sbamultiplex \
 +    dbaccess/source/ui/browser/unodatbr \
 +    dbaccess/source/ui/control/charsetlistbox \
 +    dbaccess/source/ui/control/ColumnControlWindow \
 +    dbaccess/source/ui/control/curledit \
 +    dbaccess/source/ui/control/dbtreelistbox \
 +    dbaccess/source/ui/control/FieldDescControl \
 +    dbaccess/source/ui/control/listviewitems \
 +    dbaccess/source/ui/control/marktree \
 +    dbaccess/source/ui/control/opendoccontrols \
 +    dbaccess/source/ui/control/RelationControl \
 +    dbaccess/source/ui/control/sqledit \
 +    dbaccess/source/ui/control/SqlNameEdit \
 +    dbaccess/source/ui/control/statusbarontroller \
 +    dbaccess/source/ui/control/TableGrantCtrl \
 +    dbaccess/source/ui/control/tabletree \
 +    dbaccess/source/ui/control/toolboxcontroller \
 +    dbaccess/source/ui/control/undosqledit \
 +    dbaccess/source/ui/control/VertSplitView \
 +    dbaccess/source/ui/dlg/AdabasStat \
 +    dbaccess/source/ui/dlg/admincontrols \
 +    dbaccess/source/ui/dlg/adminpages \
 +    dbaccess/source/ui/dlg/adtabdlg \
 +    dbaccess/source/ui/dlg/advancedsettings \
 +    dbaccess/source/ui/dlg/CollectionView \
 +    dbaccess/source/ui/dlg/ConnectionHelper \
 +    dbaccess/source/ui/dlg/ConnectionPage \
 +    dbaccess/source/ui/dlg/ConnectionPageSetup \
 +    dbaccess/source/ui/dlg/dbadmin \
 +    dbaccess/source/ui/dlg/DbAdminImpl \
 +    dbaccess/source/ui/dlg/dbfindex \
 +    dbaccess/source/ui/dlg/DBSetupConnectionPages \
 +    dbaccess/source/ui/dlg/dbwiz \
 +    dbaccess/source/ui/dlg/dbwizsetup \
 +    dbaccess/source/ui/dlg/detailpages \
 +    dbaccess/source/ui/dlg/directsql \
 +    dbaccess/source/ui/dlg/dlgattr \
 +    dbaccess/source/ui/dlg/dlgsave \
 +    dbaccess/source/ui/dlg/dlgsize \
 +    dbaccess/source/ui/dlg/DriverSettings \
 +    dbaccess/source/ui/dlg/dsselect \
 +    dbaccess/source/ui/dlg/finteraction \
 +    dbaccess/source/ui/dlg/generalpage \
 +    dbaccess/source/ui/dlg/indexdialog \
 +    dbaccess/source/ui/dlg/indexfieldscontrol \
 +    dbaccess/source/ui/dlg/odbcconfig \
 +    dbaccess/source/ui/dlg/paramdialog \
 +    dbaccess/source/ui/dlg/queryfilter \
 +    dbaccess/source/ui/dlg/queryorder \
 +    dbaccess/source/ui/dlg/RelationDlg \
 +    dbaccess/source/ui/dlg/sqlmessage \
 +    dbaccess/source/ui/dlg/tablespage \
 +    dbaccess/source/ui/dlg/TablesSingleDlg \
 +    dbaccess/source/ui/dlg/TextConnectionHelper \
 +    dbaccess/source/ui/dlg/textconnectionsettings \
 +    dbaccess/source/ui/dlg/UserAdmin \
 +    dbaccess/source/ui/dlg/UserAdminDlg \
 +    dbaccess/source/ui/misc/asyncmodaldialog \
 +    dbaccess/source/ui/misc/charsets \
 +    dbaccess/source/ui/misc/controllerframe \
 +    dbaccess/source/ui/misc/databaseobjectview \
 +    dbaccess/source/ui/misc/datasourceconnector \
 +    dbaccess/source/ui/misc/dbaundomanager \
 +    dbaccess/source/ui/misc/dbsubcomponentcontroller \
 +    dbaccess/source/ui/misc/defaultobjectnamecheck \
 +    dbaccess/source/ui/misc/DExport \
 +    dbaccess/source/ui/misc/dsmeta \
 +    dbaccess/source/ui/misc/HtmlReader \
 +    dbaccess/source/ui/misc/imageprovider \
 +    dbaccess/source/ui/misc/indexcollection \
 +    dbaccess/source/ui/misc/linkeddocuments \
 +    dbaccess/source/ui/misc/moduledbu \
 +    dbaccess/source/ui/misc/propertysetitem \
 +    dbaccess/source/ui/misc/propertystorage \
 +    dbaccess/source/ui/misc/RowSetDrop \
 +    dbaccess/source/ui/misc/RtfReader \
 +    dbaccess/source/ui/misc/singledoccontroller \
 +    dbaccess/source/ui/misc/stringlistitem \
 +    dbaccess/source/ui/misc/TableCopyHelper \
 +    dbaccess/source/ui/misc/TokenWriter \
 +    dbaccess/source/ui/misc/ToolBoxHelper \
 +    dbaccess/source/ui/misc/uiservices \
 +    dbaccess/source/ui/misc/UITools \
 +    dbaccess/source/ui/misc/WColumnSelect \
 +    dbaccess/source/ui/misc/WCopyTable \
 +    dbaccess/source/ui/misc/WCPage \
 +    dbaccess/source/ui/misc/WExtendPages \
 +    dbaccess/source/ui/misc/WNameMatch \
 +    dbaccess/source/ui/misc/WTypeSelect \
 +    dbaccess/source/ui/querydesign/ConnectionLine \
 +    dbaccess/source/ui/querydesign/ConnectionLineAccess \
 +    dbaccess/source/ui/querydesign/JAccess \
 +    dbaccess/source/ui/querydesign/JoinController \
 +    dbaccess/source/ui/querydesign/JoinDesignView \
 +    dbaccess/source/ui/querydesign/JoinExchange \
 +    dbaccess/source/ui/querydesign/JoinTableView \
 +    dbaccess/source/ui/querydesign/QTableConnection \
 +    dbaccess/source/ui/querydesign/QTableConnectionData \
 +    dbaccess/source/ui/querydesign/QTableWindow \
 +    dbaccess/source/ui/querydesign/QTableWindowData \
 +    dbaccess/source/ui/querydesign/querycontainerwindow \
 +    dbaccess/source/ui/querydesign/querycontroller \
 +    dbaccess/source/ui/querydesign/QueryDesignView \
 +    dbaccess/source/ui/querydesign/querydlg \
 +    dbaccess/source/ui/querydesign/QueryMoveTabWinUndoAct \
 +    dbaccess/source/ui/querydesign/QueryTabConnUndoAction \
 +    dbaccess/source/ui/querydesign/QueryTableView \
 +    dbaccess/source/ui/querydesign/QueryTabWinUndoAct \
 +    dbaccess/source/ui/querydesign/QueryTextView \
 +    dbaccess/source/ui/querydesign/queryview \
 +    dbaccess/source/ui/querydesign/QueryViewSwitch \
 +    dbaccess/source/ui/querydesign/SelectionBrowseBox \
 +    dbaccess/source/ui/querydesign/TableConnection \
 +    dbaccess/source/ui/querydesign/TableConnectionData \
 +    dbaccess/source/ui/querydesign/TableFieldDescription \
 +    dbaccess/source/ui/querydesign/TableWindow \
 +    dbaccess/source/ui/querydesign/TableWindowAccess \
 +    dbaccess/source/ui/querydesign/TableWindowData \
 +    dbaccess/source/ui/querydesign/TableWindowListBox \
 +    dbaccess/source/ui/querydesign/TableWindowTitle \
 +    dbaccess/source/ui/relationdesign/RelationController \
 +    dbaccess/source/ui/relationdesign/RelationDesignView \
 +    dbaccess/source/ui/relationdesign/RelationTableView \
 +    dbaccess/source/ui/relationdesign/RTableConnection \
 +    dbaccess/source/ui/relationdesign/RTableConnectionData \
 +    dbaccess/source/ui/tabledesign/FieldDescGenWin \
 +    dbaccess/source/ui/tabledesign/FieldDescriptions \
 +    dbaccess/source/ui/tabledesign/TableController \
 +    dbaccess/source/ui/tabledesign/TableDesignControl \
 +    dbaccess/source/ui/tabledesign/TableDesignHelpBar \
 +    dbaccess/source/ui/tabledesign/TableDesignView \
 +    dbaccess/source/ui/tabledesign/TableFieldControl \
 +    dbaccess/source/ui/tabledesign/TableFieldDescWin \
 +    dbaccess/source/ui/tabledesign/TableRow \
 +    dbaccess/source/ui/tabledesign/TableRowExchange \
 +    dbaccess/source/ui/tabledesign/TableUndo \
 +    dbaccess/source/ui/tabledesign/TEditControl \
 +    dbaccess/source/ui/uno/admindlg \
 +    dbaccess/source/ui/uno/AdvancedSettingsDlg \
 +    dbaccess/source/ui/uno/ColumnControl \
 +    dbaccess/source/ui/uno/ColumnModel \
 +    dbaccess/source/ui/uno/ColumnPeer \
 +    dbaccess/source/ui/uno/composerdialogs \
 +    dbaccess/source/ui/uno/dbinteraction \
 +    dbaccess/source/ui/uno/DBTypeWizDlg \
 +    dbaccess/source/ui/uno/DBTypeWizDlgSetup \
 +    dbaccess/source/ui/uno/TableFilterDlg \
 +    dbaccess/source/ui/uno/textconnectionsettings_uno \
 +    dbaccess/source/ui/uno/unoadmin \
 +    dbaccess/source/ui/uno/unoDirectSql \
 +    dbaccess/source/ui/uno/unosqlmessage \
 +    dbaccess/source/ui/uno/UserSettingsDlg \
 +))
 +
 +$(eval $(call gb_Library_add_noexception_objects,dbu,\
 +    dbaccess/source/shared/dbustrings \
 +    dbaccess/source/ui/control/ScrollHelper \
 +    dbaccess/source/ui/dlg/optionalboolitem \
 +    dbaccess/source/ui/querydesign/ConnectionLineData \
 +    dbaccess/source/ui/querydesign/TableFieldInfo \
 +))
 +
 +ifeq ($(GUI),WNT)
 +ifneq (,$(strip $(WINDOWS_VISTA_PSDK)))
 +ifeq (,$(strip $(PROF_EDITION)))
 +dbu_DISABLE_ADO := $(true)
 +endif
 +endif
 +ifneq ($(dbu_DISABLE_ADO),$(true))
 +$(eval $(call gb_Library_add_noexception_objects,dbu,\
 +    dbaccess/source/ui/dlg/adodatalinks \
 +))
 +endif
 +endif
 +
 +# workaround for issue http://qa.openoffice.org/issues/show_bug.cgi?id=102305 Linux specific
 +ifeq ($(COM),GCC)
 +$(eval $(call gb_Library_add_cxxobjects,dbu,\
 +    dbaccess/source/ui/uno/copytablewizard \
 +    , $(gb_LinkTarget_EXCEPTIONFLAGS) $(gb_COMPILERNOOPTFLAGS) \
 +))
 +else
 +$(eval $(call gb_Library_add_exception_objects,dbu,\
 +    dbaccess/source/ui/uno/copytablewizard \
 +))
 +endif
 +
 +$(foreach object,\
 +    dbaccess/source/ui/dlg/ConnectionHelper \
 +    dbaccess/source/ui/dlg/ConnectionPage \
 +    dbaccess/source/ui/dlg/ConnectionPageSetup \
 +    dbaccess/source/ui/dlg/DBSetupConnectionPages \
 +    dbaccess/source/ui/dlg/detailpages \
 +    dbaccess/source/ui/dlg/tablespage \
 +    dbaccess/source/ui/dlg/TextConnectionHelper \
 +	,$(eval $(call gb_CxxObject_get_target,$(object)) : $(WORKDIR)/inc/dbaccess/AutoControls.hrc))
 +
 +# vim: set noet ts=4 sw=4:
diff --cc dbaccess/source/core/api/RowSetCache.cxx
index 4fba5f4,403afc4..364bfbf
--- a/dbaccess/source/core/api/RowSetCache.cxx
+++ b/dbaccess/source/core/api/RowSetCache.cxx
@@@ -267,6 -273,16 +273,16 @@@ ORowSetCache::ORowSetCache(const Refere
  
          if(!bAllKeysFound )
          {
+             if ( bBookmarkable )
 -            { 
++            {
+                 // here I know that we have a read only bookmarable cursor
+                 _xRs->beforeFirst();
+                 m_nPrivileges = Privilege::SELECT;
+                 m_pCacheSet = new WrappedResultSet(i_nMaxRows);
+                 m_xCacheSet = m_pCacheSet;
+                 m_pCacheSet->construct(_xRs,i_sRowSetFilter);
+                 return;
+             }
              m_pCacheSet = new OStaticSet(i_nMaxRows);
              m_xCacheSet = m_pCacheSet;
              m_pCacheSet->construct(_xRs,i_sRowSetFilter);
@@@ -703,10 -740,22 +740,22 @@@ sal_Bool ORowSetCache::fillMatrix(sal_I
  {
      OSL_ENSURE(_nNewStartPos != _nNewEndPos,"ORowSetCache::fillMatrix: StartPos and EndPos can not be equal!");
      // fill the whole window with new data
-     ORowSetMatrix::iterator aIter = m_pMatrix->begin();
-     sal_Bool bCheck = m_pCacheSet->absolute(_nNewStartPos); // -1 no need to
+     ORowSetMatrix::iterator aIter;
+     sal_Int32 i;
+     sal_Bool bCheck;
+     if ( _nNewStartPos == -1 )
+     {
+         aIter = m_pMatrix->begin() + m_nEndPos;
+         i = m_nEndPos+1;
+     }
+     else
+     {
+         aIter = m_pMatrix->begin();
+         i = _nNewStartPos;
+     }
+     bCheck = m_pCacheSet->absolute(i); // -1 no need to
+ 
 -    
 +
-     sal_Int32 i=_nNewStartPos;
      for(;i<_nNewEndPos;++i,++aIter)
      {
          if(bCheck)
diff --cc dbaccess/source/ui/app/AppDetailView.cxx
index 37a2368,89b21d6..21fe3ca
--- a/dbaccess/source/ui/app/AppDetailView.cxx
+++ b/dbaccess/source/ui/app/AppDetailView.cxx
@@@ -367,6 -369,12 +369,12 @@@ OTasksWindow::OTasksWindow(Window* _pPa
      m_aHelpText.SetHelpId(HID_APP_HELP_TEXT);
      m_aDescription.SetHelpId(HID_APP_DESCRIPTION_TEXT);
      m_aDescription.SetText(ModuleRes(STR_DESCRIPTION));
+ 
+     ImageProvider aImageProvider;
+     Image aFolderImage = aImageProvider.getFolderImage( DatabaseObject::FORM );
+     m_aCreation.SetDefaultCollapsedEntryBmp( aFolderImage );
+     m_aCreation.SetDefaultExpandedEntryBmp( aFolderImage );
 -    
++
      ImplInitSettings(sal_True,sal_True,sal_True);
  }
  // -----------------------------------------------------------------------------
diff --cc dbaccess/source/ui/app/closeveto.cxx
index 0000000,936c769..558df26
mode 000000,100644..100644
--- a/dbaccess/source/ui/app/closeveto.cxx
+++ b/dbaccess/source/ui/app/closeveto.cxx
@@@ -1,0 -1,180 +1,180 @@@
+ /*************************************************************************
+  * 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.
+  *
+  ************************************************************************/
+ 
+ #include "precompiled_dbaccess.hxx"
+ 
+ #include "closeveto.hxx"
+ 
+ /** === begin UNO includes === **/
+ #include <com/sun/star/util/XCloseable.hpp>
+ /** === end UNO includes === **/
+ 
+ #include <cppuhelper/implbase1.hxx>
+ #include <rtl/ref.hxx>
+ #include <tools/diagnose_ex.h>
+ 
+ //......................................................................................................................
+ namespace dbaui
+ {
+ //......................................................................................................................
+ 
+     /** === begin UNO using === **/
+     using ::com::sun::star::uno::Reference;
+     using ::com::sun::star::uno::XInterface;
+     using ::com::sun::star::uno::UNO_QUERY;
+     using ::com::sun::star::uno::UNO_QUERY_THROW;
+     using ::com::sun::star::uno::UNO_SET_THROW;
+     using ::com::sun::star::uno::Exception;
+     using ::com::sun::star::uno::RuntimeException;
+     using ::com::sun::star::uno::Any;
+     using ::com::sun::star::uno::makeAny;
+     using ::com::sun::star::uno::Sequence;
+     using ::com::sun::star::uno::Type;
+     using ::com::sun::star::util::XCloseable;
+     using ::com::sun::star::util::XCloseListener;
+     using ::com::sun::star::util::CloseVetoException;
+     using ::com::sun::star::lang::EventObject;
+     /** === end UNO using === **/
+ 
+     //==================================================================================================================
+     //= CloseListener_Impl
+     //==================================================================================================================
+     typedef ::cppu::WeakImplHelper1 <   XCloseListener
+                                     >   CloseListener_Base;
+     class DBACCESS_DLLPRIVATE CloseListener_Impl : public CloseListener_Base
+     {
+     public:
+         CloseListener_Impl()
+             :m_bHasOwnership( false )
+         {
+         }
+ 
+         // XCloseListener
+         virtual void SAL_CALL queryClosing( const EventObject& Source, ::sal_Bool GetsOwnership ) throw (CloseVetoException, RuntimeException);
+         virtual void SAL_CALL notifyClosing( const EventObject& Source ) throw (RuntimeException);
+ 
+         // XEventListener
+         virtual void SAL_CALL disposing( const EventObject& Source) throw (RuntimeException);
+ 
+         bool hasOwnership() const { return m_bHasOwnership; }
+ 
+     protected:
+         ~CloseListener_Impl()
+         {
+         }
+ 
+     private:
+         bool    m_bHasOwnership;
+     };
+ 
+     //------------------------------------------------------------------------------------------------------------------
+     void SAL_CALL CloseListener_Impl::queryClosing( const EventObject& i_source, ::sal_Bool i_deliverOwnership ) throw (CloseVetoException, RuntimeException)
+     {
+         (void)i_source;
+ 
+         if ( !m_bHasOwnership )
+             m_bHasOwnership = i_deliverOwnership;
+ 
+         throw CloseVetoException();
+     }
 -    
++
+     //------------------------------------------------------------------------------------------------------------------
+     void SAL_CALL CloseListener_Impl::notifyClosing( const EventObject& i_source ) throw (RuntimeException)
+     {
+         (void)i_source;
+     }
+ 
+     //------------------------------------------------------------------------------------------------------------------
+     void SAL_CALL CloseListener_Impl::disposing( const EventObject& i_source ) throw (RuntimeException)
+     {
+         (void)i_source;
+     }
+ 
+     //==================================================================================================================
+     //= CloseVeto_Data
+     //==================================================================================================================
+     struct DBACCESS_DLLPRIVATE CloseVeto_Data
+     {
+         Reference< XCloseable >                 xCloseable;
+         ::rtl::Reference< CloseListener_Impl >  pListener;
+     };
+ 
+     //==================================================================================================================
+     //= operations
+     //==================================================================================================================
+     namespace
+     {
+         //--------------------------------------------------------------------------------------------------------------
+         void lcl_init( CloseVeto_Data& i_data, const Reference< XInterface >& i_closeable )
+         {
+             i_data.xCloseable.set( i_closeable, UNO_QUERY );
+             ENSURE_OR_RETURN_VOID( i_data.xCloseable.is(), "CloseVeto: the component is not closeable!" );
+ 
+             i_data.pListener = new CloseListener_Impl;
+             i_data.xCloseable->addCloseListener( i_data.pListener.get() );
+         }
+ 
+         //--------------------------------------------------------------------------------------------------------------
+         void lcl_deinit( CloseVeto_Data& i_data )
+         {
+             if ( !i_data.xCloseable.is() )
+                 return;
+ 
+             i_data.xCloseable->removeCloseListener( i_data.pListener.get() );
+             if ( i_data.pListener->hasOwnership() )
+             {
+                 try
+                 {
+                     i_data.xCloseable->close( sal_True );
+                 }
+                 catch( const CloseVetoException& ) { }
+                 catch( const Exception& )
+                 {
+                     DBG_UNHANDLED_EXCEPTION();
+                 }
+             }
+         }
+     }
+ 
+     //==================================================================================================================
+     //= CloseVeto
+     //==================================================================================================================
+     //------------------------------------------------------------------------------------------------------------------
+     CloseVeto::CloseVeto( const Reference< XInterface >& i_closeable )
+         :m_pData( new CloseVeto_Data )
+     {
+         lcl_init( *m_pData, i_closeable );
+     }
+ 
+     //------------------------------------------------------------------------------------------------------------------
+     CloseVeto::~CloseVeto()
+     {
+         lcl_deinit( *m_pData );
+     }
+ 
+ //......................................................................................................................
+ } // namespace dbaui
+ //......................................................................................................................
diff --cc dbaccess/source/ui/querydesign/QueryDesignView.cxx
index be56580,01b52bd..18bca37
--- a/dbaccess/source/ui/querydesign/QueryDesignView.cxx
+++ b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
@@@ -2405,9 -2412,10 +2412,10 @@@ namespac
          {
              OQueryController& rController = static_cast<OQueryController&>(_pView->getController());
              ::connectivity::OSQLParseNode* pGroupBy = pSelectRoot->getChild(3)->getChild(2)->getChild(2);
-             OTableFieldDescRef aDragInfo = new OTableFieldDesc();
 -            
++
              for( sal_uInt32 i=0 ; i < pGroupBy->count() && eOk == eErrorCode; ++i )
              {
+                 OTableFieldDescRef aDragInfo = new OTableFieldDesc();
                  ::connectivity::OSQLParseNode* pParamRef = NULL;
                  ::connectivity::OSQLParseNode* pArgument = pGroupBy->getChild( i );
                  if(SQL_ISRULE(pArgument,column_ref))
diff --cc reportdesign/source/ui/misc/ColorListener.cxx
index 4b77339,0909933..0b6f261
--- a/reportdesign/source/ui/misc/ColorListener.cxx
+++ b/reportdesign/source/ui/misc/ColorListener.cxx
@@@ -81,9 -81,12 +81,12 @@@ void OColorListener::DataChanged( cons
  // -----------------------------------------------------------------------------
  void OColorListener::setCollapsed(sal_Bool _bCollapsed)
  { 
-     m_bCollapsed = _bCollapsed; 
-     if ( m_aCollapsedLink.IsSet() ) 
-         m_aCollapsedLink.Call(this);
+     if ( m_bCollapsed != _bCollapsed )
+     {
 -        m_bCollapsed = _bCollapsed; 
 -        if ( m_aCollapsedLink.IsSet() ) 
++        m_bCollapsed = _bCollapsed;
++        if ( m_aCollapsedLink.IsSet() )
+             m_aCollapsedLink.Call(this);
+     }
  }
  // -----------------------------------------------------------------------------
  void OColorListener::setMarked(sal_Bool _bMark)
diff --cc reportdesign/source/ui/report/ReportSection.cxx
index 66b5658,0a6a5e9..746505b
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@@ -538,78 -527,90 +527,90 @@@ void OReportSection::_propertyChanged(c
          else
          {
              uno::Reference<report::XReportDefinition> xReportDefinition = m_xSection->getReportDefinition();
+             const sal_Int32 nLeftMargin  = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_LEFTMARGIN);
+             const sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
+             const sal_Int32 nPaperWidth  = getStyleProperty<awt::Size>(xReportDefinition,PROPERTY_PAPERSIZE).Width;
 -            
++
              if ( _rEvent.PropertyName == PROPERTY_LEFTMARGIN )
              {
-                 const sal_Int32 nLeftMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_LEFTMARGIN);
                  m_pPage->SetLftBorder(nLeftMargin);
              }
              else if ( _rEvent.PropertyName == PROPERTY_RIGHTMARGIN )
              {
-                 const sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
                  m_pPage->SetRgtBorder(nRightMargin);
              }
- 
-             try
+             const Size aOldPageSize = m_pPage->GetSize();
+             sal_Int32 nNewHeight = 5*m_xSection->getHeight();
+             if ( aOldPageSize.Height() != nNewHeight || nPaperWidth != aOldPageSize.Width() )
              {
-                 const sal_Int32 nLeftMargin  = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_LEFTMARGIN);
-                 const sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
-                 const sal_Int32 nPaperWidth  = getStyleProperty<awt::Size>(xReportDefinition,PROPERTY_PAPERSIZE).Width;
-                 const sal_Int32 nCount = m_xSection->getCount();
-                 for (sal_Int32 i = 0; i < nCount; ++i)
+                 m_pPage->SetSize( Size( nPaperWidth,nNewHeight) );
+                 const Size aPageSize = m_pPage->GetSize();
+                 m_pView->SetWorkArea( Rectangle( Point( nLeftMargin, 0), Size(aPageSize.Width() - nLeftMargin - nRightMargin,aPageSize.Height()) ) );
+             }
+             impl_adjustObjectSizePosition(nPaperWidth,nLeftMargin,nRightMargin);
+             m_pParent->Invalidate(INVALIDATE_UPDATE | INVALIDATE_TRANSPARENT);
+         }
 -    }	
++    }
+ }
+ void OReportSection::impl_adjustObjectSizePosition(sal_Int32 i_nPaperWidth,sal_Int32 i_nLeftMargin,sal_Int32 i_nRightMargin)
+ {
+     try
+     {
+         sal_Int32 nRightBorder = i_nPaperWidth - i_nRightMargin;
+         const sal_Int32 nCount = m_xSection->getCount();
+         for (sal_Int32 i = 0; i < nCount; ++i)
+         {
+             bool bChanged = false;
+             uno::Reference< report::XReportComponent> xReportComponent(m_xSection->getByIndex(i),uno::UNO_QUERY_THROW);
+             awt::Point aPos = xReportComponent->getPosition();
+             awt::Size aSize = xReportComponent->getSize();
+             SvxShape* pShape = SvxShape::getImplementation( xReportComponent );
+             SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL;
+             if ( pObject )
+             {
+                 OObjectBase* pBase = dynamic_cast<OObjectBase*>(pObject);
+                 pBase->EndListening(sal_False);
+                 if ( aPos.X < i_nLeftMargin )
+                 {
+                     aPos.X  = i_nLeftMargin;
+                     bChanged = true;
+                 }
+                 if ( (aPos.X + aSize.Width) > nRightBorder )
                  {
-                     bool bChanged = false;
-                     uno::Reference< report::XReportComponent> xReportComponent(m_xSection->getByIndex(i),uno::UNO_QUERY_THROW);
-                     awt::Point aPos = xReportComponent->getPosition();
-                     awt::Size aSize = xReportComponent->getSize();
-                     SvxShape* pShape = SvxShape::getImplementation( xReportComponent );
-                     SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL;
-                     if ( pObject )
+                     aPos.X = nRightBorder - aSize.Width;
+                     if ( aPos.X < i_nLeftMargin )
                      {
-                         OObjectBase* pBase = dynamic_cast<OObjectBase*>(pObject);
-                         pBase->EndListening(sal_False);
-                         if ( aPos.X < nLeftMargin )
-                         {
-                             aPos.X  = nLeftMargin;
-                             bChanged = true;
-                         }
-                         if ( (aPos.X + aSize.Width) > (nPaperWidth - nRightMargin) )
-                         {
-                             aPos.X = nPaperWidth - nRightMargin - aSize.Width;
-                             if ( aPos.X < nLeftMargin )
-                             {
-                                 aSize.Width += aPos.X - nLeftMargin;
-                                 aPos.X = nLeftMargin;
-                                 // add listener around
-                                 pBase->StartListening();
-                                 xReportComponent->setSize(aSize);
-                                 pBase->EndListening(sal_False);
-                             }
-                             bChanged = true;
-                         }
-                         if ( aPos.Y < 0 )
-                             aPos.Y = 0;
-                         if ( bChanged )
-                         {
-                             xReportComponent->setPosition(aPos);
-                             correctOverlapping(pObject,*this,false);
-                             Rectangle aRet(VCLPoint(xReportComponent->getPosition()),VCLSize(xReportComponent->getSize()));
-                             aRet.setHeight(aRet.getHeight() + 1);
-                             aRet.setWidth(aRet.getWidth() + 1);
-                             if ( m_xSection.is() && (static_cast<sal_uInt32>(aRet.getHeight() + aRet.Top()) > m_xSection->getHeight()) )
-                                 m_xSection->setHeight(aRet.getHeight() + aRet.Top());
-                         }
+                         aSize.Width += aPos.X - i_nLeftMargin;
+                         aPos.X = i_nLeftMargin;
+                         // add listener around
                          pBase->StartListening();
+                         xReportComponent->setSize(aSize);
+                         pBase->EndListening(sal_False);
                      }
+                     bChanged = true;
                  }
+                 if ( aPos.Y < 0 )
+                     aPos.Y = 0;
+                 if ( bChanged )
+                 {
+                     xReportComponent->setPosition(aPos);
+                     correctOverlapping(pObject,*this,false);
+                     Rectangle aRet(VCLPoint(xReportComponent->getPosition()),VCLSize(xReportComponent->getSize()));
+                     aRet.setHeight(aRet.getHeight() + 1);
+                     aRet.setWidth(aRet.getWidth() + 1);
+                     if ( m_xSection.is() && (static_cast<sal_uInt32>(aRet.getHeight() + aRet.Top()) > m_xSection->getHeight()) )
+                         m_xSection->setHeight(aRet.getHeight() + aRet.Top());
+ 
+                     pObject->RecalcBoundRect();
+                 }
+                 pBase->StartListening();
              }
-             catch(uno::Exception)
-             {
-                 OSL_FAIL("Exception caught: OReportSection::_propertyChanged(");
-             }
- 
-             Resize();
          }
      }
+     catch(uno::Exception)
+     {
+         OSL_FAIL("Exception caught: OReportSection::_propertyChanged(");
+     }
  }
  //------------------------------------------------------------------------------
  sal_Bool OReportSection::handleKeyEvent(const KeyEvent& _rEvent)
diff --cc reportdesign/source/ui/report/ReportWindow.cxx
index 41ff6ab,4710ba0..680b23a
--- a/reportdesign/source/ui/report/ReportWindow.cxx
+++ b/reportdesign/source/ui/report/ReportWindow.cxx
@@@ -436,6 -441,15 +441,15 @@@ sal_uInt16 OReportWindow::getZoomFactor
  
      return nZoom;    
  }
+ // -----------------------------------------------------------------------------
+ void OReportWindow::_propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException)
+ {
+     (void)_rEvent;
+     Resize();
+     m_aViewsWindow.Resize();
+     static sal_Int32 nIn = INVALIDATE_TRANSPARENT;
 -    Invalidate(nIn);    
++    Invalidate(nIn);
+ }
  //==================================================================
  }	//rptui
  //==================================================================
diff --cc reportdesign/source/ui/report/ViewsWindow.cxx
index b2601e1,7858483..03b003d
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@@ -246,8 -246,9 +246,9 @@@ void OViewsWindow::resize(const OSectio
          if ( bSet )
          {
              impl_resizeSectionWindow(*pSectionWindow.get(),aStartPoint,bSet);
-             pSectionWindow->Invalidate(INVALIDATE_NOERASE | INVALIDATE_NOCHILDREN | INVALIDATE_TRANSPARENT);
-             pSectionWindow->getStartMarker().Invalidate(INVALIDATE_NOERASE | INVALIDATE_NOCHILDREN | INVALIDATE_TRANSPARENT );
+             static sal_Int32 nIn = INVALIDATE_UPDATE | INVALIDATE_TRANSPARENT;
 -            pSectionWindow->getStartMarker().Invalidate( nIn ); // INVALIDATE_NOERASE |INVALIDATE_NOCHILDREN| INVALIDATE_TRANSPARENT 
++            pSectionWindow->getStartMarker().Invalidate( nIn ); // INVALIDATE_NOERASE |INVALIDATE_NOCHILDREN| INVALIDATE_TRANSPARENT
+             pSectionWindow->getEndMarker().Invalidate( nIn );
          }
      }
      Fraction aStartWidth(long(REPORT_STARTMARKER_WIDTH));
@@@ -1544,11 -1546,56 +1546,56 @@@ void OViewsWindow::handleKey(const KeyC
                          for (sal_uInt32 i =  0; !bCheck && i < rMarkList.GetMarkCount();++i )
                          {
                              SdrMark* pMark = rMarkList.GetMark(i);
-                             bCheck = dynamic_cast<OUnoObject*>(pMark->GetMarkedSdrObj()) != NULL;
+                             bCheck = dynamic_cast<OUnoObject*>(pMark->GetMarkedSdrObj()) != NULL|| dynamic_cast<OOle2Obj*>(pMark->GetMarkedSdrObj());
                          }
                          
-                         if ( bCheck && isOver(aMarkRect,*rReportSection.getPage(),rView) )
-                             break;
 -                        
++
+                         if ( bCheck )
+                         {
+                             SdrObject* pOverlapped = isOver(aMarkRect,*rReportSection.getPage(),rView);
+                             if ( pOverlapped )
+                             {
+                                 do
+                                 {
+                                     Rectangle aOver = pOverlapped->GetLastBoundRect();
+                                     Point aPos;
+                                     if ( nCode == KEY_UP )
+                                     {
+                                         aPos.X() = aMarkRect.Left();
+                                         aPos.Y() = aOver.Top() - aMarkRect.getHeight();
+                                         nY += (aPos.Y() - aMarkRect.Top());
+                                     }
+                                     else if ( nCode == KEY_DOWN )
+                                     {
+                                         aPos.X() = aMarkRect.Left();
+                                         aPos.Y() = aOver.Bottom();
+                                         nY += (aPos.Y() - aMarkRect.Top());
+                                     }
+                                     else if ( nCode == KEY_LEFT )
+                                     {
+                                         aPos.X() = aOver.Left() - aMarkRect.getWidth();
+                                         aPos.Y() = aMarkRect.Top();
+                                         nX += (aPos.X() - aMarkRect.Left());
+                                     }
+                                     else if ( nCode == KEY_RIGHT )
+                                     {
+                                         aPos.X() = aOver.Right();
+                                         aPos.Y() = aMarkRect.Top();
+                                         nX += (aPos.X() - aMarkRect.Left());
+                                     }
+ 
+                                     aMarkRect.SetPos(aPos);
+                                     if ( !rWorkArea.IsInside( aMarkRect ) )
+                                     {
+                                         break;
+                                     }
+                                     pOverlapped = isOver(aMarkRect,*rReportSection.getPage(),rView);
+                                 }
+                                 while(pOverlapped != NULL);
+                                 if (pOverlapped != NULL)
+                                     break;
+                             }
+                         }
                      }
  
                      if ( nX != 0 || nY != 0 )
diff --cc reportdesign/source/ui/report/dlgedfunc.cxx
index 9acf262,a6a5eb4..0ae30f8
--- a/reportdesign/source/ui/report/dlgedfunc.cxx
+++ b/reportdesign/source/ui/report/dlgedfunc.cxx
@@@ -450,8 -455,7 +455,7 @@@ void DlgEdFunc::deactivateOle(bool _bSe
                  xObj->changeState( embed::EmbedStates::RUNNING );
                  m_bUiActive = false;
                  if ( m_bShowPropertyBrowser )
 -                {                    
 +                {
-                     OReportController& rController = m_pParent->getSectionWindow()->getViewsWindow()->getView()->getReportView()->getController();
                      rController.executeChecked(SID_SHOW_PROPERTYBROWSER,uno::Sequence< beans::PropertyValue >());
                  }
  
commit 2452624487700f9aa0bc385f66d7ca7818e9544d
Author: Thorsten Behrens <tbehrens at novell.com>
Date:   Mon May 23 18:33:42 2011 +0200

    Remove hc paramater from aImageProvider.getFolderImage
    
    This fixes the m106 merge.

diff --git a/dbaccess/source/ui/app/AppDetailView.cxx b/dbaccess/source/ui/app/AppDetailView.cxx
index fd31602..89b21d6 100644
--- a/dbaccess/source/ui/app/AppDetailView.cxx
+++ b/dbaccess/source/ui/app/AppDetailView.cxx
@@ -371,7 +371,7 @@ OTasksWindow::OTasksWindow(Window* _pParent,OApplicationDetailView* _pDetailView
     m_aDescription.SetText(ModuleRes(STR_DESCRIPTION));
 
     ImageProvider aImageProvider;
-    Image aFolderImage = aImageProvider.getFolderImage( DatabaseObject::FORM, false );
+    Image aFolderImage = aImageProvider.getFolderImage( DatabaseObject::FORM );
     m_aCreation.SetDefaultCollapsedEntryBmp( aFolderImage );
     m_aCreation.SetDefaultExpandedEntryBmp( aFolderImage );
     
commit e88a4fb61318f2282e21f4f55bf6e67075200fd4
Merge: 7e8a488... a446d94...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Fri Apr 22 15:07:40 2011 +0200

    Merge commit 'ooo/DEV300_m106' into libreoffice-3-4
    
    Conflicts:
    	dbaccess/source/core/api/CacheSet.cxx
    	dbaccess/source/core/api/KeySet.cxx
    	dbaccess/source/core/api/KeySet.hxx
    	dbaccess/source/core/api/OptimisticSet.hxx
    	dbaccess/source/core/api/RowSet.cxx
    	dbaccess/source/core/api/RowSetCache.cxx
    	dbaccess/source/core/api/query.cxx
    	dbaccess/source/core/dataaccess/SharedConnection.cxx
    	dbaccess/source/ui/app/AppController.cxx
    	dbaccess/source/ui/app/makefile.mk
    	dbaccess/source/ui/control/FieldDescControl.cxx
    	dbaccess/source/ui/querydesign/query.src
    	dbaccess/source/ui/tabledesign/TEditControl.cxx
    	reportdesign/source/ui/report/ReportController.cxx
    	reportdesign/source/ui/report/ReportSection.cxx
    	reportdesign/source/ui/report/SectionWindow.cxx
    	reportdesign/source/ui/report/StartMarker.cxx
    	reportdesign/source/ui/report/ViewsWindow.cxx

diff --cc dbaccess/qa/complex/dbaccess/SingleSelectQueryComposer.java
index 09a5975,a0e1c3c..f40aff9
--- a/dbaccess/qa/complex/dbaccess/SingleSelectQueryComposer.java
+++ b/dbaccess/qa/complex/dbaccess/SingleSelectQueryComposer.java
@@@ -161,6 -163,7 +163,7 @@@ public class SingleSelectQueryComposer 
          try
          {
              System.out.println("check setElementaryQuery");
 -            
++
              final String simpleQuery2 = "SELECT * FROM \"customers\" WHERE \"Name\" = 'oranges'";
              m_composer.setElementaryQuery(simpleQuery2);
              assertTrue("setElementaryQuery/getQuery inconsistent", m_composer.getQuery().equals(simpleQuery2));
@@@ -174,15 -177,15 +177,15 @@@
              checkAttributeAccess("Group", "\"City\"");
              checkAttributeAccess("Order", "\"Address\"");
              checkAttributeAccess("HavingClause", "\"ID\" <> 4");
 -            
 +
              final XIndexAccess orderColumns = m_composer.getOrderColumns();
              assertTrue("Order columns doesn't exist: \"Address\"",
-                     orderColumns != null && orderColumns.getCount() == 1 && orderColumns.getByIndex(0) != null);
+             orderColumns != null && orderColumns.getCount() == 1 && orderColumns.getByIndex(0) != null);
 -            
 +
              final XIndexAccess groupColumns = m_composer.getGroupColumns();
              assertTrue("Group columns doesn't exist: \"City\"",
-                     groupColumns != null && groupColumns.getCount() == 1 && groupColumns.getByIndex(0) != null);
+             groupColumns != null && groupColumns.getCount() == 1 && groupColumns.getByIndex(0) != null);
 -            
 +
              // XColumnsSupplier
              final XColumnsSupplier xSelectColumns = UnoRuntime.queryInterface(XColumnsSupplier.class, m_composer);
              assertTrue("no select columns, or wrong number of select columns",
@@@ -244,6 -252,7 +252,7 @@@
              final XIndexAccess parameters = suppParams.getParameters();
  
              final String expectedParamNames[] =
 -            
++
              {
                  "cname",
                  "Product Name"
@@@ -276,6 -285,7 +285,7 @@@
              m_composer.setQuery("SELECT * FROM \"customers\"");
  
              final Object initArgs[] =
 -            
++
              {
                  new NamedValue("AutomaticAddition", Boolean.valueOf(true))
              };
diff --cc dbaccess/source/core/api/CacheSet.cxx
index ca3c4d1,19a3bdd..39121e0
--- a/dbaccess/source/core/api/CacheSet.cxx
+++ b/dbaccess/source/core/api/CacheSet.cxx
@@@ -639,7 -691,21 +639,22 @@@ sal_Bool SAL_CALL OCacheSet::previous
      m_bInserted = m_bUpdated = m_bDeleted = sal_False;
      return m_xDriverSet->previous();
  }
 +
+ sal_Bool OCacheSet::last_checked( sal_Bool /*i_bFetchRow*/)
+ {
+     return last();
+ }
 -// -------------------------------------------------------------------------
++
+ sal_Bool OCacheSet::previous_checked( sal_Bool /*i_bFetchRow*/ )
+ {
+     return previous();
+ }
 -// -------------------------------------------------------------------------
++
+ sal_Bool OCacheSet::absolute_checked( sal_Int32 row,sal_Bool /*i_bFetchRow*/ )
+ {
+     return absolute(row);
+ }
 -// -------------------------------------------------------------------------
++
  void SAL_CALL OCacheSet::refreshRow(  ) throw(SQLException, RuntimeException)
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OCacheSet::refreshRow" );
diff --cc dbaccess/source/core/api/KeySet.cxx
index 5ae3385,8420c5e..a1a97b8
--- a/dbaccess/source/core/api/KeySet.cxx
+++ b/dbaccess/source/core/api/KeySet.cxx
@@@ -1178,23 -1241,29 +1186,29 @@@ sal_Bool SAL_CALL OKeySet::first(  ) th
      ++m_aKeyIter;
      if(m_aKeyIter == m_aKeyMap.end() && !fetchRow())
          m_aKeyIter = m_aKeyMap.end();
- 
-     refreshRow();
+     else
+         refreshRow();
      return m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin();
  }
 -// -----------------------------------------------------------------------------
 +
  sal_Bool SAL_CALL OKeySet::last(  ) throw(SQLException, RuntimeException)
  {
-     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::last" );
+     return last_checked(sal_True);
+ }
+ 
+ sal_Bool OKeySet::last_checked( sal_Bool i_bFetchRow)
+ {
+     RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::last_checked" );
      m_bInserted = m_bUpdated = m_bDeleted = sal_False;
      fillAllRows();
  
      m_aKeyIter = m_aKeyMap.end();
      --m_aKeyIter;
-     refreshRow();
+     if ( i_bFetchRow )
+         refreshRow();
      return m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin();
  }
 -// -----------------------------------------------------------------------------
 +
  sal_Int32 SAL_CALL OKeySet::getRow(  ) throw(SQLException, RuntimeException)
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::getRow" );
@@@ -1203,9 -1272,13 +1217,13 @@@
  
      return ::std::distance(m_aKeyMap.begin(),m_aKeyIter);
  }
 -// -----------------------------------------------------------------------------
 +
  sal_Bool SAL_CALL OKeySet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
  {
+     return absolute_checked(row,sal_True);
+ }
+ sal_Bool OKeySet::absolute_checked( sal_Int32 row,sal_Bool i_bFetchRow )
+ {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::absolute" );
      m_bInserted = m_bUpdated = m_bDeleted = sal_False;
      OSL_ENSURE(row,"absolute(0) isn't allowed!");
@@@ -1252,8 -1331,8 +1276,8 @@@ sal_Bool SAL_CALL OKeySet::relative( sa
      }
      return absolute(getRow()+rows);
  }
 -// -----------------------------------------------------------------------------
 +
- sal_Bool SAL_CALL OKeySet::previous(  ) throw(SQLException, RuntimeException)
+ sal_Bool OKeySet::previous_checked( sal_Bool i_bFetchRow )
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::previous" );
      m_bInserted = m_bUpdated = m_bDeleted = sal_False;
@@@ -1264,7 -1344,13 +1289,12 @@@
      }
      return m_aKeyIter != m_aKeyMap.begin();
  }
 -// -----------------------------------------------------------------------------
+ sal_Bool SAL_CALL OKeySet::previous(  ) throw(SQLException, RuntimeException)
+ {
+     return previous_checked(sal_True);
+ }
  
+ // -----------------------------------------------------------------------------
  void SAL_CALL OKeySet::refreshRow() throw(SQLException, RuntimeException)
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::refreshRow" );
@@@ -1319,11 -1405,20 +1349,20 @@@
      OSL_ENSURE(m_xSet.is(),"No resultset form statement!");
      sal_Bool bOK = m_xSet->next();
      if ( !bOK )
-         m_aKeyIter = m_aKeyMap.end();
-     m_xRow.set(m_xSet,UNO_QUERY);
-     OSL_ENSURE(m_xRow.is(),"No row form statement!");
+     {
+         OKeySetMatrix::iterator aTemp = m_aKeyIter;
+         ++m_aKeyIter;
+         m_aKeyMap.erase(aTemp);
+         --m_rRowCount;
+         refreshRow();
+     }
+     else
+     {
+         m_xRow.set(m_xSet,UNO_QUERY);
+         OSL_ENSURE(m_xRow.is(),"No row form statement!");
+     }
  }
 -// -----------------------------------------------------------------------------
 +
  sal_Bool OKeySet::fetchRow()
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OKeySet::fetchRow" );
diff --cc dbaccess/source/core/api/KeySet.hxx
index 826ec1a,3ce26fc..9932696
--- a/dbaccess/source/core/api/KeySet.hxx
+++ b/dbaccess/source/core/api/KeySet.hxx
@@@ -104,7 -113,8 +104,8 @@@ namespace dbacces
          ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >	m_xComposer;
          ::rtl::OUString																	m_sUpdateTableName;
          ::std::vector< ::rtl::OUString >						m_aFilterColumns;
+         sal_Int32&                                              m_rRowCount;
 -        
 +
          sal_Bool m_bRowCountFinal;
  
          /**
@@@ -151,8 -161,9 +152,9 @@@
                  const ::rtl::OUString& _rUpdateTableName,
                  const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer,
                  const ORowSetValueVector& _aParameterValueForCache,
-                 sal_Int32 i_nMaxRows);
+                 sal_Int32 i_nMaxRows,
+                 sal_Int32& o_nRowCount);
 -        
 +
          // late ctor which can throw exceptions
          virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
  
diff --cc dbaccess/source/core/api/OptimisticSet.hxx
index bcada37,c2b9857..b9b8fbe
--- a/dbaccess/source/core/api/OptimisticSet.hxx
+++ b/dbaccess/source/core/api/OptimisticSet.hxx
@@@ -77,8 -80,9 +77,9 @@@ namespace dbacces
                        const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& i_xConnection,
                        const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer,
                        const ORowSetValueVector& _aParameterValueForCache,
-                       sal_Int32 i_nMaxRows);
+                       sal_Int32 i_nMaxRows,
+                       sal_Int32& o_nRowCount);
 -        
 +
          // late ctor which can throw exceptions
          virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
  
diff --cc dbaccess/source/core/api/RowSet.cxx
index 724df9f,dd0643b..3825516
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@@ -599,9 -595,10 +599,10 @@@ void ORowSet::freeResources( bool _bCom
          m_bAfterLast	= sal_False;
          m_bNew			= sal_False;
          m_bModified		= sal_False;
+         m_bIsInsertRow	= sal_False;
          m_bLastKnownRowCountFinal = sal_False;
          m_nLastKnownRowCount      = 0;
 -        if ( m_aOldRow.isValid() )
 +        if ( m_aOldRow.is() )
              m_aOldRow->clearRow();
  
          impl_disposeParametersContainer_nothrow();
@@@ -708,9 -708,10 +709,10 @@@ void ORowSet::updateValue(sal_Int32 col
      ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
      ORowSetNotifier aNotify(this,rRow);
      m_pCache->updateValue(columnIndex,x,rRow,aNotify.getChangedColumns());
+     m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
      aNotify.firePropertyChange();
  }
 -// -------------------------------------------------------------------------
 +
  // XRowUpdate
  void SAL_CALL ORowSet::updateNull( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
  {
@@@ -723,9 -724,10 +725,10 @@@
      ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
      ORowSetNotifier aNotify(this,rRow);
      m_pCache->updateNull(columnIndex,rRow,aNotify.getChangedColumns());
+     m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
      aNotify.firePropertyChange();
  }
 -// -------------------------------------------------------------------------
 +
  void SAL_CALL ORowSet::updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(SQLException, RuntimeException)
  {
      updateValue(columnIndex,x);
@@@ -810,9 -822,10 +813,10 @@@ void SAL_CALL ORowSet::updateCharacterS
      ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
      ORowSetNotifier aNotify(this,rRow);
      m_pCache->updateCharacterStream(columnIndex,x,length,rRow,aNotify.getChangedColumns());
+     m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
      aNotify.firePropertyChange();
  }
 -// -------------------------------------------------------------------------
 +
  void SAL_CALL ORowSet::updateObject( sal_Int32 columnIndex, const Any& x ) throw(SQLException, RuntimeException)
  {
      ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
@@@ -866,8 -880,10 +871,9 @@@ void SAL_CALL ORowSet::updateNumericObj
      ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
      ORowSetNotifier aNotify(this,rRow);
      m_pCache->updateNumericObject(columnIndex,x,scale,rRow,aNotify.getChangedColumns());
+     m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
      aNotify.firePropertyChange();
  }
 -// -------------------------------------------------------------------------
  
  // XResultSetUpdate
  void SAL_CALL ORowSet::insertRow(  ) throw(SQLException, RuntimeException)
@@@ -882,63 -898,60 +888,60 @@@
      if(!m_pCache || !m_bNew || !m_bModified || m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY)
          throwFunctionSequenceException(*this);
  
-     if(m_bModified)
-     {
-         // remember old value for fire
-         sal_Bool bOld = m_bNew;
+     // remember old value for fire
+     sal_Bool bOld = m_bNew;
  
-         ORowSetRow aOldValues;
-         if ( !m_aCurrentRow.isNull() )
-             aOldValues = new ORowSetValueVector( *(*m_aCurrentRow));
-         Sequence<Any> aChangedBookmarks;
-         RowsChangeEvent aEvt(*this,RowChangeAction::INSERT,1,aChangedBookmarks);
-         notifyAllListenersRowBeforeChange(aGuard,aEvt);
+     ORowSetRow aOldValues;
+     if ( !m_aCurrentRow.isNull() )
 -        aOldValues = new ORowSetValueVector( m_aCurrentRow->getBody() );
++        aOldValues = new ORowSetValueVector( *(*m_aCurrentRow));
+     Sequence<Any> aChangedBookmarks;
+     RowsChangeEvent aEvt(*this,RowChangeAction::INSERT,1,aChangedBookmarks);
+     notifyAllListenersRowBeforeChange(aGuard,aEvt);
  
-         ::std::vector< Any > aBookmarks;
-         sal_Bool bInserted = m_pCache->insertRow(aBookmarks);
+     ::std::vector< Any > aBookmarks;
+     sal_Bool bInserted = m_pCache->insertRow(aBookmarks);
  
-         // make sure that our row is set to the new inserted row before clearing the insert flags in the cache
-         m_pCache->resetInsertRow(bInserted);
+     // make sure that our row is set to the new inserted row before clearing the insert flags in the cache
+     m_pCache->resetInsertRow(bInserted);
  
-         // notification order
-         // - column values
-         setCurrentRow( sal_False, sal_True, aOldValues, aGuard ); // we don't move here
+     // notification order
+     // - column values
+     setCurrentRow( sal_False, sal_True, aOldValues, aGuard ); // we don't move here
  
-         // read-only flag restored
-         impl_restoreDataColumnsWriteable_throw();
+     // read-only flag restored
+     impl_restoreDataColumnsWriteable_throw();
  
-         // - rowChanged
-         notifyAllListenersRowChanged(aGuard,aEvt);
+     // - rowChanged
+     notifyAllListenersRowChanged(aGuard,aEvt);
 -        
 +
-         if ( !aBookmarks.empty() )
-         {
-             RowsChangeEvent aUpEvt(*this,RowChangeAction::UPDATE,aBookmarks.size(),Sequence<Any>(&(*aBookmarks.begin()),aBookmarks.size()));
-             notifyAllListenersRowChanged(aGuard,aUpEvt);
-         }
+     if ( !aBookmarks.empty() )
+     {
+         RowsChangeEvent aUpEvt(*this,RowChangeAction::UPDATE,aBookmarks.size(),Sequence<Any>(&(*aBookmarks.begin()),aBookmarks.size()));
+         notifyAllListenersRowChanged(aGuard,aUpEvt);
+     }
  
-         // - IsModified
-         if(!m_bModified)
-             fireProperty(PROPERTY_ID_ISMODIFIED,sal_False,sal_True);
-         OSL_ENSURE( !m_bModified, "ORowSet::insertRow: just updated, but _still_ modified?" );
+     // - IsModified
+     if(!m_bModified)
+         fireProperty(PROPERTY_ID_ISMODIFIED,sal_False,sal_True);
+     OSL_ENSURE( !m_bModified, "ORowSet::insertRow: just updated, but _still_ modified?" );
  
-         // - IsNew
-         if(m_bNew != bOld)
-             fireProperty(PROPERTY_ID_ISNEW,m_bNew,bOld);
+     // - IsNew
+     if(m_bNew != bOld)
+         fireProperty(PROPERTY_ID_ISNEW,m_bNew,bOld);
  
-         // - RowCount/IsRowCountFinal
-         fireRowcount();
-     }
+     // - RowCount/IsRowCountFinal
+     fireRowcount();
  }
 -// -------------------------------------------------------------------------
 +
  sal_Int32 SAL_CALL ORowSet::getRow(  ) throw(SQLException, RuntimeException)
  {
      ::osl::MutexGuard aGuard( *m_pMutex );
 -    checkCache();    
 +    checkCache();
  
      // check if we are inserting a row
-     return (m_pCache && ( m_pCache->m_bNew || m_bModified )) ? 0 : ORowSetBase::getRow();
+     return (m_pCache && isInsertRow()) ? 0 : ORowSetBase::getRow();
  }
 -// -------------------------------------------------------------------------
 +
  void SAL_CALL ORowSet::updateRow(  ) throw(SQLException, RuntimeException)
  {
      ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
@@@ -2646,8 -2723,10 +2652,9 @@@ void ORowSet::doCancelModification( 
          m_pCache->cancelRowModification();
      }
      m_bModified = sal_False;
+     m_bIsInsertRow = sal_False;
  }
  
 -// -----------------------------------------------------------------------------
  sal_Bool ORowSet::isModification( )
  {
      return isNew();
@@@ -2663,23 -2744,17 +2670,21 @@@ sal_Bool ORowSet::isNew( 
      return m_bNew;
  }
  
 -// -----------------------------------------------------------------------------
 +sal_Bool ORowSet::isPropertyChangeNotificationEnabled() const
 +{
 +    return m_bPropChangeNotifyEnabled;
 +}
 +
  void ORowSet::checkUpdateIterator()
  {
-     if(!m_bModified && !m_bNew)
+     if(!m_bIsInsertRow)
      {
          m_pCache->setUpdateIterator(m_aCurrentRow);
          m_aCurrentRow = m_pCache->m_aInsertRow;
-         m_bModified = sal_True;
+         m_bIsInsertRow = sal_True;
      }
-     else if ( m_bNew ) // here we are modifying a value
-         m_bModified = sal_True;
  }
 -// -----------------------------------------------------------------------------
 +
  void ORowSet::checkUpdateConditions(sal_Int32 columnIndex)
  {
      checkCache();
diff --cc dbaccess/source/core/api/RowSetBase.cxx
index 0011e23,97719fc..81fbd93
--- a/dbaccess/source/core/api/RowSetBase.cxx
+++ b/dbaccess/source/core/api/RowSetBase.cxx
@@@ -255,9 -258,10 +256,10 @@@ const ORowSetValue& ORowSetBase::impl_g
          // currentrow is null when the clone moves the window
          positionCache( MOVE_NONE_REFRESH_ONLY );
          m_aCurrentRow	= m_pCache->m_aMatrixIter;
+         m_bIsInsertRow	= sal_False;
          OSL_ENSURE(!m_aCurrentRow.isNull(),"ORowSetBase::getValue: we don't stand on a valid row! Row is null.");
  
 -        bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->isValid() );
 +        bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
      }
  
      if ( bValidCurrentRow )
@@@ -396,9 -400,10 +398,10 @@@ Reference< ::com::sun::star::io::XInput
      {
          positionCache( MOVE_NONE_REFRESH_ONLY );
          m_aCurrentRow	= m_pCache->m_aMatrixIter;
+         m_bIsInsertRow	= sal_False;
          OSL_ENSURE(!m_aCurrentRow.isNull(),"ORowSetBase::getBinaryStream: we don't stand on a valid row! Row is null.");
  
 -        bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->isValid() );
 +        bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
      }
  
      if ( bValidCurrentRow )
diff --cc dbaccess/source/core/api/RowSetCache.cxx
index 4fba5f4,43b2f58..403afc4
--- a/dbaccess/source/core/api/RowSetCache.cxx
+++ b/dbaccess/source/core/api/RowSetCache.cxx
@@@ -172,10 -179,10 +178,10 @@@ ORowSetCache::ORowSetCache(const Refere
              OSL_ENSURE(xTabSup.is(),"ORowSet::execute composer isn't a tablesupplier!");
              Reference<XNameAccess> xTables = xTabSup->getTables();
              Sequence< ::rtl::OUString> aTableNames = xTables->getElementNames();
 -            if ( aTableNames.getLength() > 1 && !_rUpdateTableName.getLength() && bNeedKeySet ) 
 +            if ( aTableNames.getLength() > 1 && !_rUpdateTableName.getLength() && bNeedKeySet )
              {// here we have a join or union and nobody told us which table to update, so we update them all
                  m_nPrivileges = Privilege::SELECT|Privilege::DELETE|Privilege::INSERT|Privilege::UPDATE;
-                 OptimisticSet* pCursor = new OptimisticSet(m_aContext,xConnection,_xAnalyzer,_aParameterValueForCache,i_nMaxRows);
+                 OptimisticSet* pCursor = new OptimisticSet(m_aContext,xConnection,_xAnalyzer,_aParameterValueForCache,i_nMaxRows,m_nRowCount);
                  m_pCacheSet = pCursor;
                  m_xCacheSet = m_pCacheSet;
                  try
@@@ -265,8 -273,21 +271,18 @@@
          // need to check if we could handle this select clause
          bAllKeysFound = bAllKeysFound && (nTablesCount == 1 || checkJoin(xConnection,_xAnalyzer,aUpdateTableName));
  
 -        // || !(comphelper::hasProperty(PROPERTY_CANUPDATEINSERTEDROWS,xProp) && any2bool(xProp->getPropertyValue(PROPERTY_CANUPDATEINSERTEDROWS)))
 -
 -        // oj removed because keyset uses only the next// || (xProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_RESULTSETTYPE) && comphelper::getINT32(xProp->getPropertyValue(PROPERTY_RESULTSETTYPE)) == ResultSetType::FORWARD_ONLY)
          if(!bAllKeysFound )
          {
+             if ( bBookmarkable )
+             { 
+                 // here I know that we have a read only bookmarable cursor
+                 _xRs->beforeFirst();
+                 m_nPrivileges = Privilege::SELECT;
+                 m_pCacheSet = new WrappedResultSet(i_nMaxRows);
+                 m_xCacheSet = m_pCacheSet;
+                 m_pCacheSet->construct(_xRs,i_sRowSetFilter);
+                 return;
+             }
              m_pCacheSet = new OStaticSet(i_nMaxRows);
              m_xCacheSet = m_pCacheSet;
              m_pCacheSet->construct(_xRs,i_sRowSetFilter);
@@@ -434,7 -457,15 +450,14 @@@ void ORowSetCache::setFetchSize(sal_Int
          m_nStartPos = 0;
          m_nEndPos = _nSize;
      }
+     else if (m_nStartPos < m_nPosition && m_nPosition < m_nEndPos)
+     {
+         sal_Int32 nNewSt = -1;
+         fillMatrix(nNewSt,_nSize+1);
+         m_nStartPos = 0;
+         m_nEndPos = _nSize;
+     }
  }
 -// -------------------------------------------------------------------------
  
  // XResultSetMetaDataSupplier
  Reference< XResultSetMetaData > ORowSetCache::getMetaData(  )
@@@ -538,15 -571,18 +561,18 @@@ void ORowSetCache::updateNull(sal_Int3
      checkUpdateConditions(columnIndex);
  
      ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
-     rInsert[columnIndex].setBound(sal_True);
-     rInsert[columnIndex].setNull();
-     rInsert[columnIndex].setModified();
-     io_aRow[columnIndex].setNull();
+     if ( !rInsert[columnIndex].isNull() )
+     {
+         rInsert[columnIndex].setBound(sal_True);
+         rInsert[columnIndex].setNull();
+         rInsert[columnIndex].setModified();
+         io_aRow[columnIndex].setNull();
  
-     m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
-     impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+         m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
+         impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+     }
  }
 -// -----------------------------------------------------------------------------
 +
  void ORowSetCache::updateValue(sal_Int32 columnIndex,const ORowSetValue& x
                                 ,ORowSetValueVector::Vector& io_aRow
                                 ,::std::vector<sal_Int32>& o_ChangedColumns
@@@ -555,15 -591,18 +581,18 @@@
      checkUpdateConditions(columnIndex);
  
      ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
-     rInsert[columnIndex].setBound(sal_True);
-     rInsert[columnIndex] = x;
-     rInsert[columnIndex].setModified();
-     io_aRow[columnIndex] = rInsert[columnIndex];
+     if ( rInsert[columnIndex] != x )
+     {
+         rInsert[columnIndex].setBound(sal_True);
+         rInsert[columnIndex] = x;
+         rInsert[columnIndex].setModified();
+         io_aRow[columnIndex] = rInsert[columnIndex];
  
-     m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
-     impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+         m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
+         impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+     }
  }
 -// -------------------------------------------------------------------------
 +
  void ORowSetCache::updateCharacterStream( sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x
                                           , sal_Int32 length,ORowSetValueVector::Vector& io_aRow
                                           ,::std::vector<sal_Int32>& o_ChangedColumns
@@@ -593,15 -632,20 +622,20 @@@ void ORowSetCache::updateObject( sal_In
      checkUpdateConditions(columnIndex);
  
      ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
-     rInsert[columnIndex].setBound(sal_True);
-     rInsert[columnIndex] = x;
-     rInsert[columnIndex].setModified();
-     io_aRow[columnIndex] = rInsert[columnIndex];
+     ORowSetValue aTemp;
+     aTemp.fill(x);
+     if ( rInsert[columnIndex] != aTemp )
+     {
+         rInsert[columnIndex].setBound(sal_True);
+         rInsert[columnIndex] = aTemp;
+         rInsert[columnIndex].setModified();
+         io_aRow[columnIndex] = rInsert[columnIndex];
  
-     m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
-     impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+         m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
+         impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+     }
  }
 -// -------------------------------------------------------------------------
 +
  void ORowSetCache::updateNumericObject( sal_Int32 columnIndex, const Any& x, sal_Int32 /*scale*/
                                         ,ORowSetValueVector::Vector& io_aRow
                                         ,::std::vector<sal_Int32>& o_ChangedColumns
@@@ -610,15 -654,20 +644,20 @@@
      checkUpdateConditions(columnIndex);
  
      ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
-     rInsert[columnIndex].setBound(sal_True);
-     rInsert[columnIndex] = x;
-     rInsert[columnIndex].setModified();
-     io_aRow[columnIndex] = rInsert[columnIndex];
+     ORowSetValue aTemp;
+     aTemp.fill(x);
+     if ( rInsert[columnIndex] != aTemp )
+     {
+         rInsert[columnIndex].setBound(sal_True);
+         rInsert[columnIndex] = aTemp;
+         rInsert[columnIndex].setModified();
+         io_aRow[columnIndex] = rInsert[columnIndex];
  
-     m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
-     impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+         m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
+         impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
+     }
  }
 -// -------------------------------------------------------------------------
 +
  // XResultSet
  sal_Bool ORowSetCache::next(  )
  {
@@@ -641,14 -690,12 +680,12 @@@
  
      return !m_bAfterLast;
  }
 -// -------------------------------------------------------------------------
 +
  sal_Bool ORowSetCache::isBeforeFirst(  )
  {
-     //	return !m_nPosition;
- 
      return m_bBeforeFirst;
  }
 -// -------------------------------------------------------------------------
 +
  sal_Bool ORowSetCache::isAfterLast(  )
  {
      return m_bAfterLast;
@@@ -711,9 -770,11 +760,11 @@@ sal_Bool ORowSetCache::fillMatrix(sal_I
      {
          if(bCheck)
          {
 -            if(!aIter->isValid())
 +            if(!aIter->is())
                  *aIter = new ORowSetValueVector(m_xMetaData->getColumnCount());
              m_pCacheSet->fillValueRow(*aIter,i);
+             if(!m_bRowCountFinal)
+                 ++m_nRowCount;
          }
          else
          {	// there are no more rows found so we can fetch some before start
@@@ -749,10 -810,13 +800,12 @@@
              }
              break;
          }
-         bCheck = m_pCacheSet->next();
+         if ( i < (_nNewEndPos-1) )
+             bCheck = m_pCacheSet->next();
      }
-     // we have to read one row forward to enshure that we know when we are on last row
 -    //	m_nStartPos = _nNewStartPos;
+     // we have to read one row forward to ensure that we know when we are on last row
      // but only when we don't know it already
+     /*
      if(!m_bRowCountFinal)
      {
          if(!m_pCacheSet->next())
@@@ -765,11 -829,13 +818,12 @@@
             m_nRowCount = std::max(i,m_nRowCount);
  
      }
+     */
      return bCheck;
  }
 -// -------------------------------------------------------------------------
 +
  sal_Bool ORowSetCache::moveWindow()
  {
 -
      sal_Bool bRet = sal_True;
  
      sal_Int32 nDiff = (sal_Int32)(m_nFetchSize*0.5 -0.5);
@@@ -975,8 -1040,8 +1026,8 @@@
                  aIter = m_pMatrix->begin();
  
                  nPos	= m_nStartPos;
-                 bCheck	= m_pCacheSet->absolute(m_nStartPos);
+                 bCheck	= m_pCacheSet->absolute_checked(m_nStartPos,sal_False);
 -                for(; !aIter->isValid() && bCheck;++aIter)
 +                for(; !aIter->is() && bCheck;++aIter)
                  {
                      OSL_ENSURE(aIter != m_pMatrix->end(),"Invalid iterator");
                      bCheck = m_pCacheSet->next();
diff --cc dbaccess/source/core/api/SingleSelectQueryComposer.cxx
index 16a01c9,7587e29..518a419
--- a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
+++ b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
@@@ -1480,10 -1508,10 +1477,10 @@@ Reference< XIndexAccess > SAL_CALL OSin
  
      return sResult;
  }
 -// -----------------------------------------------------------------------------
 +
  namespace
  {
-     ::rtl::OUString lcl_getCondition(const Sequence< Sequence< PropertyValue > >& filter )
+     ::rtl::OUString lcl_getCondition(const Sequence< Sequence< PropertyValue > >& filter,const OPredicateInputController& i_aPredicateInputController,const Reference< XNameAccess >& i_xSelectColumns)
      {
          ::rtl::OUStringBuffer sRet;
          const Sequence< PropertyValue >* pOrIter = filter.getConstArray();
@@@ -1518,15 -1555,17 +1524,17 @@@
  void SAL_CALL OSingleSelectQueryComposer::setStructuredFilter( const Sequence< Sequence< PropertyValue > >& filter ) throw (SQLException, ::com::sun::star::lang::IllegalArgumentException, RuntimeException)
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OSingleSelectQueryComposer::setStructuredFilter" );
-     setFilter(lcl_getCondition(filter));
+     OPredicateInputController aPredicateInput(m_aContext.getLegacyServiceFactory(),m_xConnection);
+     setFilter(lcl_getCondition(filter,aPredicateInput,getColumns()));
  }
 -// -----------------------------------------------------------------------------
 +
  void SAL_CALL OSingleSelectQueryComposer::setStructuredHavingClause( const Sequence< Sequence< PropertyValue > >& filter ) throw (SQLException, RuntimeException)
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OSingleSelectQueryComposer::setStructuredHavingClause" );
-     setHavingClause(lcl_getCondition(filter));
+     OPredicateInputController aPredicateInput(m_aContext.getLegacyServiceFactory(),m_xConnection);
+     setHavingClause(lcl_getCondition(filter,aPredicateInput,getColumns()));
  }
 -// -----------------------------------------------------------------------------
 +
  void OSingleSelectQueryComposer::setConditionByColumn( const Reference< XPropertySet >& column, sal_Bool andCriteria ,::std::mem_fun1_t<bool,OSingleSelectQueryComposer,::rtl::OUString>& _aSetFunctor,sal_Int32 filterOperator)
  {
      RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen at sun.com", "OSingleSelectQueryComposer::setConditionByColumn" );
diff --cc dbaccess/source/core/dataaccess/SharedConnection.cxx
index f40bdc9,e293776..7f2cad0
--- a/dbaccess/source/core/dataaccess/SharedConnection.cxx
+++ b/dbaccess/source/core/dataaccess/SharedConnection.cxx
@@@ -118,10 -129,12 +118,12 @@@ void SAL_CALL OSharedConnection::rollba
  sal_Bool SAL_CALL OSharedConnection::isClosed(  ) throw(SQLException, RuntimeException)
  {
      ::osl::MutexGuard aGuard( m_aMutex );
+     if ( !m_xConnection.is() )
+         return sal_True;
 -    
 +
      return m_xConnection->isClosed();
  }
 -// --------------------------------------------------------------------------------
 +
  Reference< XDatabaseMetaData > SAL_CALL OSharedConnection::getMetaData(  ) throw(SQLException, RuntimeException)
  {
      ::osl::MutexGuard aGuard( m_aMutex );
diff --cc dbaccess/source/core/dataaccess/datasource.cxx
index 1cabbf2,ee4e187..334d971
--- a/dbaccess/source/core/dataaccess/datasource.cxx
+++ b/dbaccess/source/core/dataaccess/datasource.cxx
@@@ -200,11 -204,12 +200,11 @@@ void SAL_CALL FlushNotificationAdapter:
      if ( xListener.is() )
          xListener->disposing( Source );
  
-     impl_dispose( false );
+     impl_dispose( true );
  }
  
 -//--------------------------------------------------------------------------
  OAuthenticationContinuation::OAuthenticationContinuation()
 -    :m_bRemberPassword(sal_True),   // TODO: a meaningfull default
 +    :m_bRemberPassword(sal_True),   // TODO: a meaningful default
      m_bCanSetUserName(sal_True)
  {
  }
diff --cc dbaccess/source/ui/app/AppController.cxx
index 7545e73,71196e5..8b2f6e1
--- a/dbaccess/source/ui/app/AppController.cxx
+++ b/dbaccess/source/ui/app/AppController.cxx
@@@ -2708,10 -2714,11 +2712,11 @@@ void SAL_CALL OApplicationController::a
  sal_Bool SAL_CALL OApplicationController::attachModel(const Reference< XModel > & _rxModel) throw( RuntimeException )
  {
      ::osl::MutexGuard aGuard( getMutex() );
-     Reference< XOfficeDatabaseDocument > xOfficeDoc( _rxModel, UNO_QUERY );
-     if ( !xOfficeDoc.is() && _rxModel.is() )
+     const Reference< XOfficeDatabaseDocument > xOfficeDoc( _rxModel, UNO_QUERY );
+     const Reference< XModifiable > xDocModify( _rxModel, UNO_QUERY );
+     if ( ( !xOfficeDoc.is() || !xDocModify.is() ) && _rxModel.is() )
      {
 -        DBG_ERROR( "OApplicationController::attachModel: invalid model!" );
 +        OSL_FAIL( "OApplicationController::attachModel: invalid model!" );
          return sal_False;
      }
  
diff --cc dbaccess/source/ui/app/makefile.mk
index 658456f,e26927d..10c1821
--- a/dbaccess/source/ui/app/makefile.mk
+++ b/dbaccess/source/ui/app/makefile.mk
@@@ -44,12 -45,11 +44,13 @@@ EXCEPTIONSFILES=
              $(SLO)$/AppControllerDnD.obj	\
              $(SLO)$/AppControllerGen.obj	\
              $(SLO)$/AppDetailPageHelper.obj	\
 +            $(SLO)$/AppDetailView.obj		\
 +            $(SLO)$/AppIconControl.obj		\
              $(SLO)$/AppSwapWindow.obj		\
              $(SLO)$/AppTitleWindow.obj		\
 -            $(SLO)$/AppView.obj             \
 +            $(SLO)$/AppView.obj			\
-             $(SLO)$/subcomponentmanager.obj
+             $(SLO)$/subcomponentmanager.obj \
+             $(SLO)$/closeveto.obj
              
  
  SLOFILES =\
diff --cc dbaccess/source/ui/dlg/DbAdminImpl.cxx
index b14f478,8a5459c..9a08090
--- a/dbaccess/source/ui/dlg/DbAdminImpl.cxx
+++ b/dbaccess/source/ui/dlg/DbAdminImpl.cxx
@@@ -208,13 -204,15 +208,15 @@@ ODbDataSourceAdministrationHelper::ODbD
      m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_DOSLINEENDS, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PreferDosLikeLineEnds" ) ) ) );
      m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_SOCKET, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LocalSocket" ) ) ) );
      m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_NAMED_PIPE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NamedPipe" ) ) ) );
+     m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_RESPECTRESULTSETTYPE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RespectDriverResultSetType" ) ) ) );
+     m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_MAX_ROW_SCAN, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MaxRowScan" ) ) ) );
  
      // special settings for adabas
 -    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_SHUTSERVICE, ::rtl::OUString::createFromAscii("ShutdownDatabase")));
 -    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_DATAINC, ::rtl::OUString::createFromAscii("DataCacheSizeIncrement")));
 -    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_CACHESIZE, ::rtl::OUString::createFromAscii("DataCacheSize")));
 -    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_CTRLUSER, ::rtl::OUString::createFromAscii("ControlUser")));
 -    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_CTRLPWD, ::rtl::OUString::createFromAscii("ControlPassword")));
 +    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_SHUTSERVICE, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShutdownDatabase"))));
 +    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_DATAINC, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataCacheSizeIncrement"))));
 +    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_CACHESIZE, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataCacheSize"))));
 +    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_CTRLUSER, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ControlUser"))));
 +    m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_CONN_CTRLPWD, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ControlPassword"))));
  
      // extra settings for odbc
      m_aIndirectPropTranslator.insert(MapInt2String::value_type(DSID_USECATALOG, INFO_USECATALOG));
diff --cc dbaccess/source/ui/dlg/dbadmin.cxx
index 90d6793,47e3d50..0b4f5e6
--- a/dbaccess/source/ui/dlg/dbadmin.cxx
+++ b/dbaccess/source/ui/dlg/dbadmin.cxx
@@@ -410,9 -411,10 +410,10 @@@ SfxItemSet* ODbAdminDialog::createItemS
      *pCounter++ = new SfxStringItem(DSID_NAMED_PIPE, String());
      *pCounter++ = new OptionalBoolItem( DSID_PRIMARY_KEY_SUPPORT );
      *pCounter++ = new SfxInt32Item(DSID_MAX_ROW_SCAN, 100);
+     *pCounter++ = new SfxBoolItem( DSID_RESPECTRESULTSETTYPE,sal_False );
  
      // create the pool
 -    static SfxItemInfo __READONLY_DATA aItemInfos[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1] =
 +    static SfxItemInfo const aItemInfos[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1] =
      {
          {0,0},
          {0,0},
diff --cc dbaccess/source/ui/querydesign/query.src
index aae5a07,eb1ad41..e5d4b4d
--- a/dbaccess/source/ui/querydesign/query.src
+++ b/dbaccess/source/ui/querydesign/query.src
@@@ -279,17 -281,6 +279,9 @@@ ErrorBox ERR_QRY_ORDERBY_ON_ASTERIS
  {
      Message [ en-US ] = "[*] cannot be used as a sort criterion.";
  };
 +
- String STR_QUERY_TRUE
- {
-     Text [ en-US ] = "TRUE" ;
- };
 +
- String STR_QUERY_FALSE
- {
-     Text [ en-US ] = "FALSE" ;
- };
 +
  String STR_QRY_TOO_MANY_TABLES
  {
      Text [ en-US ] = "There are too many tables.";
diff --cc dbaccess/source/ui/tabledesign/TEditControl.cxx
index 2e83b6c,f4f728c..76bc93c
--- a/dbaccess/source/ui/tabledesign/TEditControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx
@@@ -1529,9 -1596,9 +1525,9 @@@ sal_Bool OTableEditorCtrl::IsPrimaryKey
      Reference<XPropertySet> xTable = rController.getTable();
      //////////////////////////////////////////////////////////////
      // Key darf nicht veraendert werden
--    // Dies gilt jedoch nur, wenn die Tabelle nicht neu ist und keine ::com::sun::star::sdbcx::View. Ansonsten wird kein DROP ausgeführt
++    // Dies gilt jedoch nur, wenn die Tabelle nicht neu ist und keine ::com::sun::star::sdbcx::View. Ansonsten wird kein DROP ausgef�hrt
  
 -    if(xTable.is() && ::comphelper::getString(xTable->getPropertyValue(PROPERTY_TYPE)) == ::rtl::OUString::createFromAscii("VIEW"))
 +    if(xTable.is() && ::comphelper::getString(xTable->getPropertyValue(PROPERTY_TYPE)) == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VIEW")))
          return sal_False;
      //////////////////////////////////////////////////////////////
      // Wenn leeres Feld, kein PrimKey
@@@ -1551,7 -1618,7 +1547,7 @@@
          {
              //////////////////////////////////////////////////////////////
              // Wenn Feldtyp Memo oder Image, kein PrimKey
--            // oder wenn Spalten nicht gedroped werden können und das Required Flag ist nicht gesetzt
++            // oder wenn Spalten nicht gedroped werden k�nnen und das Required Flag ist nicht gesetzt
              // oder wenn eine ::com::sun::star::sdbcx::View vorhanden ist und das Required Flag nicht gesetzt ist
              TOTypeInfoSP pTypeInfo = pFieldDescr->getTypeInfo();
              if(     pTypeInfo->nSearchType == ColumnSearch::NONE
diff --cc reportdesign/source/ui/report/ReportSection.cxx
index 66b5658,b0128c7..0a6a5e9
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@@ -101,10 -101,13 +102,13 @@@ OReportSection::OReportSection(OSection
  ,m_bInDrag(sal_False)
  {
      DBG_CTOR( rpt_OReportSection,NULL);
-     EnableChildTransparentMode();
+     //EnableChildTransparentMode();
      SetHelpId(HID_REPORTSECTION);
      SetMapMode( MapMode( MAP_100TH_MM ) );
+     SetParentClipMode( PARENTCLIPMODE_CLIP );
+     EnableChildTransparentMode( sal_False );
+     SetPaintTransparent( sal_False );
 -   
 +
      try
      {
          fill();
@@@ -245,15 -241,12 +240,9 @@@ void OReportSection::fill(
      m_pView->SetDesignMode( sal_True );	
  
      m_pView->StartListening( *m_pModel  );
-     if ( m_xSection.is() && m_pPage && m_pView )
-     {
-         uno::Reference<report::XReportDefinition> xReportDefinition = m_xSection->getReportDefinition();
-         m_pPage->SetSize( Size( getStyleProperty<awt::Size>(xReportDefinition,PROPERTY_PAPERSIZE).Width,5*m_xSection->getHeight()) );
-         const Size aPageSize = m_pPage->GetSize();
-         const sal_Int32 nWorkAreaLeftMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_LEFTMARGIN);
-         const sal_Int32 nWorkAreaRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
-         m_pView->SetWorkArea( Rectangle( Point( nWorkAreaLeftMargin, 0), Size(aPageSize.Width() - nWorkAreaLeftMargin - nWorkAreaRightMargin,aPageSize.Height()) ) );
-     }
 -    /*Resize();*/
+     m_pPage->SetSize( Size( getStyleProperty<awt::Size>(xReportDefinition,PROPERTY_PAPERSIZE).Width,5*m_xSection->getHeight()) );
+     const Size aPageSize = m_pPage->GetSize();
+     m_pView->SetWorkArea( Rectangle( Point( nLeftMargin, 0), Size(aPageSize.Width() - nLeftMargin - nRightMargin,aPageSize.Height()) ) );
 -
 -    //SetBackground( Wallpaper( COL_BLUE ));
  }
  // -----------------------------------------------------------------------------
  void OReportSection::Paste(const uno::Sequence< beans::NamedValue >& _aAllreadyCopiedObjects,bool _bForce)
@@@ -545,71 -543,80 +537,80 @@@ void OReportSection::_propertyChanged(c
              }
              else if ( _rEvent.PropertyName == PROPERTY_RIGHTMARGIN )
              {
-                 const sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
                  m_pPage->SetRgtBorder(nRightMargin);
              }
- 
-             try
+             const Size aOldPageSize = m_pPage->GetSize();
+             sal_Int32 nNewHeight = 5*m_xSection->getHeight();
+             if ( aOldPageSize.Height() != nNewHeight || nPaperWidth != aOldPageSize.Width() )
              {
-                 const sal_Int32 nLeftMargin  = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_LEFTMARGIN);
-                 const sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
-                 const sal_Int32 nPaperWidth  = getStyleProperty<awt::Size>(xReportDefinition,PROPERTY_PAPERSIZE).Width;
-                 const sal_Int32 nCount = m_xSection->getCount();
-                 for (sal_Int32 i = 0; i < nCount; ++i)
+                 m_pPage->SetSize( Size( nPaperWidth,nNewHeight) );
+                 const Size aPageSize = m_pPage->GetSize();
+                 m_pView->SetWorkArea( Rectangle( Point( nLeftMargin, 0), Size(aPageSize.Width() - nLeftMargin - nRightMargin,aPageSize.Height()) ) );
+             }
+             impl_adjustObjectSizePosition(nPaperWidth,nLeftMargin,nRightMargin);
+             m_pParent->Invalidate(INVALIDATE_UPDATE | INVALIDATE_TRANSPARENT);
+         }
+     }	
+ }
+ void OReportSection::impl_adjustObjectSizePosition(sal_Int32 i_nPaperWidth,sal_Int32 i_nLeftMargin,sal_Int32 i_nRightMargin)
+ {
+     try
+     {
+         sal_Int32 nRightBorder = i_nPaperWidth - i_nRightMargin;
+         const sal_Int32 nCount = m_xSection->getCount();
+         for (sal_Int32 i = 0; i < nCount; ++i)
+         {
+             bool bChanged = false;
+             uno::Reference< report::XReportComponent> xReportComponent(m_xSection->getByIndex(i),uno::UNO_QUERY_THROW);
+             awt::Point aPos = xReportComponent->getPosition();
+             awt::Size aSize = xReportComponent->getSize();
+             SvxShape* pShape = SvxShape::getImplementation( xReportComponent );
+             SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL;
+             if ( pObject )
+             {
+                 OObjectBase* pBase = dynamic_cast<OObjectBase*>(pObject);
+                 pBase->EndListening(sal_False);
+                 if ( aPos.X < i_nLeftMargin )
                  {
-                     bool bChanged = false;
-                     uno::Reference< report::XReportComponent> xReportComponent(m_xSection->getByIndex(i),uno::UNO_QUERY_THROW);
-                     awt::Point aPos = xReportComponent->getPosition();
-                     awt::Size aSize = xReportComponent->getSize();
-                     SvxShape* pShape = SvxShape::getImplementation( xReportComponent );
-                     SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL;
-                     if ( pObject )
+                     aPos.X  = i_nLeftMargin;
+                     bChanged = true;
+                 }
+                 if ( (aPos.X + aSize.Width) > nRightBorder )
+                 {
+                     aPos.X = nRightBorder - aSize.Width;
+                     if ( aPos.X < i_nLeftMargin )
                      {
-                         OObjectBase* pBase = dynamic_cast<OObjectBase*>(pObject);
-                         pBase->EndListening(sal_False);
-                         if ( aPos.X < nLeftMargin )
-                         {
-                             aPos.X  = nLeftMargin;
-                             bChanged = true;
-                         }
-                         if ( (aPos.X + aSize.Width) > (nPaperWidth - nRightMargin) )
-                         {
-                             aPos.X = nPaperWidth - nRightMargin - aSize.Width;
-                             if ( aPos.X < nLeftMargin )
-                             {
-                                 aSize.Width += aPos.X - nLeftMargin;
-                                 aPos.X = nLeftMargin;
-                                 // add listener around
-                                 pBase->StartListening();
-                                 xReportComponent->setSize(aSize);
-                                 pBase->EndListening(sal_False);
-                             }
-                             bChanged = true;
-                         }
-                         if ( aPos.Y < 0 )
-                             aPos.Y = 0;
-                         if ( bChanged )
-                         {
-                             xReportComponent->setPosition(aPos);
-                             correctOverlapping(pObject,*this,false);
-                             Rectangle aRet(VCLPoint(xReportComponent->getPosition()),VCLSize(xReportComponent->getSize()));
-                             aRet.setHeight(aRet.getHeight() + 1);
-                             aRet.setWidth(aRet.getWidth() + 1);
-                             if ( m_xSection.is() && (static_cast<sal_uInt32>(aRet.getHeight() + aRet.Top()) > m_xSection->getHeight()) )
-                                 m_xSection->setHeight(aRet.getHeight() + aRet.Top());
-                         }
+                         aSize.Width += aPos.X - i_nLeftMargin;
+                         aPos.X = i_nLeftMargin;
+                         // add listener around
                          pBase->StartListening();
+                         xReportComponent->setSize(aSize);
+                         pBase->EndListening(sal_False);
                      }
+                     bChanged = true;
                  }
+                 if ( aPos.Y < 0 )
+                     aPos.Y = 0;
 -                if ( bChanged ) 
++                if ( bChanged )
+                 {
+                     xReportComponent->setPosition(aPos);
+                     correctOverlapping(pObject,*this,false);
+                     Rectangle aRet(VCLPoint(xReportComponent->getPosition()),VCLSize(xReportComponent->getSize()));
+                     aRet.setHeight(aRet.getHeight() + 1);
+                     aRet.setWidth(aRet.getWidth() + 1);
+                     if ( m_xSection.is() && (static_cast<sal_uInt32>(aRet.getHeight() + aRet.Top()) > m_xSection->getHeight()) )
+                         m_xSection->setHeight(aRet.getHeight() + aRet.Top());
+ 
+                     pObject->RecalcBoundRect();
+                 }
+                 pBase->StartListening();
              }
-             catch(uno::Exception)
-             {
-                 OSL_FAIL("Exception caught: OReportSection::_propertyChanged(");
-             }
- 
-             Resize();
 -        } // for (sal_Int32 i = 0; i < nCount; ++i)
 +        }
      }
+     catch(uno::Exception)
+     {
 -        OSL_ENSURE(0,"Exception caught: OReportSection::_propertyChanged(");
++        OSL_FAIL("Exception caught: OReportSection::_propertyChanged(");
+     }
  }
  //------------------------------------------------------------------------------
  sal_Bool OReportSection::handleKeyEvent(const KeyEvent& _rEvent)
diff --cc reportdesign/source/ui/report/StartMarker.cxx
index 34d2014,ec9005a..1eef44c
--- a/reportdesign/source/ui/report/StartMarker.cxx
+++ b/reportdesign/source/ui/report/StartMarker.cxx
@@@ -104,20 -110,23 +107,22 @@@ sal_Int32 OStartMarker::getMinHeight() 
  // -----------------------------------------------------------------------------
  void OStartMarker::Paint( const Rectangle& rRect )
  {
-     Window::Paint( rRect );
+     (void)rRect;
 -    //SetUpdateMode(sal_False);
      Size aSize = GetOutputSizePixel();
      long nSize = aSize.Width();
      const long nCornerWidth = long(CORNER_SPACE * (double)GetMapMode().GetScaleX());
  
-     if ( !isCollapsed() )
+     if ( isCollapsed() )
+     {
+         SetClipRegion();
+     }
+     else
      {
          const long nVRulerWidth = m_aVRuler.GetSizePixel().Width();
 -        nSize = aSize.Width() - nVRulerWidth/* - m_nCornerSize*/;
 +        nSize = aSize.Width() - nVRulerWidth;
-         SetClipRegion(Region(PixelToLogic(Rectangle(Point(),Size( nSize,aSize.Height())))));
          aSize.Width() += nCornerWidth;
+         SetClipRegion(Region(PixelToLogic(Rectangle(Point(),Size(nSize,aSize.Height())))));
 -    }        
 +    }
-     else
-         SetClipRegion();
  
      const Point aGcc3WorkaroundTemporary;
      Rectangle aWholeRect(aGcc3WorkaroundTemporary,aSize);
diff --cc reportdesign/source/ui/report/ViewsWindow.cxx
index b2601e1,4e8acc3..7858483
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@@ -246,10 -244,11 +246,11 @@@ void OViewsWindow::resize(const OSectio
          if ( bSet )
          {
              impl_resizeSectionWindow(*pSectionWindow.get(),aStartPoint,bSet);
-             pSectionWindow->Invalidate(INVALIDATE_NOERASE | INVALIDATE_NOCHILDREN | INVALIDATE_TRANSPARENT);
-             pSectionWindow->getStartMarker().Invalidate(INVALIDATE_NOERASE | INVALIDATE_NOCHILDREN | INVALIDATE_TRANSPARENT );
+             static sal_Int32 nIn = INVALIDATE_UPDATE | INVALIDATE_TRANSPARENT;
+             pSectionWindow->getStartMarker().Invalidate( nIn ); // INVALIDATE_NOERASE |INVALIDATE_NOCHILDREN| INVALIDATE_TRANSPARENT 
+             pSectionWindow->getEndMarker().Invalidate( nIn );
          }
 -    } // for (;aIter != aEnd ; ++aIter,++nPos)
 +    }
      Fraction aStartWidth(long(REPORT_STARTMARKER_WIDTH));
      aStartWidth *= GetMapMode().GetScaleX();
      Size aOut = GetOutputSizePixel();
@@@ -1704,9 -1888,8 +1752,7 @@@ void OViewsWindow::scrollChildren(cons
          
          aMapMode.SetOrigin( Point(aOld.X() , - aPosY.Y()));
          SetMapMode( aMapMode );
 -        //OWindowPositionCorrector aCorrector(this,0,-( aOld.Y() + aPosY.Y()));
          Scroll(0, -( aOld.Y() + aPosY.Y()),SCROLL_CHILDREN);
-         Resize();
-         Invalidate(INVALIDATE_NOCHILDREN|INVALIDATE_TRANSPARENT);
      }
  
      TSectionsMap::iterator aIter = m_aSections.begin();
diff --cc reportdesign/source/ui/report/dlgedfunc.cxx
index 9acf262,57e0c75..a6a5eb4
--- a/reportdesign/source/ui/report/dlgedfunc.cxx
+++ b/reportdesign/source/ui/report/dlgedfunc.cxx
@@@ -93,9 -92,14 +93,13 @@@ void DlgEdFunc::ForceScroll( const Poin
      aStartWidth *= m_pParent->GetMapMode().GetScaleX();
  
      aOut.Width() -= (long)aStartWidth;
+     aOut.Height() = m_pParent->GetOutputSizePixel().Height();
      
-     Rectangle aOutRect( pScrollWindow->getThumbPos(), aOut );
+     Point aPos = pScrollWindow->getThumbPos();
+     aPos.X() *= 0.5;
+     aPos.Y() *= 0.5;
+     Rectangle aOutRect( aPos, aOut );
      aOutRect = m_pParent->PixelToLogic( aOutRect );
 -    //Rectangle aWorkArea = m_pParent->getView()->GetWorkArea();
      Point aGcc3WorkaroundTemporary;
      Rectangle aWorkArea(aGcc3WorkaroundTemporary,pScrollWindow->getTotalSize());
      aWorkArea.Right() -= (long)aStartWidth;
commit 7e8a4888be548390148cc932a5d0b899e4fdd318
Author: Petr Mladek <pmladek at suse.cz>
Date:   Tue Apr 19 18:58:45 2011 +0200

    Version 3.3.99.2, tag libreoffice-3.3.99.2 (3.4.0-beta2)
commit 9e0bd7014e5fbfe17f084e386d1ad368e78828c9
Author: Petr Mladek <pmladek at suse.cz>
Date:   Mon Apr 11 17:52:52 2011 +0200

    Version 3.3.99.1, tag libreoffice-3.3.99.1 (3.4.0-beta1)
commit a446d943bae5ca14030ca2ea18f8a8ff895fbcaf
Merge: d5b15e5... 75fea4e...
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Mon Mar 28 15:37:38 2011 +0200

    CWS-TOOLING: integrate CWS dba34d

commit 75fea4e3990114671a332a3bf216e06ef79199df
Author: Frank Schoenheit [fs] <frank.schoenheit at oracle.com>
Date:   Thu Mar 24 08:40:30 2011 +0100

    dba34d: #i117521#

diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx
index 746db4b..4e8acc3 100644
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@ -317,6 +317,7 @@ void OViewsWindow::addSection(const uno::Reference< report::XSection >& _xSectio
     ::boost::shared_ptr<OSectionWindow> pSectionWindow( new OSectionWindow(this,_xSection,_sColorEntry) );
     m_aSections.insert(getIteratorAtPos(_nPosition) , TSectionsMap::value_type(pSectionWindow));
     m_pParent->setMarked(&pSectionWindow->getReportSection().getSectionView(),m_aSections.size() == 1);
+    Resize();
 }
 //----------------------------------------------------------------------------
 void OViewsWindow::removeSection(sal_uInt16 _nPosition)
commit d5b15e5ef07dbf653eb3e4509ed562a74f4712ad
Merge: c290b52... 8807dc4...
Author: Vladimir Glazunov <vg at openoffice.org>
Date:   Mon Mar 21 17:02:20 2011 +0100

    CWS-TOOLING: integrate CWS dba34c

commit 4de1caf7b1695196257db2ff52343daf466ac0eb
Author: Ocke Janssen [oj] <Ocke.Janssen at oracle.com>
Date:   Fri Mar 18 09:31:06 2011 +0100

    dba34d: #i66846# check bookmarable before use statis resultset

diff --git a/dbaccess/source/core/api/RowSetCache.cxx b/dbaccess/source/core/api/RowSetCache.cxx
index 83df973..43b2f58 100644
--- a/dbaccess/source/core/api/RowSetCache.cxx
+++ b/dbaccess/source/core/api/RowSetCache.cxx
@@ -118,10 +118,11 @@ ORowSetCache::ORowSetCache(const Reference< XResultSet >& _xRs,
     // first try if the result can be used to do inserts and updates
     Reference< XPropertySet> xProp(_xRs,UNO_QUERY);
     Reference< XPropertySetInfo > xPropInfo = xProp->getPropertySetInfo();
+    sal_Bool bBookmarkable = sal_False;
     try
     {
         Reference< XResultSetUpdate> xUp(_xRs,UNO_QUERY_THROW);
-        sal_Bool bBookmarkable = xPropInfo->hasPropertyByName(PROPERTY_ISBOOKMARKABLE) &&
+        bBookmarkable = xPropInfo->hasPropertyByName(PROPERTY_ISBOOKMARKABLE) &&
                                 any2bool(xProp->getPropertyValue(PROPERTY_ISBOOKMARKABLE)) && Reference< XRowLocate >(_xRs, UNO_QUERY).is();
         if ( bBookmarkable )
         {

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list