Author: mordante
Date: Thu Apr 30 14:14:50 2009
New Revision: 35342

URL: http://svn.gna.org/viewcvs/wesnoth?rev=35342&view=rev
Log:
Add tscrollbar_container::NEW_request_reduce_width.

Modified:
    trunk/src/gui/widgets/scrollbar_container.cpp
    trunk/src/gui/widgets/scrollbar_container.hpp

Modified: trunk/src/gui/widgets/scrollbar_container.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/scrollbar_container.cpp?rev=35342&r1=35341&r2=35342&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.cpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.cpp Thu Apr 30 14:14:50 2009
@@ -233,6 +233,47 @@
        }
 }
 
+void tscrollbar_container::NEW_request_reduce_width(
+               const unsigned maximum_width)
+{
+       // First ask our content, it might be able to wrap which looks better as
+       // a scrollbar.
+       assert(content_grid_);
+       const unsigned offset = vertical_scrollbar_grid_
+                       && vertical_scrollbar_grid_->get_visible() != 
twidget::INVISIBLE
+                               ?  vertical_scrollbar_grid_->get_best_size().x
+                               : 0;
+       content_grid_->NEW_request_reduce_width(maximum_width - offset);
+
+       // Did we manage to achieve the wanted size?
+       assert(horizontal_scrollbar_grid_);
+
+       tpoint size = get_best_size();
+       if(static_cast<unsigned>(size.x) < maximum_width) {
+               return;
+       }
+
+       if(initial_horizontal_scrollbar_mode_ == always_invisible) {
+               return;
+       }
+
+       // Always set the bar visible, is a nop when it's already visible.
+       horizontal_scrollbar_grid_->set_visible(twidget::VISIBLE);
+       horizontal_scrollbar_mode_ = always_visible;
+       size = get_best_size();
+
+       const tpoint scrollbar_size = 
horizontal_scrollbar_grid_->get_best_size();
+       if(maximum_width > static_cast<unsigned>(scrollbar_size.x)) {
+               size.x = maximum_width;
+       } else {
+               size.x = scrollbar_size.x;
+       }
+
+       // FIXME adjust for the step size of the scrollbar
+
+       set_layout_size(size);
+}
+
 void tscrollbar_container::layout_wrap(const unsigned maximum_width)
 {
        // Inherited.

Modified: trunk/src/gui/widgets/scrollbar_container.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/scrollbar_container.hpp?rev=35342&r1=35341&r2=35342&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.hpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.hpp Thu Apr 30 14:14:50 2009
@@ -81,6 +81,9 @@
        /** Inherited from twidget. */
        void NEW_request_reduce_height(const unsigned maximum_height);
 
+       /** Inherited from tcontrol. */
+       void NEW_request_reduce_width(const unsigned maximum_width);
+
        /** Inherited from tcontainer_. */
        bool can_wrap() const
        {


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to