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

Reply via email to