Author: mordante
Date: Mon Apr 13 15:01:48 2009
New Revision: 34857
URL: http://svn.gna.org/viewcvs/wesnoth?rev=34857&view=rev
Log:
Add a new layout initialization routine.
This is the start of the new layout algorithm.
Modified:
trunk/src/gui/widgets/container.cpp
trunk/src/gui/widgets/container.hpp
trunk/src/gui/widgets/control.cpp
trunk/src/gui/widgets/control.hpp
trunk/src/gui/widgets/generator.hpp
trunk/src/gui/widgets/generator_private.hpp
trunk/src/gui/widgets/grid.cpp
trunk/src/gui/widgets/grid.hpp
trunk/src/gui/widgets/scrollbar_container.cpp
trunk/src/gui/widgets/scrollbar_container.hpp
trunk/src/gui/widgets/widget.cpp
trunk/src/gui/widgets/widget.hpp
Modified: trunk/src/gui/widgets/container.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/container.cpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/container.cpp (original)
+++ trunk/src/gui/widgets/container.cpp Mon Apr 13 15:01:48 2009
@@ -34,6 +34,14 @@
grid_.layout_init2(full_initialization);
}
+void tcontainer_::NEW_layout_init(const bool full_initialization)
+{
+ // Inherited.
+ tcontrol::NEW_layout_init(full_initialization);
+
+ grid_.NEW_layout_init(full_initialization);
+}
+
void tcontainer_::layout_wrap(const unsigned maximum_width)
{
// Inherited.
Modified: trunk/src/gui/widgets/container.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/container.hpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/container.hpp (original)
+++ trunk/src/gui/widgets/container.hpp Mon Apr 13 15:01:48 2009
@@ -50,6 +50,7 @@
/** Inherited from tcontrol. */
void layout_init();
void layout_init2(const bool full_initialization);
+ void NEW_layout_init(const bool full_initialization);
private:
/** Inherited from twidget. */
Modified: trunk/src/gui/widgets/control.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/control.cpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/control.cpp (original)
+++ trunk/src/gui/widgets/control.cpp Mon Apr 13 15:01:48 2009
@@ -130,6 +130,16 @@
{
// Inherited.
twidget::layout_init2(full_initialization);
+
+ if(full_initialization) {
+ shrunken_ = false;
+ }
+}
+
+void tcontrol::NEW_layout_init(const bool full_initialization)
+{
+ // Inherited.
+ twidget::NEW_layout_init(full_initialization);
if(full_initialization) {
shrunken_ = false;
Modified: trunk/src/gui/widgets/control.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/control.hpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/control.hpp (original)
+++ trunk/src/gui/widgets/control.hpp Mon Apr 13 15:01:48 2009
@@ -152,6 +152,7 @@
* use_tooltip_on_label_overflow_. */
void layout_init();
void layout_init2(const bool full_initialization);
+ void NEW_layout_init(const bool full_initialization);
/** Inherited from twidget. */
void layout_wrap(const unsigned maximum_width);
Modified: trunk/src/gui/widgets/generator.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/generator.hpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/generator.hpp (original)
+++ trunk/src/gui/widgets/generator.hpp Mon Apr 13 15:01:48 2009
@@ -201,6 +201,7 @@
/** Inherited from twidget. */
virtual void layout_init() = 0;
virtual void layout_init2(const bool /*full_initialization*/) = 0;
+ virtual void NEW_layout_init(const bool full_initialization) = 0;
/** Inherited from twidget. */
virtual void layout_fit_width(const unsigned /*maximum_width */,
Modified: trunk/src/gui/widgets/generator_private.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/generator_private.hpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/generator_private.hpp (original)
+++ trunk/src/gui/widgets/generator_private.hpp Mon Apr 13 15:01:48 2009
@@ -604,11 +604,22 @@
}
}
+ /** Inherited from tgenerator_. */
void layout_init2(const bool full_initialization)
{
foreach(titem* item, items_) {
if(item->grid.get_visible() != twidget::INVISIBLE) {
item->grid.layout_init2(full_initialization);
+ }
+ }
+ }
+
+ /** Inherited from tgenerator_. */
+ void NEW_layout_init(const bool full_initialization)
+ {
+ foreach(titem* item, items_) {
+ if(item->grid.get_visible() != twidget::INVISIBLE) {
+ item->grid.NEW_layout_init(full_initialization);
}
}
}
Modified: trunk/src/gui/widgets/grid.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/grid.cpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/grid.cpp (original)
+++ trunk/src/gui/widgets/grid.cpp Mon Apr 13 15:01:48 2009
@@ -210,6 +210,19 @@
if(widget && widget->get_visible() != twidget::INVISIBLE) {
widget->layout_init2(full_initialization);
}
+ }
+}
+
+void tgrid::NEW_layout_init(const bool full_initialization)
+{
+ // Inherited.
+ twidget::NEW_layout_init(full_initialization);
+
+ // Clear child caches.
+ foreach(tchild& child, children_) {
+
+ child.NEW_layout_init(full_initialization);
+
}
}
@@ -1081,6 +1094,15 @@
<< widget_orig << " x " << widget_size << ".\n";
widget()->set_size(widget_orig, widget_size);
+}
+
+void tgrid::tchild::NEW_layout_init(const bool full_initialization)
+{
+ assert(widget_);
+
+ if(widget_->get_visible() != twidget::INVISIBLE) {
+ widget_->NEW_layout_init(full_initialization);
+ }
}
void tgrid::tchild::layout_wrap(const unsigned maximum_width)
Modified: trunk/src/gui/widgets/grid.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/grid.hpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/grid.hpp (original)
+++ trunk/src/gui/widgets/grid.hpp Mon Apr 13 15:01:48 2009
@@ -182,6 +182,7 @@
/** Inherited from twidget. */
void layout_init();
void layout_init2(const bool full_initialization);
+ void NEW_layout_init(const bool full_initialization);
private:
@@ -291,6 +292,9 @@
*/
void set_size(tpoint origin, tpoint size);
+ /** Forwards NEW_layout_init() to the cell. */
+ void NEW_layout_init(const bool full_initialization);
+
/** Returns the can_wrap for the cell. */
bool can_wrap() const
{ return widget_ ? widget_->can_wrap() : false; }
Modified: trunk/src/gui/widgets/scrollbar_container.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/scrollbar_container.cpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.cpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.cpp Mon Apr 13 15:01:48 2009
@@ -142,6 +142,32 @@
}
+void tscrollbar_container::NEW_layout_init(const bool full_initialization)
+{
+ // Inherited.
+ tcontainer_::NEW_layout_init(full_initialization);
+
+ if(full_initialization) {
+
+ if(initial_vertical_scrollbar_mode_ == SHOW) {
+ vertical_scrollbar_mode_ = SHOW;
+ } else {
+ vertical_scrollbar_mode_ = HIDE;
+ }
+ show_vertical_scrollbar();
+
+ if(initial_vertical_scrollbar_mode_ == SHOW) {
+ horizontal_scrollbar_mode_ = SHOW;
+ } else {
+ horizontal_scrollbar_mode_ = HIDE;
+ }
+ show_horizontal_scrollbar();
+ }
+
+ assert(content_grid_);
+ content_grid_->NEW_layout_init(full_initialization);
+}
+
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=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/scrollbar_container.hpp (original)
+++ trunk/src/gui/widgets/scrollbar_container.hpp Mon Apr 13 15:01:48 2009
@@ -69,6 +69,7 @@
/** Inherited from tcontainer_. */
void layout_init();
void layout_init2(const bool full_initialization);
+ void NEW_layout_init(const bool full_initialization);
/** Inherited from tcontainer_. */
bool can_wrap() const
Modified: trunk/src/gui/widgets/widget.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/widget.cpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/widget.cpp (original)
+++ trunk/src/gui/widgets/widget.cpp Mon Apr 13 15:01:48 2009
@@ -17,6 +17,13 @@
#include "gui/widgets/window.hpp"
namespace gui2 {
+
+void twidget::NEW_layout_init(const bool /*full_initialization*/)
+{
+ assert(visible_ != INVISIBLE);
+
+ layout_size_ = tpoint(0,0);
+}
tpoint twidget::get_best_size() const
{
Modified: trunk/src/gui/widgets/widget.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/widget.hpp?rev=34857&r1=34856&r2=34857&view=diff
==============================================================================
--- trunk/src/gui/widgets/widget.hpp (original)
+++ trunk/src/gui/widgets/widget.hpp Mon Apr 13 15:01:48 2009
@@ -143,11 +143,19 @@
* that after the layout phase get_best_size() still returns this value.
*/
- /** Initializes the layout phase. */
+ /**
+ * Initializes the layout phase.
+ *
+ * @deprecated Will be removed after the new layout algorithm is
+ * implemented.
+ */
virtual void layout_init() { layout_size_ = tpoint(0,0); }
/**
* Initializes the layout phase.
+ *
+ * @deprecated Will be removed after the new layout algorithm is
+ * implemented.
*
* @param full_initialization Reset the widget to its initial state.
This
* flag is used to change the status in the
@@ -156,6 +164,19 @@
*/
virtual void layout_init2(const bool /*full_initialization*/)
{ layout_size_ = tpoint(0,0); }
+
+ /**
+ * Initializes the layout phase.
+ *
+ * Clears the initial best size for the widgets.
+ *
+ * @see @ref layout_algorihm for more information.
+ *
+ * @param full_initialization For widgets with scrollbars it hides them
+ * unless the mode is tscrollbar_mode::SHOW.
+ * For other widgets this flag is a NOP.
+ */
+ virtual void NEW_layout_init(const bool full_initialization);
/**
* Gets the best size for the widget.
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits