diff options
author | Justin Luth <justin_luth@sil.org> | 2016-01-06 21:23:47 +0300 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2016-01-07 09:11:10 +0000 |
commit | 66b8b09d0aa97e4009d2019a9d93b74cd1e11a09 (patch) | |
tree | 2858c6ef5b39d5b495f3017e90d8b0aa3779c6dc /sd/source | |
parent | 184a6a5301d699e0e1b3c16ddb27afc34e17a9d7 (diff) |
set reasonable default size for new draw/impress tables
The width was decent, except that on small paper (A6) it was
wider than the paper size.
The height was terrible - the minimum size possible. It was too small
for even a single line of text. That made it hard to grab the table edge
(instead grabbing a row edge) when trying to resize.
Now the height and width are limited to the page/view size,
and based on the number of rows created. One possible enhancement
would be to use the border width instead of the page width.
Change-Id: I4e106a7bc34f65886e3c80d308499242c0fdd7d8
Reviewed-on: https://gerrit.libreoffice.org/21171
Reviewed-by: Justin Luth <justin_luth@sil.org>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sd/source')
-rw-r--r-- | sd/source/ui/table/tablefunction.cxx | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/sd/source/ui/table/tablefunction.cxx b/sd/source/ui/table/tablefunction.cxx index 0070bee8e0d3..7535798d3b7d 100644 --- a/sd/source/ui/table/tablefunction.cxx +++ b/sd/source/ui/table/tablefunction.cxx @@ -146,12 +146,32 @@ void DrawViewShell::FuTable(SfxRequest& rReq) } else { - Size aSize( 14100, 200 ); + Size aSize( 14100, 2000 ); Point aPos; Rectangle aWinRect(aPos, GetActiveWindow()->GetOutputSizePixel() ); + aWinRect = GetActiveWindow()->PixelToLogic(aWinRect); + + // make sure that the default size of the table fits on the paper and is inside the viewing area. + // if zoomed in close, don't make the table bigger than the viewing window. + Size aMaxSize = getCurrentPage()->GetSize(); + if( aMaxSize.Height() > aWinRect.getHeight() ) + aMaxSize.setHeight( aWinRect.getHeight() ); + if( aMaxSize.Width() > aWinRect.getWidth() ) + aMaxSize.setWidth( aWinRect.getWidth() ); + + if( aSize.Width() > aMaxSize.getWidth() ) + aSize.setWidth( aMaxSize.getWidth() ); + + // adjust height based on # of rows. + if( nRows > 0 ) + { + aSize.setHeight( aSize.Height() * nRows ); + if( aSize.Height() > aMaxSize.getHeight() ) + aSize.setHeight( aMaxSize.getHeight() ); + } + aPos = aWinRect.Center(); - aPos = GetActiveWindow()->PixelToLogic(aPos); aPos.X() -= aSize.Width() / 2; aPos.Y() -= aSize.Height() / 2; aRect = Rectangle(aPos, aSize); |