/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * 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 --------------------------------------------------------------- #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/docfile.hxx> #include <vcl/sound.hxx> #include <tools/urlobj.hxx> #include <vcl/svapp.hxx> #include "tabcont.hxx" #include "tabvwsh.hxx" #include "docsh.hxx" #include "scmod.hxx" #include "scresid.hxx" #include "sc.hrc" #include "globstr.hrc" #include "transobj.hxx" #include "clipparam.hxx" #include "dragdata.hxx" #include "markdata.hxx" // STATIC DATA ----------------------------------------------------------- //================================================================== ScTabControl::ScTabControl( Window* pParent, ScViewData* pData ) : TabBar( pParent, WinBits(WB_BORDER | WB_3DLOOK | WB_SCROLL | WB_RANGESELECT | WB_MULTISELECT | WB_DRAG | WB_SIZEABLE) ), DropTargetHelper( this ), DragSourceHelper( this ), pViewData( pData ), nMouseClickPageId( TabBar::PAGE_NOT_FOUND ), nSelPageIdByMouse( TabBar::PAGE_NOT_FOUND ), bErrorShown( false ) { ScDocument* pDoc = pViewData->GetDocument(); rtl::OUString aString; Color aTabBgColor; SCTAB nCount = pDoc->GetTableCount(); for (SCTAB i=0; i<nCount; i++) { if (pDoc->IsVisible(i)) { if (pDoc->GetName(i,aString)) { if ( pDoc->IsScenario(i) ) InsertPage( static_cast<sal_uInt16>(i)+1, aString, TPB_SPECIAL ); else InsertPage( static_cast<sal_uInt16>(i)+1, aString ); if ( !pDoc->IsDefaultTabBgColor(i) ) { aTabBgColor = pDoc->GetTabBgColor(i); SetTabBgColor( static_cast<sal_uInt16>(i)+1, aTabBgColor ); } } } } SetCurPageId( static_cast<sal_uInt16>(pViewData->GetTabNo()) + 1 ); SetSizePixel( Size(SC_TABBAR_DEFWIDTH, 0) ); SetSplitHdl( LINK( pViewData->GetView(), ScTabView, TabBarResize ) ); EnableEditMode(); UpdateInputContext(); } ScTabControl::~ScTabControl() { } sal_uInt16 ScTabControl::GetMaxId() const { sal_uInt16 nVisCnt = GetPageCount(); if (nVisCnt) return GetPageId(nVisCnt-1); return 0; } SCTAB ScTabControl::GetPrivatDropPos(const Point& rPos ) { sal_uInt16 nPos = ShowDropPos(rPos); SCTAB nRealPos = static_cast<SCTAB>(nPos); if(nPos !=0 ) { ScDocument* pDoc = pViewData->GetDocument(); SCTAB nCount = pDoc->GetTableCount(); sal_uInt16 nViewPos=0; nRealPos = nCount; for (SCTAB i=0; i<nCount; i++) { if (pDoc->IsVisible(i)) { nViewPos++; if(nViewPos==nPos) { SCTAB j; for (j=i+1; j<nCount; j++) { if (pDoc->IsVisible(j)) { break; } } nRealPos =j; break; } } } } return nRealPos ; } void ScTabControl::MouseButtonDown( const MouseEvent& rMEvt ) { ScModule* pScMod = SC_MOD(); if ( !pScMod->IsModalMode() && !pScMod->IsFormulaMode() && !IsInEditMode() ) { // View aktivieren pViewData->GetViewShell()->SetActive(); // Appear und SetViewFrame pViewData->GetView()->ActiveGrabFocus(); } /* Click into free area -> insert new sheet (like in Draw). Needing clean left click without modifiers (may be context menu). Remember clicks to all pages, to be able to move mouse pointer later. */ if( rMEvt.IsLeft() && (rMEvt.GetModifier() == 0) ) nMouseClickPageId = GetPageId( rMEvt.GetPosPixel(), true ); else nMouseClickPageId = TabBar::PAGE_NOT_FOUND; TabBar::MouseButtonDown( rMEvt ); } void ScTabControl::MouseButtonUp( const MouseEvent& rMEvt ) { Point aPos = PixelToLogic( rMEvt.GetPosPixel() ); // mouse button down and up on same page? if( nMouseClickPageId != GetPageId( aPos, true ) ) nMouseClickPageId = TabBar::PAGE_NOT_FOUND; if (nMouseClickPageId == TabBar::INSERT_TAB_POS) { // Insert a new sheet at the right end, with default name. ScDocument* pDoc = pViewData->GetDocument(); if (!pDoc->IsDocEditable()) return; rtl::OUString aName; pDoc->CreateValidTabName(aName); SCTAB nTabCount = pDoc->GetTableCount(); pViewData->GetViewShell()->InsertTable(aName, nTabCount); return; } if ( rMEvt.GetClicks() == 2 && rMEvt.IsLeft() && nMouseClickPageId != 0 && nMouseClickPageId != TAB_PAGE_NOTFOUND ) { SfxDispatcher* pDispatcher = pViewData->GetViewShell()->GetViewFrame()->GetDispatcher(); pDispatcher->Execute( FID_TAB_MENU_RENAME, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD ); return; } if( nMouseClickPageId == 0 ) { // Click in the area next to the existing tabs: // #i70320# if several sheets are selected, deselect all ecxept the current sheet, // otherwise add new sheet sal_uInt16 nSlot = ( GetSelectPageCount() > 1 ) ? FID_TAB_DESELECTALL : FID_INS_TABLE; SfxDispatcher* pDispatcher = pViewData->GetViewShell()->GetViewFrame()->GetDispatcher(); pDispatcher->Execute( nSlot, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD ); // forget page ID, to be really sure that the dialog is not called twice nMouseClickPageId = TabBar::PAGE_NOT_FOUND; } TabBar::MouseButtonUp( rMEvt ); } void ScTabControl::Select() { /* Remember last clicked page ID. */ nSelPageIdByMouse = nMouseClickPageId; /* Reset nMouseClickPageId, so that next Select() call may invalidate nSelPageIdByMouse (i.e. if called from keyboard). */ nMouseClickPageId = TabBar::PAGE_NOT_FOUND; ScModule* pScMod = SC_MOD(); ScDocument* pDoc = pViewData->GetDocument(); ScMarkData& rMark = pViewData->GetMarkData(); SCTAB nCount = pDoc->GetTableCount(); SCTAB i; if ( pScMod->IsTableLocked() ) // darf jetzt nicht umgeschaltet werden ? { // den alten Zustand des TabControls wiederherstellen: for (i=0; i<nCount; i++) SelectPage( static_cast<sal_uInt16>(i)+1, rMark.GetTableSelect(i) ); SetCurPageId( static_cast<sal_uInt16>(pViewData->GetTabNo()) + 1 ); Sound::Beep(); return; } sal_uInt16 nCurId = GetCurPageId(); if (!nCurId) return; // kann vorkommen, wenn bei Excel-Import alles versteckt ist sal_uInt16 nPage = nCurId - 1; // OLE-inplace deaktivieren if ( nPage != static_cast<sal_uInt16>(pViewData->GetTabNo()) ) pViewData->GetView()->DrawMarkListHasChanged(); // InputEnterHandler nur wenn nicht Referenzeingabe sal_Bool bRefMode = pScMod->IsFormulaMode(); if (!bRefMode) pScMod->InputEnterHandler(); for (i=0; i<nCount; i++) rMark.SelectTable( i, IsPageSelected(static_cast<sal_uInt16>(i)+1) ); SfxDispatcher& rDisp = pViewData->GetDispatcher(); if (rDisp.IsLocked()) pViewData->GetView()->SetTabNo( static_cast<SCTAB>(nPage) ); else { // Tabelle fuer Basic ist 1-basiert SfxUInt16Item aItem( SID_CURRENTTAB, nPage + 1 ); rDisp.Execute( SID_CURRENTTAB, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD, &aItem, (void*) NULL ); } SfxBindings& rBind = pViewData->GetBindings(); rBind.Invalidate( FID_FILL_TAB ); rBind.Invalidate( FID_TAB_DESELECTALL ); rBind.Invalidate( FID_INS_TABLE ); rBind.Invalidate( FID_TAB_APPEND ); rBind.Invalidate( FID_TAB_MOVE ); rBind.Invalidate( FID_TAB_RENAME ); rBind.Invalidate( FID_DELETE_TABLE ); rBind.Invalidate( FID_TABLE_SHOW ); rBind.Invalidate( FID_TABLE_HIDE ); rBind.Invalidate( FID_TAB_SET_TAB_BG_COLOR ); // SetReference nur wenn der Konsolidieren-Dialog offen ist // (fuer Referenzen ueber mehrere Tabellen) // bei anderen gibt das nur unnoetiges Gezappel if ( bRefMode && pViewData->GetRefType() == SC_REFTYPE_REF ) if ( pViewData->GetViewShell()->GetViewFrame()->HasChildWindow(SID_OPENDLG_CONSOLIDATE) ) { ScRange aRange( pViewData->GetRefStartX(), pViewData->GetRefStartY(), pViewData->GetRefStartZ(), pViewData->GetRefEndX(), pViewData->GetRefEndY(), pViewData->GetRefEndZ() ); pScMod->SetReference( aRange, pDoc, &rMark ); pScMod->EndReference(); // wegen Auto-Hide } } void ScTabControl::UpdateInputContext() { ScDocument* pDoc = pViewData->GetDocument(); WinBits nStyle = GetStyle(); if (pDoc->GetDocumentShell()->IsReadOnly()) // no insert sheet tab for readonly doc. SetStyle((nStyle & ~WB_INSERTTAB)); else SetStyle((nStyle | WB_INSERTTAB)); } void ScTabControl::UpdateStatus() { ScDocument* pDoc = pViewData->GetDocument(); ScMarkData& rMark = pViewData->GetMarkData(); sal_Bool bActive = pViewData->IsActive(); SCTAB nCount = pDoc->GetTableCount(); SCTAB i; rtl::OUString aString; SCTAB nMaxCnt = Max( nCount, static_cast<SCTAB>(GetMaxId()) ); Color aTabBgColor; sal_Bool bModified = false; // Tabellen-Namen for (i=0; i<nMaxCnt && !bModified; i++) { if (pDoc->IsVisible(i)) { pDoc->GetName(i,aString); aTabBgColor = pDoc->GetTabBgColor(i); } else { aString = rtl::OUString(); } if ( !aString.equals(GetPageText(static_cast<sal_uInt16>(i)+1)) || (GetTabBgColor(static_cast<sal_uInt16>(i)+1) != aTabBgColor) ) bModified = sal_True; } if (bModified) { Clear(); for (i=0; i<nCount; i++) { if (pDoc->IsVisible(i)) { if (pDoc->GetName(i,aString)) { if ( pDoc->IsScenario(i) ) InsertPage( static_cast<sal_uInt16>(i)+1, aString, TPB_SPECIAL ); else InsertPage( static_cast<sal_uInt16>(i)+1, aString ); if ( !pDoc->IsDefaultTabBgColor(i) ) { aTabBgColor = pDoc->GetTabBgColor(i); SetTabBgColor( static_cast<sal_uInt16>(i)+1, aTabBgColor ); } } } } } SetCurPageId( static_cast<sal_uInt16>(pViewData->GetTabNo()) + 1 ); if (bActive) { bModified = false; // Selektion for (i=0; i<nMaxCnt && !bModified; i++) if ( rMark.GetTableSelect(i) != (bool) IsPageSelected(static_cast<sal_uInt16>(i)+1) ) bModified = sal_True; // #i99576# the following loop is mis-optimized on unxsoli4 and the reason // why this file is in NOOPTFILES. if ( bModified ) for (i=0; i<nCount; i++) SelectPage( static_cast<sal_uInt16>(i)+1, rMark.GetTableSelect(i) ); } else { } } void ScTabControl::SetSheetLayoutRTL( sal_Bool bSheetRTL ) { SetEffectiveRTL( bSheetRTL ); nSelPageIdByMouse = TabBar::PAGE_NOT_FOUND; } void ScTabControl::Command( const CommandEvent& rCEvt ) { ScModule* pScMod = SC_MOD(); ScTabViewShell* pViewSh = pViewData->GetViewShell(); sal_Bool bDisable = pScMod->IsFormulaMode() || pScMod->IsModalMode(); // ViewFrame erstmal aktivieren (Bug 19493): pViewSh->SetActive(); sal_uInt16 nCmd = rCEvt.GetCommand(); if ( nCmd == COMMAND_CONTEXTMENU ) { if (!bDisable) { // #i18735# select the page that is under the mouse cursor // if multiple tables are selected and the one under the cursor // is not part of them then unselect them sal_uInt16 nId = GetPageId( rCEvt.GetMousePosPixel() ); if (nId) { sal_Bool bAlreadySelected = IsPageSelected( nId ); //make the clicked page the current one SetCurPageId( nId ); //change the selection when the current one is not already //selected or part of a multi selection if(!bAlreadySelected) { sal_uInt16 nCount = GetMaxId(); for (sal_uInt16 i=1; i<=nCount; i++) SelectPage( i, i==nId ); Select(); } } // #i52073# OLE inplace editing has to be stopped before showing the sheet tab context menu pViewSh->DeactivateOle(); // Popup-Menu: // get Dispatcher from ViewData (ViewFrame) instead of Shell (Frame), so it can't be null pViewData->GetDispatcher().ExecutePopup( ScResId(RID_POPUP_TAB) ); } } } void ScTabControl::StartDrag( sal_Int8 /* nAction */, const Point& rPosPixel ) { ScModule* pScMod = SC_MOD(); sal_Bool bDisable = pScMod->IsFormulaMode() || pScMod->IsModalMode(); if (!bDisable) { Region aRegion( Rectangle(0,0,0,0) ); CommandEvent aCEvt( rPosPixel, COMMAND_STARTDRAG, sal_True ); // needed for StartDrag if (TabBar::StartDrag( aCEvt, aRegion )) DoDrag( aRegion ); } } void ScTabControl::DoDrag( const Region& /* rRegion */ ) { ScDocShell* pDocSh = pViewData->GetDocShell(); ScDocument* pDoc = pDocSh->GetDocument(); SCTAB nTab = pViewData->GetTabNo(); ScMarkData aTabMark = pViewData->GetMarkData(); aTabMark.ResetMark(); // doesn't change marked table information aTabMark.SetMarkArea( ScRange(0,0,nTab,MAXCOL,MAXROW,nTab) ); ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP ); ScClipParam aClipParam(ScRange(0, 0, 0, MAXCOL, MAXROW, 0), false); pDoc->CopyToClip(aClipParam, pClipDoc, &aTabMark, false); TransferableObjectDescriptor aObjDesc; pDocSh->FillTransferableObjectDescriptor( aObjDesc ); aObjDesc.maDisplayName = pDocSh->GetMedium()->GetURLObject().GetURLNoPass(); // maSize is set in ScTransferObj ctor ScTransferObj* pTransferObj = new ScTransferObj( pClipDoc, aObjDesc ); com::sun::star::uno::Reference<com::sun::star::datatransfer::XTransferable> xTransferable( pTransferObj ); pTransferObj->SetDragSourceFlags( SC_DROP_TABLE ); pTransferObj->SetDragSource( pDocSh, aTabMark ); Window* pWindow = pViewData->GetActiveWin(); SC_MOD()->SetDragObject( pTransferObj, NULL ); // for internal D&D pTransferObj->StartDrag( pWindow, DND_ACTION_COPYMOVE | DND_ACTION_LINK ); } sal_uInt16 lcl_DocShellNr( ScDocument* pDoc ) { sal_uInt16 nShellCnt = 0; SfxObjectShell* pShell = SfxObjectShell::GetFirst(); while ( pShell ) { if ( pShell->Type() == TYPE(ScDocShell) ) { if ( ((ScDocShell*)pShell)->GetDocument() == pDoc ) return nShellCnt; ++nShellCnt; } pShell = SfxObjectShell::GetNext( *pShell ); } OSL_FAIL("Dokument nicht gefunden"); return 0; } sal_Int8 ScTabControl::ExecuteDrop( const ExecuteDropEvent& rEvt ) { EndSwitchPage(); ScDocument* pDoc = pViewData->GetDocument(); const ScDragData& rData = SC_MOD()->GetDragData(); if ( rData.pCellTransfer && ( rData.pCellTransfer->GetDragSourceFlags() & SC_DROP_TABLE ) && rData.pCellTransfer->GetSourceDocument() == pDoc ) { // moving of tables within the document SCTAB nPos = GetPrivatDropPos( rEvt.maPosPixel ); HideDropPos(); if ( nPos == rData.pCellTransfer->GetVisibleTab() && rEvt.mnAction == DND_ACTION_MOVE ) { // #i83005# do nothing - don't move to the same position // (too easily triggered unintentionally, and might take a long time in large documents) } else { if ( !pDoc->GetChangeTrack() && pDoc->IsDocEditable() ) { //! use table selection from the tab control where dragging was started? pViewData->GetView()->MoveTable( lcl_DocShellNr(pDoc), nPos, rEvt.mnAction != DND_ACTION_MOVE ); rData.pCellTransfer->SetDragWasInternal(); // don't delete return sal_True; } else Sound::Beep(); } } return 0; } sal_Int8 ScTabControl::AcceptDrop( const AcceptDropEvent& rEvt ) { if ( rEvt.mbLeaving ) { EndSwitchPage(); HideDropPos(); return rEvt.mnAction; } const ScDocument* pDoc = pViewData->GetDocument(); const ScDragData& rData = SC_MOD()->GetDragData(); if ( rData.pCellTransfer && ( rData.pCellTransfer->GetDragSourceFlags() & SC_DROP_TABLE ) && rData.pCellTransfer->GetSourceDocument() == pDoc ) { // moving of tables within the document if ( !pDoc->GetChangeTrack() && pDoc->IsDocEditable() ) { ShowDropPos( rEvt.maPosPixel ); return rEvt.mnAction; } } else // switch sheets for all formats { SwitchPage( rEvt.maPosPixel ); // switch sheet after timeout return 0; // nothing can be dropped here } return 0; } long ScTabControl::StartRenaming() { if ( pViewData->GetDocument()->IsDocEditable() ) return TABBAR_RENAMING_YES; else return TABBAR_RENAMING_NO; } long ScTabControl::AllowRenaming() { ScTabViewShell* pViewSh = pViewData->GetViewShell(); OSL_ENSURE( pViewSh, "pViewData->GetViewShell()" ); long nRet = TABBAR_RENAMING_CANCEL; sal_uInt16 nId = GetEditPageId(); if ( nId ) { SCTAB nTab = nId - 1; String aNewName = GetEditText(); sal_Bool bDone = pViewSh->RenameTable( aNewName, nTab ); if ( bDone ) nRet = TABBAR_RENAMING_YES; else if ( bErrorShown ) { // if the error message from this TabControl is currently visible, // don't end edit mode now, to avoid problems when returning to // the other call (showing the error) - this should not happen OSL_FAIL("ScTabControl::AllowRenaming: nested calls"); nRet = TABBAR_RENAMING_NO; } else if ( Application::IsInModalMode() ) { // don't show error message above any modal dialog // instead cancel renaming without error message nRet = TABBAR_RENAMING_CANCEL; } else { bErrorShown = sal_True; pViewSh->ErrorMessage( STR_INVALIDTABNAME ); bErrorShown = false; nRet = TABBAR_RENAMING_NO; } } return nRet; } void ScTabControl::EndRenaming() { if ( HasFocus() ) pViewData->GetView()->ActiveGrabFocus(); } void ScTabControl::Mirror() { TabBar::Mirror(); if( nSelPageIdByMouse != TabBar::PAGE_NOT_FOUND ) { Rectangle aRect( GetPageRect( GetCurPageId() ) ); if( !aRect.IsEmpty() ) SetPointerPosPixel( aRect.Center() ); nSelPageIdByMouse = TabBar::PAGE_NOT_FOUND; // only once after a Select() } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ ure/lok_dialog-backport</option> <option value='feature/lok_dialog2'>feature/lok_dialog2</option> <option value='feature/lok_sofficemain'>feature/lok_sofficemain</option> <option value='feature/lok_sofficemain2'>feature/lok_sofficemain2</option> <option value='feature/mac-opengl-fixes'>feature/mac-opengl-fixes</option> <option value='feature/macOS-weld'>feature/macOS-weld</option> <option value='feature/mailmerge-toolbar'>feature/mailmerge-toolbar</option> <option value='feature/mar-updater'>feature/mar-updater</option> <option value='feature/mariadb'>feature/mariadb</option> <option value='feature/misc-vba-rework'>feature/misc-vba-rework</option> <option value='feature/mork'>feature/mork</option> <option value='feature/nativealpha'>feature/nativealpha</option> <option value='feature/notebookbar'>feature/notebookbar</option> <option value='feature/notes-refactoring'>feature/notes-refactoring</option> <option value='feature/ooxml-analyze'>feature/ooxml-analyze</option> <option value='feature/opengl-canvas-rework'>feature/opengl-canvas-rework</option> <option value='feature/opengl-transitions-rework'>feature/opengl-transitions-rework</option> <option value='feature/opengl-vcl-text'>feature/opengl-vcl-text</option> <option value='feature/orcus-continuous-integration'>feature/orcus-continuous-integration</option> <option value='feature/orcus-odf'>feature/orcus-odf</option> <option value='feature/orcus-odf-rebased'>feature/orcus-odf-rebased</option> <option value='feature/orcus-odf-rebased2'>feature/orcus-odf-rebased2</option> <option value='feature/orcus-rebased'>feature/orcus-rebased</option> <option value='feature/owncloud-provider-for-android'>feature/owncloud-provider-for-android</option> <option value='feature/pdfium-master'>feature/pdfium-master</option> <option value='feature/perfwork4'>feature/perfwork4</option> <option value='feature/perfwork5'>feature/perfwork5</option> <option value='feature/pivotcharts'>feature/pivotcharts</option> <option value='feature/print_revamp'>feature/print_revamp</option> <option value='feature/priorities'>feature/priorities</option> <option value='feature/profilesafemode'>feature/profilesafemode</option> <option value='feature/propose-master-cib'>feature/propose-master-cib</option> <option value='feature/pytable'>feature/pytable</option> <option value='feature/pyweb-wizard'>feature/pyweb-wizard</option> <option value='feature/qt5-win+mac'>feature/qt5-win+mac</option> <option value='feature/refactor-god-objects'>feature/refactor-god-objects</option> <option value='feature/rendercontext'>feature/rendercontext</option> <option value='feature/resolve-comments'>feature/resolve-comments</option> <option value='feature/scaling-geometry-provider'>feature/scaling-geometry-provider</option> <option value='feature/screenshotannotation'>feature/screenshotannotation</option> <option value='feature/sgexperiment'>feature/sgexperiment</option> <option value='feature/skia'>feature/skia</option> <option value='feature/slidehack'>feature/slidehack</option> <option value='feature/slidehack2'>feature/slidehack2</option> <option value='feature/slideshow_onlySprites'>feature/slideshow_onlySprites</option> <option value='feature/slideshowprimitives'>feature/slideshowprimitives</option> <option value='feature/sparklines'>feature/sparklines</option> <option value='feature/spellig_popup_SID'>feature/spellig_popup_SID</option> <option value='feature/stub_writer'>feature/stub_writer</option> <option value='feature/svg-export'>feature/svg-export</option> <option value='feature/svg-optimisations'>feature/svg-optimisations</option> <option value='feature/svg-optimisations-5-0'>feature/svg-optimisations-5-0</option> <option value='feature/sw-delete-undo-rework'>feature/sw-delete-undo-rework</option> <option value='feature/sw_redlinehide_4a_for_libreoffice-6-2'>feature/sw_redlinehide_4a_for_libreoffice-6-2</option> <option value='feature/sw_redlinehide_4b_for_libreoffice-6-2'>feature/sw_redlinehide_4b_for_libreoffice-6-2</option> <option value='feature/table-style'>feature/table-style</option> <option value='feature/table-style-rebased'>feature/table-style-rebased</option> <option value='feature/table_panel'>feature/table_panel</option> <option value='feature/table_rotated_text'>feature/table_rotated_text</option> <option value='feature/taggedPDF'>feature/taggedPDF</option> <option value='feature/template_manager_improvements'>feature/template_manager_improvements</option> <option value='feature/template_manager_improvements2'>feature/template_manager_improvements2</option> <option value='feature/themesupport'>feature/themesupport</option> <option value='feature/themesupport2'>feature/themesupport2</option> <option value='feature/tiled-editing'>feature/tiled-editing</option> <option value='feature/tscp3'>feature/tscp3</option> <option value='feature/unitver'>feature/unitver</option> <option value='feature/unocrsrptr'>feature/unocrsrptr</option> <option value='feature/unostyles'>feature/unostyles</option> <option value='feature/unostyles2'>feature/unostyles2</option> <option value='feature/unostyles3'>feature/unostyles3</option> <option value='feature/use-ogl-context-in-canvas'>feature/use-ogl-context-in-canvas</option> <option value='feature/vcl-opengl'>feature/vcl-opengl</option> <option value='feature/vcl-opengl-integration'>feature/vcl-opengl-integration</option> <option value='feature/vcl-opengl2'>feature/vcl-opengl2</option> <option value='feature/vclptr'>feature/vclptr</option> <option value='feature/vlc'>feature/vlc</option> <option value='feature/vlc-rb'>feature/vlc-rb</option> <option value='feature/vs2012'>feature/vs2012</option> <option value='feature/wasm'>feature/wasm</option> <option value='feature/window-iter'>feature/window-iter</option> <option value='feature/windows-cross-build'>feature/windows-cross-build</option> <option value='feature/windowsupdater'>feature/windowsupdater</option> <option value='feature/xtiledrenderable'>feature/xtiledrenderable</option> <option value='feature/yrs-demo'>feature/yrs-demo</option> <option value='libreoffice-24-2'>libreoffice-24-2</option> <option value='libreoffice-24-2-0'>libreoffice-24-2-0</option> <option value='libreoffice-24-2-1'>libreoffice-24-2-1</option> <option value='libreoffice-24-2-2'>libreoffice-24-2-2</option> <option value='libreoffice-24-2-3'>libreoffice-24-2-3</option> <option value='libreoffice-24-2-4'>libreoffice-24-2-4</option> <option value='libreoffice-24-2-5'>libreoffice-24-2-5</option> <option value='libreoffice-24-2-6'>libreoffice-24-2-6</option> <option value='libreoffice-24-2-7'>libreoffice-24-2-7</option> <option value='libreoffice-24-8'>libreoffice-24-8</option> <option value='libreoffice-24-8-0'>libreoffice-24-8-0</option> <option value='libreoffice-24-8-1'>libreoffice-24-8-1</option> <option value='libreoffice-24-8-2'>libreoffice-24-8-2</option> <option value='libreoffice-24-8-3'>libreoffice-24-8-3</option> <option value='libreoffice-24-8-4'>libreoffice-24-8-4</option> <option value='libreoffice-24-8-5'>libreoffice-24-8-5</option> <option value='libreoffice-24-8-6'>libreoffice-24-8-6</option> <option value='libreoffice-25-2'>libreoffice-25-2</option> <option value='libreoffice-25-2-0'>libreoffice-25-2-0</option> <option value='libreoffice-25-2-1'>libreoffice-25-2-1</option> <option value='libreoffice-3-5'>libreoffice-3-5</option> <option value='libreoffice-3-5-0'>libreoffice-3-5-0</option> <option value='libreoffice-3-5-1'>libreoffice-3-5-1</option> <option value='libreoffice-3-5-2'>libreoffice-3-5-2</option> <option value='libreoffice-3-5-3'>libreoffice-3-5-3</option> <option value='libreoffice-3-5-4'>libreoffice-3-5-4</option> <option value='libreoffice-3-5-5'>libreoffice-3-5-5</option> <option value='libreoffice-3-5-6'>libreoffice-3-5-6</option> <option value='libreoffice-3-5-7'>libreoffice-3-5-7</option> <option value='libreoffice-3-6'>libreoffice-3-6</option> <option value='libreoffice-3-6-0'>libreoffice-3-6-0</option> <option value='libreoffice-3-6-1'>libreoffice-3-6-1</option> <option value='libreoffice-3-6-2'>libreoffice-3-6-2</option> <option value='libreoffice-3-6-3'>libreoffice-3-6-3</option> <option value='libreoffice-3-6-4'>libreoffice-3-6-4</option> <option value='libreoffice-3-6-5'>libreoffice-3-6-5</option> <option value='libreoffice-3-6-6'>libreoffice-3-6-6</option> <option value='libreoffice-3-6-7'>libreoffice-3-6-7</option> <option value='libreoffice-4-0'>libreoffice-4-0</option> <option value='libreoffice-4-0-0'>libreoffice-4-0-0</option> <option value='libreoffice-4-0-1'>libreoffice-4-0-1</option> <option value='libreoffice-4-0-2'>libreoffice-4-0-2</option> <option value='libreoffice-4-0-3'>libreoffice-4-0-3</option> <option value='libreoffice-4-0-4'>libreoffice-4-0-4</option> <option value='libreoffice-4-0-5'>libreoffice-4-0-5</option> <option value='libreoffice-4-0-6'>libreoffice-4-0-6</option> <option value='libreoffice-4-1'>libreoffice-4-1</option> <option value='libreoffice-4-1-0'>libreoffice-4-1-0</option> <option value='libreoffice-4-1-1'>libreoffice-4-1-1</option> <option value='libreoffice-4-1-2'>libreoffice-4-1-2</option> <option value='libreoffice-4-1-3'>libreoffice-4-1-3</option> <option value='libreoffice-4-1-4'>libreoffice-4-1-4</option> <option value='libreoffice-4-1-5'>libreoffice-4-1-5</option> <option value='libreoffice-4-1-6'>libreoffice-4-1-6</option> <option value='libreoffice-4-2'>libreoffice-4-2</option> <option value='libreoffice-4-2-0'>libreoffice-4-2-0</option> <option value='libreoffice-4-2-1'>libreoffice-4-2-1</option> <option value='libreoffice-4-2-2'>libreoffice-4-2-2</option> <option value='libreoffice-4-2-3'>libreoffice-4-2-3</option> <option value='libreoffice-4-2-4'>libreoffice-4-2-4</option> <option value='libreoffice-4-2-5'>libreoffice-4-2-5</option> <option value='libreoffice-4-2-6'>libreoffice-4-2-6</option> <option value='libreoffice-4-2-7'>libreoffice-4-2-7</option> <option value='libreoffice-4-2-8'>libreoffice-4-2-8</option> <option value='libreoffice-4-3'>libreoffice-4-3</option> <option value='libreoffice-4-3-0'>libreoffice-4-3-0</option> <option value='libreoffice-4-3-1'>libreoffice-4-3-1</option> <option value='libreoffice-4-3-2'>libreoffice-4-3-2</option> <option value='libreoffice-4-3-3'>libreoffice-4-3-3</option> <option value='libreoffice-4-3-4'>libreoffice-4-3-4</option> <option value='libreoffice-4-3-5'>libreoffice-4-3-5</option> <option value='libreoffice-4-3-6'>libreoffice-4-3-6</option> <option value='libreoffice-4-3-7'>libreoffice-4-3-7</option> <option value='libreoffice-4-4'>libreoffice-4-4</option> <option value='libreoffice-4-4-0'>libreoffice-4-4-0</option> <option value='libreoffice-4-4-1'>libreoffice-4-4-1</option> <option value='libreoffice-4-4-2'>libreoffice-4-4-2</option> <option value='libreoffice-4-4-3'>libreoffice-4-4-3</option> <option value='libreoffice-4-4-4'>libreoffice-4-4-4</option> <option value='libreoffice-4-4-5'>libreoffice-4-4-5</option> <option value='libreoffice-4-4-6'>libreoffice-4-4-6</option> <option value='libreoffice-4-4-7'>libreoffice-4-4-7</option> <option value='libreoffice-5-0'>libreoffice-5-0</option> <option value='libreoffice-5-0-0'>libreoffice-5-0-0</option> <option value='libreoffice-5-0-1'>libreoffice-5-0-1</option> <option value='libreoffice-5-0-2'>libreoffice-5-0-2</option> <option value='libreoffice-5-0-3'>libreoffice-5-0-3</option> <option value='libreoffice-5-0-4'>libreoffice-5-0-4</option> <option value='libreoffice-5-0-5'>libreoffice-5-0-5</option> <option value='libreoffice-5-0-6'>libreoffice-5-0-6</option> <option value='libreoffice-5-1'>libreoffice-5-1</option> <option value='libreoffice-5-1-0'>libreoffice-5-1-0</option> <option value='libreoffice-5-1-1'>libreoffice-5-1-1</option> <option value='libreoffice-5-1-2'>libreoffice-5-1-2</option> <option value='libreoffice-5-1-3'>libreoffice-5-1-3</option> <option value='libreoffice-5-1-4'>libreoffice-5-1-4</option> <option value='libreoffice-5-1-5'>libreoffice-5-1-5</option> <option value='libreoffice-5-1-6'>libreoffice-5-1-6</option> <option value='libreoffice-5-2'>libreoffice-5-2</option> <option value='libreoffice-5-2-0'>libreoffice-5-2-0</option> <option value='libreoffice-5-2-1'>libreoffice-5-2-1</option> <option value='libreoffice-5-2-2'>libreoffice-5-2-2</option> <option value='libreoffice-5-2-3'>libreoffice-5-2-3</option> <option value='libreoffice-5-2-4'>libreoffice-5-2-4</option> <option value='libreoffice-5-2-5'>libreoffice-5-2-5</option> <option value='libreoffice-5-2-6'>libreoffice-5-2-6</option> <option value='libreoffice-5-2-7'>libreoffice-5-2-7</option> <option value='libreoffice-5-3'>libreoffice-5-3</option> <option value='libreoffice-5-3-0'>libreoffice-5-3-0</option> <option value='libreoffice-5-3-1'>libreoffice-5-3-1</option> <option value='libreoffice-5-3-2'>libreoffice-5-3-2</option> <option value='libreoffice-5-3-3'>libreoffice-5-3-3</option> <option value='libreoffice-5-3-4'>libreoffice-5-3-4</option> <option value='libreoffice-5-3-5'>libreoffice-5-3-5</option> <option value='libreoffice-5-3-6'>libreoffice-5-3-6</option> <option value='libreoffice-5-3-7'>libreoffice-5-3-7</option> <option value='libreoffice-5-4'>libreoffice-5-4</option> <option value='libreoffice-5-4-0'>libreoffice-5-4-0</option> <option value='libreoffice-5-4-1'>libreoffice-5-4-1</option> <option value='libreoffice-5-4-2'>libreoffice-5-4-2</option> <option value='libreoffice-5-4-3'>libreoffice-5-4-3</option> <option value='libreoffice-5-4-4'>libreoffice-5-4-4</option> <option value='libreoffice-5-4-5'>libreoffice-5-4-5</option> <option value='libreoffice-5-4-6'>libreoffice-5-4-6</option> <option value='libreoffice-5-4-7'>libreoffice-5-4-7</option> <option value='libreoffice-6-0'>libreoffice-6-0</option> <option value='libreoffice-6-0-0'>libreoffice-6-0-0</option> <option value='libreoffice-6-0-1'>libreoffice-6-0-1</option> <option value='libreoffice-6-0-2'>libreoffice-6-0-2</option> <option value='libreoffice-6-0-3'>libreoffice-6-0-3</option> <option value='libreoffice-6-0-4'>libreoffice-6-0-4</option> <option value='libreoffice-6-0-5'>libreoffice-6-0-5</option> <option value='libreoffice-6-0-6'>libreoffice-6-0-6</option> <option value='libreoffice-6-0-7'>libreoffice-6-0-7</option> <option value='libreoffice-6-1'>libreoffice-6-1</option> <option value='libreoffice-6-1-0'>libreoffice-6-1-0</option> <option value='libreoffice-6-1-1'>libreoffice-6-1-1</option> <option value='libreoffice-6-1-2'>libreoffice-6-1-2</option> <option value='libreoffice-6-1-3'>libreoffice-6-1-3</option> <option value='libreoffice-6-1-4'>libreoffice-6-1-4</option> <option value='libreoffice-6-1-5'>libreoffice-6-1-5</option> <option value='libreoffice-6-1-6'>libreoffice-6-1-6</option> <option value='libreoffice-6-2'>libreoffice-6-2</option> <option value='libreoffice-6-2-0'>libreoffice-6-2-0</option> <option value='libreoffice-6-2-1'>libreoffice-6-2-1</option> <option value='libreoffice-6-2-2'>libreoffice-6-2-2</option> <option value='libreoffice-6-2-3'>libreoffice-6-2-3</option> <option value='libreoffice-6-2-4'>libreoffice-6-2-4</option> <option value='libreoffice-6-2-5'>libreoffice-6-2-5</option> <option value='libreoffice-6-2-6'>libreoffice-6-2-6</option> <option value='libreoffice-6-2-7'>libreoffice-6-2-7</option> <option value='libreoffice-6-2-8'>libreoffice-6-2-8</option> <option value='libreoffice-6-3'>libreoffice-6-3</option> <option value='libreoffice-6-3-0'>libreoffice-6-3-0</option> <option value='libreoffice-6-3-1'>libreoffice-6-3-1</option> <option value='libreoffice-6-3-2'>libreoffice-6-3-2</option> <option value='libreoffice-6-3-3'>libreoffice-6-3-3</option> <option value='libreoffice-6-3-4'>libreoffice-6-3-4</option> <option value='libreoffice-6-3-5'>libreoffice-6-3-5</option> <option value='libreoffice-6-3-6'>libreoffice-6-3-6</option> <option value='libreoffice-6-4'>libreoffice-6-4</option> <option value='libreoffice-6-4-0'>libreoffice-6-4-0</option> <option value='libreoffice-6-4-1'>libreoffice-6-4-1</option> <option value='libreoffice-6-4-2'>libreoffice-6-4-2</option> <option value='libreoffice-6-4-3'>libreoffice-6-4-3</option> <option value='libreoffice-6-4-4'>libreoffice-6-4-4</option> <option value='libreoffice-6-4-5'>libreoffice-6-4-5</option> <option value='libreoffice-6-4-6'>libreoffice-6-4-6</option> <option value='libreoffice-6-4-7'>libreoffice-6-4-7</option> <option value='libreoffice-7-0'>libreoffice-7-0</option> <option value='libreoffice-7-0-0'>libreoffice-7-0-0</option> <option value='libreoffice-7-0-1'>libreoffice-7-0-1</option> <option value='libreoffice-7-0-2'>libreoffice-7-0-2</option> <option value='libreoffice-7-0-3'>libreoffice-7-0-3</option> <option value='libreoffice-7-0-4'>libreoffice-7-0-4</option> <option value='libreoffice-7-0-5'>libreoffice-7-0-5</option> <option value='libreoffice-7-0-6'>libreoffice-7-0-6</option> <option value='libreoffice-7-1'>libreoffice-7-1</option> <option value='libreoffice-7-1-0'>libreoffice-7-1-0</option> <option value='libreoffice-7-1-1'>libreoffice-7-1-1</option> <option value='libreoffice-7-1-2'>libreoffice-7-1-2</option> <option value='libreoffice-7-1-3'>libreoffice-7-1-3</option> <option value='libreoffice-7-1-4'>libreoffice-7-1-4</option> <option value='libreoffice-7-1-5'>libreoffice-7-1-5</option> <option value='libreoffice-7-1-6'>libreoffice-7-1-6</option> <option value='libreoffice-7-1-7'>libreoffice-7-1-7</option> <option value='libreoffice-7-2'>libreoffice-7-2</option> <option value='libreoffice-7-2-0'>libreoffice-7-2-0</option> <option value='libreoffice-7-2-1'>libreoffice-7-2-1</option> <option value='libreoffice-7-2-2'>libreoffice-7-2-2</option> <option value='libreoffice-7-2-3'>libreoffice-7-2-3</option> <option value='libreoffice-7-2-5'>libreoffice-7-2-5</option> <option value='libreoffice-7-2-6'>libreoffice-7-2-6</option> <option value='libreoffice-7-2-7'>libreoffice-7-2-7</option> <option value='libreoffice-7-3'>libreoffice-7-3</option> <option value='libreoffice-7-3-0'>libreoffice-7-3-0</option> <option value='libreoffice-7-3-1'>libreoffice-7-3-1</option> <option value='libreoffice-7-3-2'>libreoffice-7-3-2</option> <option value='libreoffice-7-3-3'>libreoffice-7-3-3</option> <option value='libreoffice-7-3-4'>libreoffice-7-3-4</option> <option value='libreoffice-7-3-5'>libreoffice-7-3-5</option> <option value='libreoffice-7-3-6'>libreoffice-7-3-6</option> <option value='libreoffice-7-3-7'>libreoffice-7-3-7</option> <option value='libreoffice-7-4'>libreoffice-7-4</option> <option value='libreoffice-7-4-0'>libreoffice-7-4-0</option> <option value='libreoffice-7-4-1'>libreoffice-7-4-1</option> <option value='libreoffice-7-4-2'>libreoffice-7-4-2</option> <option value='libreoffice-7-4-3'>libreoffice-7-4-3</option> <option value='libreoffice-7-4-4'>libreoffice-7-4-4</option> <option value='libreoffice-7-4-6'>libreoffice-7-4-6</option> <option value='libreoffice-7-4-7'>libreoffice-7-4-7</option> <option value='libreoffice-7-5'>libreoffice-7-5</option> <option value='libreoffice-7-5-0'>libreoffice-7-5-0</option> <option value='libreoffice-7-5-1'>libreoffice-7-5-1</option> <option value='libreoffice-7-5-2'>libreoffice-7-5-2</option> <option value='libreoffice-7-5-3'>libreoffice-7-5-3</option> <option value='libreoffice-7-5-4'>libreoffice-7-5-4</option> <option value='libreoffice-7-5-5'>libreoffice-7-5-5</option> <option value='libreoffice-7-5-6'>libreoffice-7-5-6</option> <option value='libreoffice-7-5-7'>libreoffice-7-5-7</option> <option value='libreoffice-7-5-8'>libreoffice-7-5-8</option> <option value='libreoffice-7-5-9'>libreoffice-7-5-9</option> <option value='libreoffice-7-6'>libreoffice-7-6</option> <option value='libreoffice-7-6-0'>libreoffice-7-6-0</option> <option value='libreoffice-7-6-1'>libreoffice-7-6-1</option> <option value='libreoffice-7-6-2'>libreoffice-7-6-2</option> <option value='libreoffice-7-6-3'>libreoffice-7-6-3</option> <option value='libreoffice-7-6-4'>libreoffice-7-6-4</option> <option value='libreoffice-7-6-5'>libreoffice-7-6-5</option> <option value='libreoffice-7-6-6'>libreoffice-7-6-6</option> <option value='libreoffice-7-6-7'>libreoffice-7-6-7</option> <option value='master'>master</option> <option value='ports/macosx10.5/master'>ports/macosx10.5/master</option> <option value='private/Ashod/cd-5.3-3.2_import_unloaded'>private/Ashod/cd-5.3-3.2_import_unloaded</option> <option value='private/Ashod/cd-5.3-3.2_import_unloaded_share_GfxLink'>private/Ashod/cd-5.3-3.2_import_unloaded_share_GfxLink</option> <option value='private/Ashod/cd-5.3.3.2'>private/Ashod/cd-5.3.3.2</option> <option value='private/Ashod/cp-5.0-preinit'>private/Ashod/cp-5.0-preinit</option> <option value='private/Ashod/fast-calc-rendering'>private/Ashod/fast-calc-rendering</option> <option value='private/Ashod/pdfium'>private/Ashod/pdfium</option> <option value='private/Ashod/pdfium_on_master'>private/Ashod/pdfium_on_master</option> <option value='private/Ashod/pdfium_on_master_fixed'>private/Ashod/pdfium_on_master_fixed</option> <option value='private/EL-SHREIF/ui_logger'>private/EL-SHREIF/ui_logger</option> <option value='private/Minion3665/swf-export'>private/Minion3665/swf-export</option> <option value='private/Rosemary/change-tracking'>private/Rosemary/change-tracking</option> <option value='private/Sweetshark/killswclient'>private/Sweetshark/killswclient</option> <option value='private/Sweetshark/lessdepend'>private/Sweetshark/lessdepend</option> <option value='private/Sweetshark/multilistenerfix'>private/Sweetshark/multilistenerfix</option> <option value='private/ajrhunt/c4'>private/ajrhunt/c4</option> <option value='private/ajrhunt/cunit'>private/ajrhunt/cunit</option> <option value='private/ajrhunt/cunitdemo'>private/ajrhunt/cunitdemo</option> <option value='private/ajrhunt/firebird-improvement'>private/ajrhunt/firebird-improvement</option> <option value='private/bansan/chardraw'>private/bansan/chardraw</option> <option value='private/bubli/textboxchaining'>private/bubli/textboxchaining</option> <option value='private/hcvcastro/preinit'>private/hcvcastro/preinit</option> <option value='private/hcvcastro/undo-row-comment'>private/hcvcastro/undo-row-comment</option> <option value='private/jmux/armin-strip-before-squash'>private/jmux/armin-strip-before-squash</option> <option value='private/jmux/broken-static-win'>private/jmux/broken-static-win</option> <option value='private/jmux/current-reorga'>private/jmux/current-reorga</option> <option value='private/jmux/meson'>private/jmux/meson</option> <option value='private/jmux/meson-gsoc-2021'>private/jmux/meson-gsoc-2021</option> <option value='private/jmux/oss-fuzz'>private/jmux/oss-fuzz</option> <option value='private/jmux/oss-fuzz-wip'>private/jmux/oss-fuzz-wip</option> <option value='private/jmux/scheduler-fixes'>private/jmux/scheduler-fixes</option> <option value='private/jmux/shape.odt'>private/jmux/shape.odt</option> <option value='private/jmux/wasm-for-master'>private/jmux/wasm-for-master</option> <option value='private/jmux/wasm-tmp'>private/jmux/wasm-tmp</option> <option value='private/jmux/wasm_for_master_catchall'>private/jmux/wasm_for_master_catchall</option> <option value='private/jmux/win-arm64'>private/jmux/win-arm64</option> <option value='private/jmux/win-test-nohang'>private/jmux/win-test-nohang</option> <option value='private/juergen/Tests'>private/juergen/Tests</option> <option value='private/juergen/check-cjk'>private/juergen/check-cjk</option> <option value='private/kendy/condformat-api'>private/kendy/condformat-api</option> <option value='private/kendy/condformat-fdo82014'>private/kendy/condformat-fdo82014</option> <option value='private/kendy/mailmerge-04'>private/kendy/mailmerge-04</option> <option value='private/kendy/mailmerge-05'>private/kendy/mailmerge-05</option> <option value='private/kendy/swinterpreter'>private/kendy/swinterpreter</option> <option value='private/kendy/testcl'>private/kendy/testcl</option> <option value='private/khaledhosny/color-fonts'>private/khaledhosny/color-fonts</option> <option value='private/khaledhosny/vcl-cleanup-font'>private/khaledhosny/vcl-cleanup-font</option> <option value='private/kohei/chart-bugs'>private/kohei/chart-bugs</option> <option value='private/kohei/find-replace-all-perf'>private/kohei/find-replace-all-perf</option> <option value='private/kohei/headless-perf'>private/kohei/headless-perf</option> <option value='private/kohei/if-or-not-if-jump'>private/kohei/if-or-not-if-jump</option> <option value='private/kohei/sort-ref-update'>private/kohei/sort-ref-update</option> <option value='private/lfrb/opengl-vcl'>private/lfrb/opengl-vcl</option> <option value='private/lgodard/calc_notes_import_export'>private/lgodard/calc_notes_import_export</option> <option value='private/lgodard/tdf#117202'>private/lgodard/tdf#117202</option> <option value='private/llunak/mailmerge'>private/llunak/mailmerge</option> <option value='private/llunak/mailmerge_01'>private/llunak/mailmerge_01</option> <option value='private/llunak/mailmerge_02'>private/llunak/mailmerge_02</option> <option value='private/llunak/mailmerge_03'>private/llunak/mailmerge_03</option> <option value='private/llunak/munich_12587'>private/llunak/munich_12587</option> <option value='private/llunak/skia'>private/llunak/skia</option> <option value='private/lmamane/basetest'>private/lmamane/basetest</option> <option value='private/lmamane/for-julien2412'>private/lmamane/for-julien2412</option> <option value='private/lmamane/for-julien2412-master'>private/lmamane/for-julien2412-master</option> <option value='private/lmamane/tdf110997'>private/lmamane/tdf110997</option> <option value='private/lmamane/timedate-controls-nanosecond'>private/lmamane/timedate-controls-nanosecond</option> <option value='private/lmamane/validation'>private/lmamane/validation</option> <option value='private/mcecchetti/23H1/a11y/paragraph'>private/mcecchetti/23H1/a11y/paragraph</option> <option value='private/mcecchetti/accessibility/paragraph'>private/mcecchetti/accessibility/paragraph</option> <option value='private/mcecchetti/amd/pdf-export-jpeg'>private/mcecchetti/amd/pdf-export-jpeg</option> <option value='private/mcecchetti/bitmapcrc64'>private/mcecchetti/bitmapcrc64</option> <option value='private/mcecchetti/bitmapcrc64-5-0'>private/mcecchetti/bitmapcrc64-5-0</option> <option value='private/mcecchetti/calc-perf-unit-test'>private/mcecchetti/calc-perf-unit-test</option> <option value='private/mcecchetti/calc-unit-test'>private/mcecchetti/calc-unit-test</option> <option value='private/mcecchetti/gl-program-binary'>private/mcecchetti/gl-program-binary</option> <option value='private/mert/wip_deepl'>private/mert/wip_deepl</option> <option value='private/mikekaganski/multicolumn'>private/mikekaganski/multicolumn</option> <option value='private/mmeeks/aafixes44'>private/mmeeks/aafixes44</option> <option value='private/mmeeks/backports'>private/mmeeks/backports</option> <option value='private/mmeeks/binarydatacache'>private/mmeeks/binarydatacache</option> <option value='private/mmeeks/bitmapcrc64'>private/mmeeks/bitmapcrc64</option> <option value='private/mmeeks/copy-paste'>private/mmeeks/copy-paste</option> <option value='private/mmeeks/copypaste'>private/mmeeks/copypaste</option> <option value='private/mmeeks/cp-6.2-bits'>private/mmeeks/cp-6.2-bits</option> <option value='private/mmeeks/cp64merge'>private/mmeeks/cp64merge</option> <option value='private/mmeeks/currency-dropdown'>private/mmeeks/currency-dropdown</option> <option value='private/mmeeks/foo'>private/mmeeks/foo</option> <option value='private/mmeeks/formula-iterator'>private/mmeeks/formula-iterator</option> <option value='private/mmeeks/gldebug'>private/mmeeks/gldebug</option> <option value='private/mmeeks/hidpi-bits'>private/mmeeks/hidpi-bits</option> <option value='private/mmeeks/icontest'>private/mmeeks/icontest</option> <option value='private/mmeeks/opengl-backbuffer'>private/mmeeks/opengl-backbuffer</option> <option value='private/mmeeks/opengl-backbuffer2'>private/mmeeks/opengl-backbuffer2</option> <option value='private/mmeeks/sandbox'>private/mmeeks/sandbox</option> <option value='private/mmeeks/swapdatacontainer'>private/mmeeks/swapdatacontainer</option> <option value='private/mmeeks/vcl-opengl3'>private/mmeeks/vcl-opengl3</option> <option value='private/moggi/fix-opengl-context-problems'>private/moggi/fix-opengl-context-problems</option> <option value='private/moggi/improved-dxf-xls-export'>private/moggi/improved-dxf-xls-export</option> <option value='private/moggi/opengl-4-4-build-test'>private/moggi/opengl-4-4-build-test</option> <option value='private/moggi/opengl-preparation'>private/moggi/opengl-preparation</option> <option value='private/moggi/opengl-vcl-win'>private/moggi/opengl-vcl-win</option> <option value='private/moggi/orcus-improvements'>private/moggi/orcus-improvements</option> <option value='private/moggi/track-win-dc'>private/moggi/track-win-dc</option> <option value='private/moggi/ui-test'>private/moggi/ui-test</option> <option value='private/moggi/vcl-opengl3'>private/moggi/vcl-opengl3</option> <option value='private/mst/sw_fieldmarkhide'>private/mst/sw_fieldmarkhide</option> <option value='private/mst/sw_redlinehide'>private/mst/sw_redlinehide</option> <option value='private/mst/sw_redlinehide_2'>private/mst/sw_redlinehide_2</option> <option value='private/mst/sw_redlinehide_3'>private/mst/sw_redlinehide_3</option> <option value='private/mst/sw_redlinehide_4a'>private/mst/sw_redlinehide_4a</option> <option value='private/mst/sw_redlinehide_4b'>private/mst/sw_redlinehide_4b</option> <option value='private/pranavk/modernize_gtktiledviewer'>private/pranavk/modernize_gtktiledviewer</option> <option value='private/quwex/gsoc-box2d-experimental'>private/quwex/gsoc-box2d-experimental</option> <option value='private/quwex/notespane-search'>private/quwex/notespane-search</option> <option value='private/quwex/notespaneflat'>private/quwex/notespaneflat</option> <option value='private/quwex/notespanesquashed'>private/quwex/notespanesquashed</option> <option value='private/quwex/tdf59323'>private/quwex/tdf59323</option> <option value='private/s.mehrbrodt/colorpicker-backport'>private/s.mehrbrodt/colorpicker-backport</option> <option value='private/sweetshark/swdepend'>private/sweetshark/swdepend</option> <option value='private/tbsdy/clipping'>private/tbsdy/clipping</option> <option value='private/tbsdy/drawserverfontlayout'>private/tbsdy/drawserverfontlayout</option> <option value='private/tbsdy/emf'>private/tbsdy/emf</option> <option value='private/tbsdy/osl_getAllEnvironment'>private/tbsdy/osl_getAllEnvironment</option> <option value='private/tbsdy/outdev'>private/tbsdy/outdev</option> <option value='private/tbsdy/printinfomgr'>private/tbsdy/printinfomgr</option> <option value='private/tbsdy/workbench'>private/tbsdy/workbench</option> <option value='private/thb/libo-6-1+backports'>private/thb/libo-6-1+backports</option> <option value='private/thb/libreoffice-5-2+backports'>private/thb/libreoffice-5-2+backports</option> <option value='private/thb/sw_redlinehide-6-1'>private/thb/sw_redlinehide-6-1</option> <option value='private/thb/tdf149754'>private/thb/tdf149754</option> <option value='private/thb/wasm-upstreaming'>private/thb/wasm-upstreaming</option> <option value='private/timar/cp-6.2-centos7'>private/timar/cp-6.2-centos7</option> <option value='private/timar/fontconfigcrash'>private/timar/fontconfigcrash</option> <option value='private/timar/pythonupgrademsp'>private/timar/pythonupgrademsp</option> <option value='private/tml/Use-the-iOS-French-and-Italian-dictionaries-for-othe'>private/tml/Use-the-iOS-French-and-Italian-dictionaries-for-othe</option> <option value='private/tml/android-use-bionic-linker-copy'>private/tml/android-use-bionic-linker-copy</option> <option value='private/tml/android-use-faulty.lib'>private/tml/android-use-faulty.lib</option> <option value='private/tml/cp-6-4-28-1'>private/tml/cp-6-4-28-1</option> <option value='private/tml/fixwintext'>private/tml/fixwintext</option> <option value='private/tml/iculess'>private/tml/iculess</option> <option value='private/tml/lov-6.1.5.2'>private/tml/lov-6.1.5.2</option> <option value='private/tml/lov-6.2.1'>private/tml/lov-6.2.1</option> <option value='private/tml/lov-7.0.3.3'>private/tml/lov-7.0.3.3</option> <option value='private/tml/lov-7.0.4'>private/tml/lov-7.0.4</option> <option value='private/tml/lov-7.1.2'>private/tml/lov-7.1.2</option> <option value='private/tml/opencl-default-1'>private/tml/opencl-default-1</option> <option value='private/tvajngerl/staging'>private/tvajngerl/staging</option> <option value='ref/for/distro/collabora/cp-6.2'>ref/for/distro/collabora/cp-6.2</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>LibreOffice 核心代码仓库</td><td class='sub right'>文档基金会</td></tr></table> <table class='tabs'><tr><td> <a href='/cgit/lo/core/?h=cp-5.3-56'>summary</a><a href='/cgit/lo/core/refs/?h=cp-5.3-56'>refs</a><a class='active' href='/cgit/lo/core/log/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56'>log</a><a href='/cgit/lo/core/tree/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56'>tree</a><a href='/cgit/lo/core/commit/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56'>commit</a><a href='/cgit/lo/core/diff/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit/lo/core/log/extensions/source/logging/loggerconfig.cxx'> <input type='hidden' name='h' value='cp-5.3-56'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit/lo/core/log/?h=cp-5.3-56'>root</a>/<a href='/cgit/lo/core/log/extensions?h=cp-5.3-56'>extensions</a>/<a href='/cgit/lo/core/log/extensions/source?h=cp-5.3-56'>source</a>/<a href='/cgit/lo/core/log/extensions/source/logging?h=cp-5.3-56'>logging</a>/<a href='/cgit/lo/core/log/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56'>loggerconfig.cxx</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit/lo/core/log/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56&showmsg=1'>Expand</a>)</th><th class='left'>Author</th></tr> <tr><td><span title='2016-04-26 07:43:58 +0000'>2016-04-26</span></td><td><a href='/cgit/lo/core/commit/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56&id=17c4f7f0bc986ed2623a60eea99be01036899af3'>clang-tidy modernize-loop-convert in e*</a><span class='decoration'></span></td><td>Noel Grandin</td></tr> <tr><td><span title='2015-11-10 10:31:25 +0100'>2015-11-10</span></td><td><a href='/cgit/lo/core/commit/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56&id=f19dda5a55156afda2c6dde6c51c455cc5657fc2'>loplugin:nullptr (automatic rewrite)</a></td><td>Stephan Bergmann</td></tr> <tr><td><span title='2015-10-30 08:59:59 +0000'>2015-10-30</span></td><td><a href='/cgit/lo/core/commit/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56&id=3bc5df7f32501075149e4b41f6e98ea8dd2cfcbd'>UNO: no need to use OUString constructor when calling createInstance</a><span class='decoration'></span></td><td>Noel Grandin</td></tr> <tr><td><span title='2015-10-01 12:18:24 +0200'>2015-10-01</span></td><td><a href='/cgit/lo/core/commit/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56&id=f1de3e14df9665ce48d676ac6f3439506d2b81f2'>com::sun::star->css in extensions/</a><span class='decoration'></span></td><td>Noel Grandin</td></tr> <tr><td><span title='2014-05-29 09:01:40 +0200'>2014-05-29</span></td><td><a href='/cgit/lo/core/commit/extensions/source/logging/loggerconfig.cxx?h=cp-5.3-56&id=f0ae48b684e89acd7088c31a8feff5fc03d51105'>remove unnecessary NULL parameter passed to UNO Exception</a></td><td>Noel Grandin</td></tr>