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