X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fpreviewholder.cpp;h=1717e5053c0cc2b5f1d5fe2e6254a7abc24b7433;hb=c0cd5511d3b975ebe07d019c1f5528108725e438;hp=b89e68adceabc145164e38132e21d4123266cea7;hpb=e8d5b4140940ede3d1b30c1784171b1331f84b02;p=inkscape.git diff --git a/src/ui/previewholder.cpp b/src/ui/previewholder.cpp index b89e68adc..1717e5053 100644 --- a/src/ui/previewholder.cpp +++ b/src/ui/previewholder.cpp @@ -35,8 +35,9 @@ PreviewHolder::PreviewHolder() : _prefCols(0), _updatesFrozen(false), _anchor(Gtk::ANCHOR_CENTER), - _baseSize(Gtk::ICON_SIZE_MENU), - _view(VIEW_TYPE_LIST) + _baseSize(Inkscape::ICON_SIZE_MENU), + _view(VIEW_TYPE_LIST), + _wrap(false) { _scroller = manage(new Gtk::ScrolledWindow()); _insides = manage(new Gtk::Table( 1, 2 )); @@ -123,7 +124,7 @@ void PreviewHolder::thawUpdates() rebuildUI(); } -void PreviewHolder::setStyle(Gtk::BuiltinIconSize size, ViewType view) +void PreviewHolder::setStyle( Inkscape::IconSize size, ViewType view ) { if ( size != _baseSize || view != _view ) { _baseSize = size; @@ -142,7 +143,7 @@ void PreviewHolder::setOrientation( Gtk::AnchorType how ) case Gtk::ANCHOR_NORTH: case Gtk::ANCHOR_SOUTH: { - dynamic_cast(_scroller)->set_policy( Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC ); + dynamic_cast(_scroller)->set_policy( Gtk::POLICY_AUTOMATIC, _wrap ? Gtk::POLICY_AUTOMATIC : Gtk::POLICY_NEVER ); } break; @@ -162,6 +163,28 @@ void PreviewHolder::setOrientation( Gtk::AnchorType how ) } } +void PreviewHolder::setWrap( bool b ) +{ + if ( b != _wrap ) { + _wrap = b; + switch ( _anchor ) + { + case Gtk::ANCHOR_NORTH: + case Gtk::ANCHOR_SOUTH: + { + dynamic_cast(_scroller)->set_policy( Gtk::POLICY_AUTOMATIC, _wrap ? Gtk::POLICY_AUTOMATIC : Gtk::POLICY_NEVER ); + } + break; + default: + { + (void)0; + // do nothing; + } + } + rebuildUI(); + } +} + void PreviewHolder::setColumnPref( int cols ) { _prefCols = cols; @@ -208,14 +231,14 @@ void PreviewHolder::calcGridSize( const Gtk::Widget* thing, int itemCount, int& Gtk::Requisition req2; const_cast(thing)->size_request(req2); - int h2 = req.height / req2.height; - int w2 = req.width / req2.width; + int h2 = ((req2.height > 0) && (req.height > req2.height)) ? (req.height / req2.height) : 1; + int w2 = ((req2.width > 0) && (req.width > req2.width)) ? (req.width / req2.width) : 1; width = (itemCount + (h2 - 1)) / h2; if ( width < w2 ) { width = w2; } } else { - width = _baseSize == Gtk::ICON_SIZE_MENU ? COLUMNS_FOR_SMALL : COLUMNS_FOR_LARGE; + width = (_baseSize == Inkscape::ICON_SIZE_MENU || _baseSize == Inkscape::ICON_SIZE_DECORATION) ? COLUMNS_FOR_SMALL : COLUMNS_FOR_LARGE; if ( _prefCols > 0 ) { width = _prefCols; }