sw/inc/crsrsh.hxx | 5 ++++- sw/source/core/crsr/crsrsh.cxx | 4 ++-- sw/source/core/crsr/crstrvl1.cxx | 5 +++++ sw/source/uibase/docvw/edtwin.cxx | 8 +++++++- 4 files changed, 18 insertions(+), 4 deletions(-)
New commits: commit 752b8e88f58d74ed75834fe1cc48395a0f14f8e0 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Mar 2 14:54:21 2015 +0100 SwEditWin: when tiled rendering, let double click select an empty cell When not tiled rendering and the user double-clicks on a word, then that's selected. If the double-click happens in an empty cell, nothing happens. When tiled rendering, still try to select a word, but if that doesn't work, then see if we are in a table, and then select just that cell. Then the user can use the usual selection handles to adjust the selection further. Change-Id: I6beabf5c73a02f1eb2ede6f8cf9062c1e6610e9e diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx index 13489ce..1fdef4b 100644 --- a/sw/inc/crsrsh.hxx +++ b/sw/inc/crsrsh.hxx @@ -157,7 +157,8 @@ public: SCROLLWIN = (1 << 1), ///< scroll window CHKRANGE = (1 << 2), ///< check overlapping PaMs NOCALRECT = (1 << 3), ///< don't recalculate CharRect - READONLY = (1 << 4) ///< make visible in spite of Readonly + READONLY = (1 << 4), ///< make visible in spite of Readonly + SELECTCELL = (1 << 5) ///< Create table cursor even if we don't span over multiple cells. }; private: @@ -729,6 +730,8 @@ public: bool GoStartSentence(); bool GoEndSentence(); bool SelectWord( const Point* pPt = 0 ); + /// Creates table cursor even if we don't span over multiple cells. + void SelectCell(); bool ExpandToSentenceBorders(); // get position from current cursor diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 982a2ac..ce7dc5c 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -1417,11 +1417,11 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, bool bIdleEnd ) // If the current cursor is in a table and point/mark in different boxes, // then the table mode is active (also if it is already active: m_pTblCrsr) SwPaM* pTstCrsr = getShellCrsr( true ); - if( pTstCrsr->HasMark() && !m_pBlockCrsr && + if( ( pTstCrsr->HasMark() || eFlags & SwCrsrShell::SELECTCELL ) && !m_pBlockCrsr && mpDoc->IsIdxInTbl( pTstCrsr->GetPoint()->nNode ) && ( m_pTblCrsr || pTstCrsr->GetNode( true ).StartOfSectionNode() != - pTstCrsr->GetNode( false ).StartOfSectionNode() ) && !mbSelectAll) + pTstCrsr->GetNode( false ).StartOfSectionNode() || eFlags & SwCrsrShell::SELECTCELL ) && !mbSelectAll) { SwShellCrsr* pITmpCrsr = getShellCrsr( true ); Point aTmpPt( pITmpCrsr->GetPtPos() ); diff --git a/sw/source/core/crsr/crstrvl1.cxx b/sw/source/core/crsr/crstrvl1.cxx index 699302a..d39e89c 100644 --- a/sw/source/core/crsr/crstrvl1.cxx +++ b/sw/source/core/crsr/crstrvl1.cxx @@ -81,6 +81,11 @@ bool SwCrsrShell::SelectWord( const Point* pPt ) return m_pCurCrsr->SelectWord( this, pPt ); } +void SwCrsrShell::SelectCell() +{ + UpdateCrsr(SwCrsrShell::SELECTCELL); +} + bool SwCrsrShell::ExpandToSentenceBorders() { return m_pCurCrsr->ExpandToSentenceBorders(); diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index bf0b28d..08105b9 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -3414,7 +3414,13 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) rSh.LeaveAddMode(); } else - rSh.SelWrd( &aDocPos ); + { + if (!rSh.SelWrd(&aDocPos) && rSh.isTiledRendering()) + // Double click did not select any word: try to + // select the current cell in case we are in a + // table. + rSh.SelectCell(); + } bHoldSelection = true; return; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits