summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2016-01-06 21:23:47 +0300
committerJan Holesovsky <kendy@collabora.com>2016-03-31 12:28:48 +0200
commite5418bf8983b7811fd3372bb184d950ebe87e217 (patch)
treeb1aca9fab930a1703e20ef98afde8c6df72a90d4 /sd
parent24f351bda04a0a6198336981c54c5438c6dad723 (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')
-rw-r--r--sd/source/ui/table/tablefunction.cxx24
1 files changed, 22 insertions, 2 deletions
diff --git a/sd/source/ui/table/tablefunction.cxx b/sd/source/ui/table/tablefunction.cxx
index c0c4aef5fef6..f24b0f94b0d9 100644
--- a/sd/source/ui/table/tablefunction.cxx
+++ b/sd/source/ui/table/tablefunction.cxx
@@ -148,12 +148,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);