Index: src/simutrans/display/scr_coord.h
===================================================================
--- src/simutrans/display/scr_coord.h	(revisión: 10761)
+++ src/simutrans/display/scr_coord.h	(copia de trabajo)
@@ -122,6 +122,7 @@
 	scr_size( scr_coord_val w_par, scr_coord_val h_par) { w = w_par; h = h_par; }
 
 	operator scr_coord() const { return scr_coord(w,h); }
+	operator bool() const { return ((w != 0) && (h != 0)); }
 
 	bool operator ==(const scr_size& other) const { return ((w-other.w) | (h-other.h)) == 0; }
 	bool operator !=(const scr_size& other) const { return !(other == *this ); }
Index: src/simutrans/gui/components/gui_component.h
===================================================================
--- src/simutrans/gui/components/gui_component.h	(revisión: 10761)
+++ src/simutrans/gui/components/gui_component.h	(copia de trabajo)
@@ -154,7 +154,15 @@
 		return scr_size(0,0);
 	}
 
+	/**
+	 * Get this component's minimal bounding box size when inside a scrollpane.
+	 * Elements will be as least as small.
+	 */
+	virtual scr_size get_min_scroll_size() const {
+		return scr_size(0,0);
+	}
 
+
 	/**
 	 * Checks if the given position is inside the component area.
 	 * @return true if the coordinates are inside this component area.
Index: src/simutrans/gui/components/gui_image_list.cc
===================================================================
--- src/simutrans/gui/components/gui_image_list.cc	(revisión: 10761)
+++ src/simutrans/gui/components/gui_image_list.cc	(copia de trabajo)
@@ -145,3 +145,5 @@
 	}
 	return scr_size((images->get_count()+1)*grid.x + 2*BORDER, grid.y + 2*BORDER);
 }
+
+scr_size gui_image_list_t::get_min_scroll_size() const { return scr_size(grid.x + 2*BORDER, grid.y + 2*BORDER); }
\ No newline at end of file
Index: src/simutrans/gui/components/gui_image_list.h
===================================================================
--- src/simutrans/gui/components/gui_image_list.h	(revisión: 10761)
+++ src/simutrans/gui/components/gui_image_list.h	(copia de trabajo)
@@ -102,6 +102,7 @@
 
 	scr_size get_min_size() const OVERRIDE;
 	scr_size get_max_size() const OVERRIDE;
+	scr_size get_min_scroll_size() const OVERRIDE;
 };
 
 #endif
Index: src/simutrans/gui/components/gui_scrollpane.cc
===================================================================
--- src/simutrans/gui/components/gui_scrollpane.cc	(revisión: 10761)
+++ src/simutrans/gui/components/gui_scrollpane.cc	(copia de trabajo)
@@ -26,6 +26,7 @@
 	this->comp = comp;
 
 	max_width = D_DEFAULT_WIDTH-D_MARGIN_LEFT-D_MARGIN_RIGHT;
+	max_height = D_DEFAULT_HEIGHT/2-D_MARGIN_TOP-D_MARGIN_BOTTOM;
 
 	b_show_scroll_x = b_scroll_x;
 	b_show_scroll_y = b_scroll_y;
@@ -40,12 +41,18 @@
 
 scr_size gui_scrollpane_t::get_min_size() const
 {
-	// request width of largest element, but leave enough space for scrollbars
-	scr_size csize = comp->get_min_size();
+	scr_size csize = comp->get_min_scroll_size();
+	if( !csize ) {
+		// the component does not have a minimum scroll size
+		// use min_size and limit it with max_width/height
+		csize = comp->get_min_size();
+		csize.w = min( csize.w, max_width );
+		csize.h = min( csize.h, max_height );
+	}
 	csize.w = max( csize.w, scroll_x.get_min_size().w );
-	csize.w = min( csize.w, max_width );
-	csize.h = min( csize.h, scroll_y.get_min_size().h );
+	csize.h = max( csize.h, scroll_y.get_min_size().h );
 	return csize;
+
 }
 
 scr_size gui_scrollpane_t::get_max_size() const
Index: src/simutrans/gui/components/gui_scrollpane.h
===================================================================
--- src/simutrans/gui/components/gui_scrollpane.h	(revisión: 10761)
+++ src/simutrans/gui/components/gui_scrollpane.h	(copia de trabajo)
@@ -20,11 +20,6 @@
 private:
 	scr_size old_comp_size;
 
-	/**
-	 * Scrollbar X/Y
-	 */
-	scrollbar_t scroll_x, scroll_y;
-
 	bool b_show_scroll_x:1;
 	bool b_show_scroll_y:1;
 	bool b_has_size_corner:1;
@@ -35,15 +30,21 @@
 	// start of dragging
 	scr_coord origin;
 
-	// for oversized entries
-	scr_coord_val max_width;
-
 protected:
 	/**
 	 * The scrolling component
 	 */
 	gui_component_t *comp;
+	
+	/**
+	 * Scrollbar X/Y
+	 */
+	scrollbar_t scroll_x, scroll_y;
 
+		// for oversized entries
+	scr_coord_val max_width;
+	scr_coord_val max_height;
+
 	void recalc_sliders(scr_size size);
 
 public:
Index: src/simutrans/gui/depot_frame.cc
===================================================================
--- src/simutrans/gui/depot_frame.cc	(revisión: 10761)
+++ src/simutrans/gui/depot_frame.cc	(copia de trabajo)
@@ -429,7 +429,7 @@
 	update_data();
 
 	reset_min_windowsize();
-	set_windowsize(size);
+	resize(size);
 	set_resizemode( diagonal_resize );
 
 	depot->clear_command_pending();
