Author: mordante
Date: Sun Apr 26 18:42:53 2009
New Revision: 35241

URL: http://svn.gna.org/viewcvs/wesnoth?rev=35241&view=rev
Log:
Fixed several minor issues with the scrollbars.

The new algorithm now correctly seems to work with the vertical
scrollbar in the several modes. (The algorithm will be committed next.)

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

Modified: trunk/src/gui/widgets/scrollbar_container.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/scrollbar_container.cpp?rev=35241&r1=35240&r2=35241&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.cpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.cpp Sun Apr 26 18:42:53 2009
@@ -157,23 +157,39 @@
 
        if(full_initialization) {
 
-
-               if(initial_vertical_scrollbar_mode_ == always_visible
-                               || initial_vertical_scrollbar_mode_ == 
auto_visible) {
-
-                       vertical_scrollbar_mode_ = always_visible;
-               } else {
-                       vertical_scrollbar_mode_ = always_invisible;
-               }
-               show_vertical_scrollbar();
-
-               if(initial_vertical_scrollbar_mode_ == always_visible
-                               || initial_vertical_scrollbar_mode_ == 
auto_visible) {
-                       horizontal_scrollbar_mode_ = always_visible;
-               } else {
-                       horizontal_scrollbar_mode_ = always_invisible;
-               }
-               show_horizontal_scrollbar();
+               assert(vertical_scrollbar_grid_);
+               switch(initial_vertical_scrollbar_mode_) {
+                       case always_visible :
+                               vertical_scrollbar_mode_ = always_visible;
+                               
vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
+                               break;
+
+                       case auto_visible :
+                               vertical_scrollbar_mode_ = always_visible;
+                               
vertical_scrollbar_grid_->set_visible(twidget::HIDDEN);
+                               break;
+
+                       default :
+                               vertical_scrollbar_mode_ = always_invisible;
+                               
vertical_scrollbar_grid_->set_visible(twidget::INVISIBLE);
+               }
+
+               assert(horizontal_scrollbar_grid_);
+               switch(initial_horizontal_scrollbar_mode_) {
+                       case always_visible :
+                               horizontal_scrollbar_mode_ = always_visible;
+                               
horizontal_scrollbar_grid_->set_visible(twidget::VISIBLE);
+                               break;
+
+                       case auto_visible :
+                               horizontal_scrollbar_mode_ = always_visible;
+                               
horizontal_scrollbar_grid_->set_visible(twidget::HIDDEN);
+                               break;
+
+                       default :
+                               horizontal_scrollbar_mode_ = always_invisible;
+                               
horizontal_scrollbar_grid_->set_visible(twidget::INVISIBLE);
+               }
        }
 
        assert(content_grid_);
@@ -194,14 +210,11 @@
                return;
        }
 
-       const bool unhide =
-               initial_vertical_scrollbar_mode_ == auto_visible_first_run
-               && vertical_scrollbar_mode_ == always_invisible;
-
-       if(unhide) {
-               vertical_scrollbar_mode_ = always_visible;
-               show_vertical_scrollbar();
-       }
+       const bool resized =
+               vertical_scrollbar_grid_->get_visible() == twidget::INVISIBLE;
+
+       // Always set the bar visible, is a nop is already visible.
+       vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
 
        const tpoint scrollbar_size = vertical_scrollbar_grid_->get_best_size();
        if(maximum_height > static_cast<unsigned>(scrollbar_size.y)) {
@@ -214,7 +227,7 @@
 
        set_layout_size(size);
 
-       if(unhide) {
+       if(resized) {
                throw tlayout_exception_width_modified();
        }
 }


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

Reply via email to