|
|
0d57d1f |
From 937d1d5be8d0c783fb5740aa50456f9941ac638b Mon Sep 17 00:00:00 2001
|
|
|
0d57d1f |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
|
0d57d1f |
Date: Wed, 29 Jul 2020 21:05:27 +0100
|
|
|
0d57d1f |
Subject: [PATCH] rhbz#1861794 csv fixed width import missing split handle
|
|
|
0d57d1f |
MIME-Version: 1.0
|
|
|
0d57d1f |
Content-Type: text/plain; charset=UTF-8
|
|
|
0d57d1f |
Content-Transfer-Encoding: 8bit
|
|
|
0d57d1f |
|
|
|
0d57d1f |
regression from...
|
|
|
0d57d1f |
|
|
|
0d57d1f |
commit 1e97ca02773e2ba968606eed61d25d88f0d7e417
|
|
|
0d57d1f |
Author: Caolán McNamara <caolanm@redhat.com>
|
|
|
0d57d1f |
Date: Mon Oct 14 11:05:07 2019 +0100
|
|
|
0d57d1f |
|
|
|
0d57d1f |
EndMouseTracking was left uncalled
|
|
|
0d57d1f |
|
|
|
0d57d1f |
Change-Id: Ia952addac585737c3d3aa4fd68d772c3acbae848
|
|
|
0d57d1f |
---
|
|
|
0d57d1f |
sc/source/ui/dbgui/csvruler.cxx | 36 ++++++++++++++++-----------------
|
|
|
0d57d1f |
sc/source/ui/inc/csvruler.hxx | 7 ++++---
|
|
|
0d57d1f |
2 files changed, 21 insertions(+), 22 deletions(-)
|
|
|
0d57d1f |
|
|
|
0d57d1f |
diff --git a/sc/source/ui/dbgui/csvruler.cxx b/sc/source/ui/dbgui/csvruler.cxx
|
|
|
0d57d1f |
index 294f22526974..9fe9f6433359 100644
|
|
|
0d57d1f |
--- a/sc/source/ui/dbgui/csvruler.cxx
|
|
|
0d57d1f |
+++ b/sc/source/ui/dbgui/csvruler.cxx
|
|
|
0d57d1f |
@@ -106,7 +106,7 @@ void ScCsvRuler::SetDrawingArea(weld::DrawingArea* pDrawingArea)
|
|
|
0d57d1f |
{
|
|
|
0d57d1f |
ScCsvControl::SetDrawingArea(pDrawingArea);
|
|
|
0d57d1f |
|
|
|
0d57d1f |
- mnSplitSize = (GetCharWidth() * 3 / 5) | 1; // make an odd number
|
|
|
0d57d1f |
+ UpdateSplitSize();
|
|
|
0d57d1f |
|
|
|
0d57d1f |
Size aSize(1, GetTextHeight() + mnSplitSize + 2);
|
|
|
0d57d1f |
pDrawingArea->set_size_request(aSize.Width(), aSize.Height());
|
|
|
0d57d1f |
@@ -162,10 +162,17 @@ void ScCsvRuler::InitColors()
|
|
|
0d57d1f |
InvalidateGfx();
|
|
|
0d57d1f |
}
|
|
|
0d57d1f |
|
|
|
0d57d1f |
+void ScCsvRuler::UpdateSplitSize()
|
|
|
0d57d1f |
+{
|
|
|
0d57d1f |
+ mnSplitSize = (GetCharWidth() * 3 / 5) | 1; // make an odd number
|
|
|
0d57d1f |
+}
|
|
|
0d57d1f |
+
|
|
|
0d57d1f |
void ScCsvRuler::InitSizeData()
|
|
|
0d57d1f |
{
|
|
|
0d57d1f |
maWinSize = GetOutputSizePixel();
|
|
|
0d57d1f |
|
|
|
0d57d1f |
+ UpdateSplitSize();
|
|
|
0d57d1f |
+
|
|
|
0d57d1f |
sal_Int32 nActiveWidth = std::min( GetWidth() - GetHdrWidth(), GetPosCount() * GetCharWidth() );
|
|
|
0d57d1f |
sal_Int32 nActiveHeight = GetTextHeight();
|
|
|
0d57d1f |
|
|
|
0d57d1f |
@@ -409,7 +416,11 @@ bool ScCsvRuler::MouseButtonDown( const MouseEvent& rMEvt )
|
|
|
0d57d1f |
|
|
|
0d57d1f |
bool ScCsvRuler::MouseButtonUp( const MouseEvent& )
|
|
|
0d57d1f |
{
|
|
|
0d57d1f |
- mbTracking = false;
|
|
|
0d57d1f |
+ if (mbTracking)
|
|
|
0d57d1f |
+ {
|
|
|
0d57d1f |
+ EndMouseTracking();
|
|
|
0d57d1f |
+ mbTracking = false;
|
|
|
0d57d1f |
+ }
|
|
|
0d57d1f |
return true;
|
|
|
0d57d1f |
}
|
|
|
0d57d1f |
|
|
|
0d57d1f |
@@ -498,24 +509,11 @@ void ScCsvRuler::MoveMouseTracking( sal_Int32 nPos )
|
|
|
0d57d1f |
}
|
|
|
0d57d1f |
}
|
|
|
0d57d1f |
|
|
|
0d57d1f |
-void ScCsvRuler::EndMouseTracking( bool bApply )
|
|
|
0d57d1f |
+void ScCsvRuler::EndMouseTracking()
|
|
|
0d57d1f |
{
|
|
|
0d57d1f |
- if( bApply ) // tracking finished successfully
|
|
|
0d57d1f |
- {
|
|
|
0d57d1f |
- // remove on simple click on an existing split
|
|
|
0d57d1f |
- if( (mnPosMTCurr == mnPosMTStart) && maOldSplits.HasSplit( mnPosMTCurr ) && !mbPosMTMoved )
|
|
|
0d57d1f |
- Execute( CSVCMD_REMOVESPLIT, mnPosMTCurr );
|
|
|
0d57d1f |
- }
|
|
|
0d57d1f |
- else // tracking cancelled
|
|
|
0d57d1f |
- {
|
|
|
0d57d1f |
- MoveCursor( mnPosMTStart );
|
|
|
0d57d1f |
- // move split to origin
|
|
|
0d57d1f |
- if( maOldSplits.HasSplit( mnPosMTStart ) )
|
|
|
0d57d1f |
- MoveMouseTracking( mnPosMTStart );
|
|
|
0d57d1f |
- // remove temporarily inserted split
|
|
|
0d57d1f |
- else if( !maOldSplits.HasSplit( mnPosMTCurr ) )
|
|
|
0d57d1f |
- Execute( CSVCMD_REMOVESPLIT, mnPosMTCurr );
|
|
|
0d57d1f |
- }
|
|
|
0d57d1f |
+ // remove on simple click on an existing split
|
|
|
0d57d1f |
+ if( (mnPosMTCurr == mnPosMTStart) && maOldSplits.HasSplit( mnPosMTCurr ) && !mbPosMTMoved )
|
|
|
0d57d1f |
+ Execute( CSVCMD_REMOVESPLIT, mnPosMTCurr );
|
|
|
0d57d1f |
mnPosMTStart = CSV_POS_INVALID;
|
|
|
0d57d1f |
}
|
|
|
0d57d1f |
|
|
|
0d57d1f |
diff --git a/sc/source/ui/inc/csvruler.hxx b/sc/source/ui/inc/csvruler.hxx
|
|
|
0d57d1f |
index 32d72ef93b8f..0913ac09271f 100644
|
|
|
0d57d1f |
--- a/sc/source/ui/inc/csvruler.hxx
|
|
|
0d57d1f |
+++ b/sc/source/ui/inc/csvruler.hxx
|
|
|
0d57d1f |
@@ -137,9 +137,8 @@ private:
|
|
|
0d57d1f |
void StartMouseTracking( sal_Int32 nPos );
|
|
|
0d57d1f |
/** Moves tracking to a new position. */
|
|
|
0d57d1f |
void MoveMouseTracking( sal_Int32 nPos );
|
|
|
0d57d1f |
- /** Applies tracking action for the current tracking position.
|
|
|
0d57d1f |
- @param bApply sal_True = apply action, sal_False = cancel action. */
|
|
|
0d57d1f |
- void EndMouseTracking( bool bApply );
|
|
|
0d57d1f |
+ /** Applies tracking action for the current tracking position */
|
|
|
0d57d1f |
+ void EndMouseTracking();
|
|
|
0d57d1f |
|
|
|
0d57d1f |
// painting ---------------------------------------------------------------
|
|
|
0d57d1f |
protected:
|
|
|
0d57d1f |
@@ -154,6 +153,8 @@ private:
|
|
|
0d57d1f |
sal_Int32 GetWidth() const { return maWinSize.Width(); }
|
|
|
0d57d1f |
/** Returns the height of the control. */
|
|
|
0d57d1f |
sal_Int32 GetHeight() const { return maWinSize.Height(); }
|
|
|
0d57d1f |
+ /** Update the split size depending on the last width set by CSVCMD_SETCHARWIDTH */
|
|
|
0d57d1f |
+ void UpdateSplitSize();
|
|
|
0d57d1f |
|
|
|
0d57d1f |
/** Draws the background and active area to maBackgrDev (only the given X range). */
|
|
|
0d57d1f |
void ImplDrawArea( sal_Int32 nPosX, sal_Int32 nWidth );
|
|
|
0d57d1f |
--
|
|
|
0d57d1f |
2.26.2
|
|
|
0d57d1f |
|