Author: mordante
Date: Fri May 22 11:51:52 2009
New Revision: 35813

URL: http://svn.gna.org/viewcvs/wesnoth?rev=35813&view=rev
Log:
Start to polish the scrollbar_container scrollbars.

Now that the old layout algorithm is removed this can be polished. This
is the first step and the polishing is still WIP.

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=35813&r1=35812&r2=35813&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.cpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.cpp Fri May 22 11:51:52 2009
@@ -85,10 +85,8 @@
 tscrollbar_container::tscrollbar_container(const unsigned canvas_count)
        : tcontainer_(canvas_count)
        , state_(ENABLED)
-       , vertical_scrollbar_mode_(auto_visible)
-       , horizontal_scrollbar_mode_(auto_visible)
-       , initial_vertical_scrollbar_mode_(auto_visible)
-       , initial_horizontal_scrollbar_mode_(auto_visible)
+       , vertical_scrollbar_mode_(auto_visible_first_run)
+       , horizontal_scrollbar_mode_(auto_visible_first_run)
        , vertical_scrollbar_grid_(NULL)
        , horizontal_scrollbar_grid_(NULL)
        , vertical_scrollbar_(NULL)
@@ -97,12 +95,6 @@
        , content_(NULL)
        , content_visible_area_()
 {
-       if(gui2::new_widgets) {
-               vertical_scrollbar_mode_ = auto_visible_first_run;
-               horizontal_scrollbar_mode_ = auto_visible_first_run;
-               initial_vertical_scrollbar_mode_ = auto_visible_first_run;
-               initial_horizontal_scrollbar_mode_ = auto_visible_first_run;
-       }
 }
 
 void tscrollbar_container::NEW_layout_init(const bool full_initialization)
@@ -113,36 +105,30 @@
        if(full_initialization) {
 
                assert(vertical_scrollbar_grid_);
-               switch(initial_vertical_scrollbar_mode_) {
+               switch(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_) {
+               switch(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);
                }
        }
@@ -154,7 +140,7 @@
 void tscrollbar_container::NEW_request_reduce_height(
                const unsigned maximum_height)
 {
-       if(initial_vertical_scrollbar_mode_ == always_invisible) {
+       if(vertical_scrollbar_mode_ == always_invisible) {
                return;
        }
 
@@ -170,7 +156,6 @@
 
        // Always set the bar visible, is a nop is already visible.
        vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
-       vertical_scrollbar_mode_ = always_visible;
 
        const tpoint scrollbar_size = vertical_scrollbar_grid_->get_best_size();
        if(maximum_height > static_cast<unsigned>(scrollbar_size.y)) {
@@ -208,13 +193,12 @@
                return;
        }
 
-       if(initial_horizontal_scrollbar_mode_ == always_invisible) {
+       if(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();
@@ -236,13 +220,13 @@
 
        /***** get vertical scrollbar size *****/
        const tpoint vertical_scrollbar =
-                       vertical_scrollbar_mode_ == always_invisible
+                       vertical_scrollbar_grid_->get_visible() == 
twidget::INVISIBLE
                        ? tpoint(0, 0)
                        : vertical_scrollbar_grid_->get_best_size();
 
        /***** get horizontal scrollbar size *****/
        const tpoint horizontal_scrollbar =
-                       horizontal_scrollbar_mode_ == always_invisible
+                       horizontal_scrollbar_grid_->get_visible() == 
twidget::INVISIBLE
                        ? tpoint(0, 0)
                        : horizontal_scrollbar_grid_->get_best_size();
 
@@ -272,29 +256,23 @@
 {
 
        assert(scrollbar_grid && scrollbar);
-       if(scrollbar_mode != tscrollbar_container::always_invisible) {
-
-               scrollbar->set_item_count(items);
-               scrollbar->set_visible_items(visible_items);
-
-               const bool scrollbar_needed =
-                       items > visible_items;
-
-               if(!scrollbar_needed) {
-
-                       // Hide the scrollbar
-                       if(scrollbar_mode == 
tscrollbar_container::auto_visible) {
-                               if(true) { // extra setting
-                                       scrollbar_mode = 
tscrollbar_container::always_invisible;
-                               } else {
-                                       
scrollbar_grid->set_visible(twidget::HIDDEN);
-                               }
-                       }
-               }
-       }
 
        if(scrollbar_mode == tscrollbar_container::always_invisible) {
                scrollbar_grid->set_visible(twidget::INVISIBLE);
+               return;
+       }
+
+
+       scrollbar->set_item_count(items);
+       scrollbar->set_visible_items(visible_items);
+
+       if(scrollbar_mode == tscrollbar_container::auto_visible) {
+
+               const bool scrollbar_needed = items > visible_items;
+
+               scrollbar_grid->set_visible(scrollbar_needed
+                               ? twidget::VISIBLE
+                               : twidget::HIDDEN);
        }
 }
 
@@ -566,7 +544,6 @@
 {
        if(vertical_scrollbar_mode_ != scrollbar_mode) {
                vertical_scrollbar_mode_ = scrollbar_mode;
-               initial_vertical_scrollbar_mode_ = scrollbar_mode;
                show_vertical_scrollbar();
        }
 }
@@ -576,7 +553,6 @@
 {
        if(horizontal_scrollbar_mode_ != scrollbar_mode) {
                horizontal_scrollbar_mode_ = scrollbar_mode;
-               initial_horizontal_scrollbar_mode_ = scrollbar_mode;
                show_horizontal_scrollbar();
        }
 }
@@ -606,10 +582,17 @@
                return;
        }
 
-       if(vertical_scrollbar_mode_ == always_invisible) {
-               vertical_scrollbar_grid_->set_visible(twidget::INVISIBLE);
-       } else {
-               vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
+       switch(vertical_scrollbar_mode_) {
+               case always_visible :
+                       vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
+                       break;
+
+               case auto_visible :
+                       vertical_scrollbar_grid_->set_visible(twidget::HIDDEN);
+                       break;
+
+               default :
+                       
vertical_scrollbar_grid_->set_visible(twidget::INVISIBLE);
        }
 }
 
@@ -619,10 +602,17 @@
                return;
        }
 
-       if(horizontal_scrollbar_mode_ == always_invisible) {
-               horizontal_scrollbar_grid_->set_visible(twidget::INVISIBLE);
-       } else {
-               horizontal_scrollbar_grid_->set_visible(twidget::VISIBLE);
+       switch(horizontal_scrollbar_mode_) {
+               case always_visible :
+                       
horizontal_scrollbar_grid_->set_visible(twidget::VISIBLE);
+                       break;
+
+               case auto_visible :
+                       
horizontal_scrollbar_grid_->set_visible(twidget::HIDDEN);
+                       break;
+
+               default :
+                       
horizontal_scrollbar_grid_->set_visible(twidget::INVISIBLE);
        }
 }
 

Modified: trunk/src/gui/widgets/scrollbar_container.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/scrollbar_container.hpp?rev=35813&r1=35812&r2=35813&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.hpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.hpp Fri May 22 11:51:52 2009
@@ -336,16 +336,6 @@
                vertical_scrollbar_mode_,
                horizontal_scrollbar_mode_;
 
-       /**
-        * The initial mode of how to show the scrollbar.
-        *
-        * If layout_init is called a second time the scrollbar_mode should be
-        * reset to its 'initial' mode. This is the last mode the user set.
-        */
-       tscrollbar_mode
-               initial_vertical_scrollbar_mode_,
-               initial_horizontal_scrollbar_mode_;
-
        /** These are valid after finalize_setup(). */
        tgrid
                *vertical_scrollbar_grid_,


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

Reply via email to