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>
diff --git a/sd/source/ui/table/tablefunction.cxx b/sd/source/ui/table/tablefunction.cxx
index 0070bee..7535798 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);