X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fpreviewholder.cpp;h=961c060bb9381e7784de2f77904223f9c786f577;hb=69d270fec638055afb0f4d6037b1e7d6bd7d10be;hp=321b7899fc164114bef8dc9cd11513f21b7f7def;hpb=1bdb42eddb21aee3dc7fb58ff67ce9b2ec482763;p=inkscape.git diff --git a/src/ui/previewholder.cpp b/src/ui/previewholder.cpp index 321b7899f..961c060bb 100644 --- a/src/ui/previewholder.cpp +++ b/src/ui/previewholder.cpp @@ -14,6 +14,8 @@ #include "previewholder.h" #include +#include +#include namespace Inkscape { @@ -24,6 +26,9 @@ PreviewHolder::PreviewHolder() : VBox(), PreviewFillable(), _scroller(0), + _zee0(0), + _zee1(0), + _zee2(0), _anchor(Gtk::ANCHOR_CENTER), _baseSize(Gtk::ICON_SIZE_MENU), _view(VIEW_TYPE_LIST) @@ -32,9 +37,15 @@ PreviewHolder::PreviewHolder() : Gtk::Table* stuff = manage(new Gtk::Table( 1, 2 )); stuff->set_col_spacings( 8 ); _insides = stuff; + + // Add a container with the scroller and a spacer + Gtk::Table* spaceHolder = manage( new Gtk::Table(1, 2) ); + _zee0 = manage( new Gtk::VBox() ); _scroller->add(*stuff); + spaceHolder->attach( *_scroller, 0, 1, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND ); + spaceHolder->attach( *_zee0, 1, 2, 0, 1, Gtk::SHRINK, Gtk::FILL|Gtk::EXPAND ); - pack_start(*_scroller, Gtk::PACK_EXPAND_WIDGET); + pack_start(*spaceHolder, Gtk::PACK_EXPAND_WIDGET); } PreviewHolder::~PreviewHolder() @@ -89,12 +100,31 @@ void PreviewHolder::setOrientation( Gtk::AnchorType how ) { if ( _anchor != how ) { + _anchor = how; switch ( _anchor ) { case Gtk::ANCHOR_NORTH: case Gtk::ANCHOR_SOUTH: { - dynamic_cast(_scroller)->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_NEVER ); + //dynamic_cast(_scroller)->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_NEVER ); + dynamic_cast(_scroller)->set_policy( Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC ); + if ( !_zee1 ) + { + _zee1 = manage( new Gtk::VBox() ); + _zee2 = manage( new Gtk::VBox() ); + + // Trick to get the scrolled window to a minimum height larger than the scrollbar + + Gtk::VScrollbar* vs = dynamic_cast(_scroller)->get_vscrollbar(); + // TODO fix leakage + Glib::RefPtr sizer = Gtk::SizeGroup::create(Gtk::SIZE_GROUP_VERTICAL); + sizer->add_widget( *_zee1 ); + sizer->add_widget( *_zee2 ); + sizer->add_widget( *vs ); + + _zee0->pack_start( *_zee1 ); + _zee0->pack_start( *_zee2 ); + } } break;