Code cleanup of the widget's code.

Improved function names, descriptions and ordering of the functions.
Also added override markers for C++11.
This commit is contained in:
Mark de Wever 2013-03-10 15:25:50 +00:00
parent 7d78b028b4
commit dcc6035b9f
62 changed files with 1400 additions and 1026 deletions

View file

@ -40,6 +40,7 @@
#include "log.hpp"
#include "marked-up_text.hpp"
#include "wml_separators.hpp"
#include "wml_exception.hpp"
#include <boost/scoped_ptr.hpp>
#include <boost/foreach.hpp>

View file

@ -30,6 +30,7 @@
#include "gui/dialogs/message.hpp"
#include "gui/dialogs/transient_message.hpp"
#include "gui/widgets/window.hpp"
#include "wml_exception.hpp"
#include "../clipboard.hpp"
#include "../game_preferences.hpp"

View file

@ -35,6 +35,7 @@
#include "serialization/parser.hpp"
#include "serialization/validator.hpp"
#include "version.hpp"
#include "wml_exception.hpp"
#include <cerrno>
#include <clocale>

View file

@ -104,10 +104,10 @@ public:
/***** ***** ***** setters / getters for members ***** ****** *****/
void set_width(const unsigned width) { w_ = width; set_dirty(); }
void set_width(const unsigned width) { w_ = width; set_dirty(true); }
unsigned get_width() const { return w_; }
void set_height(const unsigned height) { h_ = height; set_dirty(); }
void set_height(const unsigned height) { h_ = height; set_dirty(true); }
unsigned get_height() const { return h_; }
surface& surf() { return canvas_; }
@ -115,7 +115,7 @@ public:
void set_variable(const std::string& key, const variant& value)
{
variables_.add(key, value);
set_dirty();
set_dirty(true);
}
private:

View file

@ -430,7 +430,7 @@ void thandler::disconnect(tdispatcher* dispatcher)
/***** Set proper state for the other dispatchers. *****/
FOREACH(AUTO dispatcher, dispatchers_) {
dynamic_cast<twidget&>(*dispatcher).set_dirty();
dynamic_cast<twidget&>(*dispatcher).set_dirty(true);
}
activate();
@ -480,7 +480,7 @@ void thandler::draw(const bool force)
* causes black borders around the window. So there's the choice
* between two evils.
*/
dynamic_cast<twidget&>(*dispatcher).set_dirty();
dynamic_cast<twidget&>(*dispatcher).set_dirty(true);
} else {
first = false;
}

View file

@ -16,7 +16,10 @@
#ifndef GUI_AUXILIARY_FIND_WIDGET_TPP_INCLUDED
#define GUI_AUXILIARY_FIND_WIDGET_TPP_INCLUDED
#include "gui/widgets/helper.hpp"
#include "gui/widgets/widget.hpp"
#include "utils/const_clone.tpp"
#include "wml_exception.hpp"
namespace gui2 {

View file

@ -45,6 +45,7 @@
#include "gui/widgets/window.hpp"
#include "formula_string_utils.hpp"
#include "utils/foreach.tpp"
#include "wml_exception.hpp"
#include <boost/bind.hpp>

View file

@ -22,6 +22,7 @@
#include "gettext.hpp"
#include "gui/auxiliary/log.hpp"
#include "gui/widgets/control.hpp"
#include "wml_exception.hpp"
namespace gui2 {
@ -63,7 +64,7 @@ void tbuilder_control::init_control(tcontrol* control) const
control->set_use_tooltip_on_label_overflow(use_tooltip_on_label_overflow);
#ifndef LOW_MEM
control->set_debug_border_mode(debug_border_mode);
control->set_debug_border_color(debug_border_color);
control->set_debug_border_colour(debug_border_color);
#endif
}

View file

@ -18,6 +18,8 @@
#include "gui/auxiliary/window_builder.hpp"
#include "config.hpp"
namespace gui2 {
namespace implementation {

View file

@ -22,6 +22,8 @@
#include <map>
#include <vector>
typedef std::map<std::string, t_string> string_map;
namespace gui2 {
namespace implementation {

View file

@ -17,8 +17,10 @@
#include "gui/auxiliary/window_builder/pane.hpp"
#include "config.hpp"
#include "gettext.hpp"
#include "gui/widgets/pane.hpp"
#include "wml_exception.hpp"
namespace gui2 {

View file

@ -17,6 +17,7 @@
#include "gui/auxiliary/window_builder/viewport.hpp"
#include "config.hpp"
#include "gui/widgets/viewport.hpp"
namespace gui2 {

View file

@ -75,25 +75,25 @@ REGISTER_DIALOG(addon_list)
void taddon_list::collapse(tgrid& grid)
{
find_widget<ttoggle_button>(&grid, "expand", false)
.set_visible(twidget::VISIBLE);
.set_visible(twidget::tvisible::visible);
find_widget<ttoggle_button>(&grid, "collapse", false)
.set_visible(twidget::INVISIBLE);
.set_visible(twidget::tvisible::invisible);
find_widget<tlabel>(&grid, "description", false)
.set_visible(twidget::INVISIBLE);
.set_visible(twidget::tvisible::invisible);
}
void taddon_list::expand(tgrid& grid)
{
find_widget<ttoggle_button>(&grid, "expand", false)
.set_visible(twidget::HIDDEN);
.set_visible(twidget::tvisible::hidden);
find_widget<ttoggle_button>(&grid, "collapse", false)
.set_visible(twidget::VISIBLE);
.set_visible(twidget::tvisible::visible);
find_widget<tlabel>(&grid, "description", false)
.set_visible(twidget::VISIBLE);
.set_visible(twidget::tvisible::visible);
}
void taddon_list::pre_show(CVideo& /*video*/, twindow& window)
@ -291,7 +291,7 @@ void taddon_list::create_campaign(tpane& pane, const config& campaign)
, false);
if(collapse) {
collapse->set_visible(twidget::INVISIBLE);
collapse->set_visible(twidget::tvisible::invisible);
collapse->set_callback_state_change(boost::bind(
&taddon_list::collapse
, this
@ -304,7 +304,7 @@ void taddon_list::create_campaign(tpane& pane, const config& campaign)
, boost::ref(*grid)));
find_widget<tlabel>(grid, "description", false)
.set_visible(twidget::INVISIBLE);
.set_visible(twidget::tvisible::invisible);
}
}

View file

@ -185,7 +185,7 @@ void tcampaign_selection::pre_show(CVideo& /*video*/, twindow& window)
if(ttree_view* tree = find_widget<ttree_view>(
&window, "campaign_tree", false, false)) {
tree->set_visible(twidget::INVISIBLE);
tree->set_visible(twidget::tvisible::invisible);
}
/***** Setup campaign list. *****/
@ -226,7 +226,7 @@ void tcampaign_selection::pre_show(CVideo& /*video*/, twindow& window)
twidget* widget = grid->find("victory", false);
if (widget && !campaign["completed"].to_bool()) {
widget->set_visible(twidget::HIDDEN);
widget->set_visible(twidget::tvisible::hidden);
}
/*** Add detail item ***/

View file

@ -163,7 +163,7 @@ void tdebug_clock::update_time(const bool force)
canvas.set_variable("minute", variant(minute_stamp));
canvas.set_variable("second", variant(second_stamp));
}
clock_->set_dirty();
clock_->set_dirty(true);
}
const std::map<std::string, std::string> tags;

View file

@ -234,9 +234,9 @@ void tgame_load::display_savegame(twindow& window)
find_widget<twidget>(&window, "preview_pane", false);
if(selected_row == -1) {
preview_pane.set_visible(twidget::HIDDEN);
preview_pane.set_visible(twidget::tvisible::hidden);
} else {
preview_pane.set_visible(twidget::VISIBLE);
preview_pane.set_visible(twidget::tvisible::visible);
savegame::save_info& game = games_[selected_row];
filename_ = game.name();

View file

@ -108,10 +108,10 @@ void tsub_player_list::init(gui2::twindow &w, const std::string &id)
void tsub_player_list::show_toggle_callback(gui2::twidget* /*widget*/)
{
if (show_toggle->get_value()) {
list->set_visible(twidget::INVISIBLE);
list->set_visible(twidget::tvisible::invisible);
show_toggle->set_icon_name("lobby/group-folded.png");
} else {
list->set_visible(twidget::VISIBLE);
list->set_visible(twidget::tvisible::visible);
show_toggle->set_icon_name("lobby/group-expanded.png");
}
}
@ -130,13 +130,13 @@ void tsub_player_list::auto_hide()
*/
assert(label);
tree_label->set_label(label->label() + " (0)");
// tree_label->set_visible(twidget::INVISIBLE);
// tree_label->set_visible(twidget::tvisible::invisible);
} else {
assert(label);
std::stringstream ss;
ss << label->label() << " (" << tree->size() << ")";
tree_label->set_label(ss.str());
// tree_label->set_visible(twidget::VISIBLE);
// tree_label->set_visible(twidget::tvisible::visible);
}
}
@ -157,7 +157,7 @@ void tplayer_list::init(gui2::twindow &w)
, true);
find_widget<twidget>(&w, "old_player_list", false)
.set_visible(twidget::INVISIBLE);
.set_visible(twidget::tvisible::invisible);
/**
* @todo This is a hack to fold the items.
@ -519,7 +519,9 @@ void set_visible_if_exists(tgrid* grid, const char* id, bool visible)
{
twidget* w = grid->find(id, false);
if (w) {
w->set_visible(visible ? twidget::VISIBLE : twidget::INVISIBLE);
w->set_visible(visible
? twidget::tvisible::visible
: twidget::tvisible::invisible);
}
}
@ -1147,7 +1149,7 @@ void tlobby_main::increment_waiting_whsipers(const std::string& name)
//label.set_use_markup(true);
//label.set_label(colorize("<" + t->name + ">", "red"));
find_widget<timage>(grid, "pending_messages", false)
.set_visible(twidget::VISIBLE);
.set_visible(twidget::tvisible::visible);
}
}
}
@ -1166,7 +1168,7 @@ void tlobby_main::increment_waiting_messages(const std::string& room)
//label.set_use_markup(true);
//label.set_label(colorize(t->name, "red"));
find_widget<timage>(grid, "pending_messages", false)
.set_visible(twidget::VISIBLE);
.set_visible(twidget::tvisible::visible);
}
}
}
@ -1257,7 +1259,7 @@ void tlobby_main::active_window_changed()
//tlabel& label = grid->get_widget<tlabel>("room", false);
//label.set_label(expected_label);
find_widget<timage>(grid, "pending_messages", false)
.set_visible(twidget::HIDDEN);
.set_visible(twidget::tvisible::hidden);
t.pending_messages = 0;
find_widget<tbutton>(window_, "close_window", false)

View file

@ -112,7 +112,7 @@ void tlobby_player_info::pre_show(CVideo& /*video*/, twindow& window)
if (!preferences::is_authenticated()) {
twidget* aw = window.find("admin", false);
aw->set_visible(twidget::INVISIBLE);
aw->set_visible(twidget::tvisible::invisible);
}
}

View file

@ -113,7 +113,7 @@ void tmessage::set_button_caption(const tbutton_id button,
}
void tmessage::set_button_visible(const tbutton_id button,
const twidget::tvisible visible)
const twidget::tvisible::scoped_enum visible)
{
buttons_[button].visible = visible;
if(buttons_[button].button) {
@ -133,7 +133,7 @@ void tmessage::set_button_retval(const tbutton_id button,
tmessage::tbutton_status::tbutton_status()
: button(NULL)
, caption()
, visible(twidget::INVISIBLE)
, visible(twidget::tvisible::invisible)
, retval(twindow::NONE)
{
}
@ -159,23 +159,23 @@ int show_message(CVideo& video, const std::string& title,
case tmessage::auto_close :
break;
case tmessage::ok_button :
dlg.set_button_visible(tmessage::ok, twidget::VISIBLE);
dlg.set_button_visible(tmessage::ok, twidget::tvisible::visible);
dlg.set_button_caption(tmessage::ok, _("OK"));
break;
case tmessage::close_button :
dlg.set_button_visible(tmessage::ok, twidget::VISIBLE);
dlg.set_button_visible(tmessage::ok, twidget::tvisible::visible);
break;
case tmessage::ok_cancel_buttons :
dlg.set_button_visible(tmessage::ok, twidget::VISIBLE);
dlg.set_button_visible(tmessage::ok, twidget::tvisible::visible);
dlg.set_button_caption(tmessage::ok, _("OK"));
/* FALL DOWN */
case tmessage::cancel_button :
dlg.set_button_visible(tmessage::cancel, twidget::VISIBLE);
dlg.set_button_visible(tmessage::cancel, twidget::tvisible::visible);
break;
case tmessage::yes_no_buttons :
dlg.set_button_visible(tmessage::ok, twidget::VISIBLE);
dlg.set_button_visible(tmessage::ok, twidget::tvisible::visible);
dlg.set_button_caption(tmessage::ok, _("Yes"));
dlg.set_button_visible(tmessage::cancel, twidget::VISIBLE);
dlg.set_button_visible(tmessage::cancel, twidget::tvisible::visible);
dlg.set_button_caption(tmessage::cancel, _("No"));
break;
}

View file

@ -70,7 +70,7 @@ public:
const std::string& caption);
void set_button_visible(const tbutton_id button,
const twidget::tvisible visible);
const twidget::tvisible::scoped_enum visible);
void set_button_retval(const tbutton_id button,
const int retval);
@ -118,7 +118,7 @@ private:
tbutton* button;
std::string caption;
twidget::tvisible visible;
twidget::tvisible::scoped_enum visible;
int retval;
};

View file

@ -108,7 +108,7 @@ void tsimple_item_selector::pre_show(CVideo& /*video*/, twindow& window)
}
if(single_button_) {
button_cancel.set_visible(gui2::twidget::INVISIBLE);
button_cancel.set_visible(gui2::twidget::tvisible::invisible);
}
}

View file

@ -151,7 +151,7 @@ static void animate_logo(
* this possible problem. Of course this is expensive but the logo is
* animated once so the cost is only once.
*/
window.set_dirty();
window.set_dirty(true);
if(percentage == 100) {
remove_timer(timer_id);
@ -385,8 +385,8 @@ void ttitle_screen::pre_show(CVideo& video, twindow& window)
/***** Set the clock button. *****/
tbutton& clock = find_widget<tbutton>(&window, "clock", false);
clock.set_visible(show_debug_clock_button
? twidget::VISIBLE
: twidget::INVISIBLE);
? twidget::tvisible::visible
: twidget::tvisible::invisible);
connect_signal_mouse_left_click(
clock

View file

@ -90,8 +90,8 @@ void twml_message_::pre_show(CVideo& /*video*/, twindow& window)
window.set_click_dismiss(false);
window.set_escape_disabled(true);
} else {
caption.set_visible(twidget::INVISIBLE);
input.set_visible(twidget::INVISIBLE);
caption.set_visible(twidget::tvisible::invisible);
input.set_visible(twidget::tvisible::invisible);
}
// Find the option list related fields.
@ -138,7 +138,7 @@ void twml_message_::pre_show(CVideo& /*video*/, twindow& window)
// click_dismiss has been disabled due to the input.
}
} else {
options.set_visible(twidget::INVISIBLE);
options.set_visible(twidget::tvisible::invisible);
}
window.set_click_dismiss(!has_input_ && option_list_.empty());
}

View file

@ -25,12 +25,12 @@
namespace gui2 {
void tcontainer_::layout_init(const bool full_initialization)
void tcontainer_::layout_initialise(const bool full_initialisation)
{
// Inherited.
tcontrol::layout_init(full_initialization);
tcontrol::layout_initialise(full_initialisation);
grid_.layout_init(full_initialization);
grid_.layout_initialise(full_initialisation);
}
void tcontainer_::reduce_width(const unsigned maximum_width)
@ -108,18 +108,18 @@ void tcontainer_::set_origin(const tpoint& origin)
grid_.set_origin(client_position);
}
void tcontainer_::set_visible_area(const SDL_Rect& area)
void tcontainer_::set_visible_rectangle(const SDL_Rect& rectangle)
{
// Inherited.
twidget::set_visible_area(area);
twidget::set_visible_rectangle(rectangle);
grid_.set_visible_area(area);
grid_.set_visible_rectangle(rectangle);
}
void tcontainer_::impl_draw_children(surface& frame_buffer)
{
assert(get_visible() == twidget::VISIBLE
&& grid_.get_visible() == twidget::VISIBLE);
assert(get_visible() == twidget::tvisible::visible
&& grid_.get_visible() == twidget::tvisible::visible);
grid_.draw_children(frame_buffer);
}
@ -129,8 +129,8 @@ void tcontainer_::impl_draw_children(
, int x_offset
, int y_offset)
{
assert(get_visible() == twidget::VISIBLE
&& grid_.get_visible() == twidget::VISIBLE);
assert(get_visible() == twidget::tvisible::visible
&& grid_.get_visible() == twidget::tvisible::visible);
grid_.draw_children(frame_buffer, x_offset, y_offset);
}
@ -157,7 +157,7 @@ void tcontainer_::set_active(const bool active)
return;
}
set_dirty();
set_dirty(true);
set_self_active(active);
}

View file

@ -45,12 +45,12 @@ public:
*
* The client area is the area available for widgets.
*/
virtual SDL_Rect get_client_rect() const { return get_rect(); }
virtual SDL_Rect get_client_rect() const { return get_rectangle(); }
/***** ***** ***** ***** layout functions ***** ***** ***** *****/
/** Inherited from tcontrol. */
void layout_init(const bool full_initialization);
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/**
* Tries to reduce the width of a container.
@ -102,8 +102,8 @@ public:
/** Inherited from twidget. */
void set_origin(const tpoint& origin);
/** Inherited from twidget. */
void set_visible_area(const SDL_Rect& area);
/** See @ref twidget::set_visible_rectangle. */
virtual void set_visible_rectangle(const SDL_Rect& rectangle) OVERRIDE;
/** Inherited from twidget. */
void impl_draw_children(surface& frame_buffer);

View file

@ -152,7 +152,7 @@ void tcontrol::set_members(const string_map& data)
bool tcontrol::disable_click_dismiss() const
{
return get_visible() == twidget::VISIBLE && get_active();
return get_visible() == twidget::tvisible::visible && get_active();
}
iterator::twalker_* tcontrol::create_walker()
@ -195,12 +195,12 @@ unsigned tcontrol::get_characters_per_line() const
return 0;
}
void tcontrol::layout_init(const bool full_initialization)
void tcontrol::layout_initialise(const bool full_initialisation)
{
// Inherited.
twidget::layout_init(full_initialization);
twidget::layout_initialise(full_initialisation);
if(full_initialization) {
if(full_initialisation) {
shrunken_ = false;
}
}
@ -310,7 +310,7 @@ void tcontrol::set_label(const t_string& label)
label_ = label;
set_layout_size(tpoint(0, 0));
update_canvas();
set_dirty();
set_dirty(true);
}
void tcontrol::set_use_markup(bool use_markup)
@ -321,7 +321,7 @@ void tcontrol::set_use_markup(bool use_markup)
use_markup_ = use_markup;
update_canvas();
set_dirty();
set_dirty(true);
}
void tcontrol::set_text_alignment(const PangoAlignment text_alignment)
@ -332,7 +332,7 @@ void tcontrol::set_text_alignment(const PangoAlignment text_alignment)
text_alignment_ = text_alignment;
update_canvas();
set_dirty();
set_dirty(true);
}
void tcontrol::update_canvas()
@ -376,10 +376,10 @@ void tcontrol::impl_draw_background(surface& frame_buffer)
{
DBG_GUI_D << LOG_HEADER
<< " label '" << debug_truncate(label_)
<< "' size " << get_rect()
<< "' size " << get_rectangle()
<< ".\n";
canvas(get_state()).blit(frame_buffer, get_rect());
canvas(get_state()).blit(frame_buffer, get_rectangle());
}
void tcontrol::impl_draw_background(
@ -389,7 +389,7 @@ void tcontrol::impl_draw_background(
{
DBG_GUI_D << LOG_HEADER
<< " label '" << debug_truncate(label_)
<< "' size " << get_rect()
<< "' size " << get_rectangle()
<< ".\n";
canvas(get_state()).blit(

View file

@ -20,6 +20,8 @@
#include "gui/widgets/widget.hpp"
#include "../../text.hpp"
typedef std::map<std::string, t_string> string_map;
namespace gui2 {
namespace implementation {
@ -140,10 +142,13 @@ public:
*/
virtual unsigned get_characters_per_line() const;
/** Inherited from twidget. */
/** @todo Also handle the tooltip state if shrunken_ &&
* use_tooltip_on_label_overflow_. */
void layout_init(const bool full_initialization);
/**
* See @ref twidget::layout_initialise.
*
* @todo Also handle the tooltip state.
* Handle if shrunken_ && use_tooltip_on_label_overflow_.
*/
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/** Inherited from twidget. */
void request_reduce_width(const unsigned maximum_width);

View file

@ -331,7 +331,7 @@ void tdebug_layout_graph::widget_generate_state_info(
<< "drawing action=" << control->get_drawing_action() << '\n'
<< "</td></tr>\n"
<< "<tr><td>\n"
<< "clip rect=" << control->clip_rect_ << '\n'
<< "clip rect=" << control->clipping_rectangle_ << '\n'
<< "</td></tr>\n"
<< "<tr><td>\n"
<< "use tooltip on label overflow="

View file

@ -19,6 +19,7 @@
#include "gui/widgets/window.hpp"
#include "utils/foreach.tpp"
#include "wml_exception.hpp"
namespace gui2 {
@ -120,7 +121,9 @@ tpoint thorizontal_list::calculate_best_size() const
for(size_t i = 0; i < get_item_count(); ++i) {
const tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -150,7 +153,9 @@ void thorizontal_list::place(const tpoint& origin, const tpoint& size)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -173,7 +178,9 @@ void thorizontal_list::set_origin(const tpoint& origin)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -182,7 +189,7 @@ void thorizontal_list::set_origin(const tpoint& origin)
}
}
void thorizontal_list::set_visible_area(const SDL_Rect& area)
void thorizontal_list::set_visible_rectangle(const SDL_Rect& rectangle)
{
/*
* Note for most implementations this function could work only for the
@ -193,7 +200,7 @@ void thorizontal_list::set_visible_area(const SDL_Rect& area)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
grid.set_visible_area(area);
grid.set_visible_rectangle(rectangle);
}
}
@ -205,7 +212,9 @@ twidget* thorizontal_list::find_at(
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -227,7 +236,9 @@ const twidget* thorizontal_list::find_at(const tpoint& coordinate,
for(size_t i = 0; i < get_item_count(); ++i) {
const tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -275,7 +286,7 @@ void thorizontal_list::handle_key_right_arrow(
for(size_t i = get_selected_item() + 1; i < get_item_count(); ++i) {
if(item(i).get_visible() == twidget::INVISIBLE
if(item(i).get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
@ -313,7 +324,9 @@ tpoint tvertical_list::calculate_best_size() const
for(size_t i = 0; i < get_item_count(); ++i) {
const tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -343,7 +356,9 @@ void tvertical_list::place(const tpoint& origin, const tpoint& size)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -366,7 +381,9 @@ void tvertical_list::set_origin(const tpoint& origin)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -375,7 +392,7 @@ void tvertical_list::set_origin(const tpoint& origin)
}
}
void tvertical_list::set_visible_area(const SDL_Rect& area)
void tvertical_list::set_visible_rectangle(const SDL_Rect& rectangle)
{
/*
* Note for most implementations this function could work only for the
@ -386,7 +403,7 @@ void tvertical_list::set_visible_area(const SDL_Rect& area)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
grid.set_visible_area(area);
grid.set_visible_rectangle(rectangle);
}
}
@ -398,7 +415,9 @@ twidget* tvertical_list::find_at(
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -421,7 +440,9 @@ const twidget* tvertical_list::find_at(const tpoint& coordinate,
for(size_t i = 0; i < get_item_count(); ++i) {
const tgrid& grid = item(i);
if(grid.get_visible() == twidget::INVISIBLE || !get_item_shown(i)) {
if(grid.get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
}
@ -467,7 +488,7 @@ void tvertical_list::handle_key_down_arrow(SDLMod /*modifier*/, bool& handled)
for(size_t i = get_selected_item() + 1; i < get_item_count(); ++i) {
if(item(i).get_visible() == twidget::INVISIBLE
if(item(i).get_visible() == twidget::tvisible::invisible
|| !get_item_shown(i)) {
continue;
@ -606,10 +627,10 @@ const twidget* tindependent::find(
return NULL;
}
void tindependent::set_visible_area(const SDL_Rect& area)
void tindependent::set_visible_rectangle(const SDL_Rect& rectangle)
{
/*
* Set the visible area for every item.
* Set the visible rectangle for every item.
*
* @todo evaluate whether setting it only for the visible item is better
* and what the consequences are.
@ -617,7 +638,7 @@ void tindependent::set_visible_area(const SDL_Rect& area)
for(size_t i = 0; i < get_item_count(); ++i) {
tgrid& grid = item(i);
grid.set_visible_area(area);
grid.set_visible_rectangle(rectangle);
}
}

View file

@ -21,6 +21,8 @@
#include <boost/intrusive_ptr.hpp>
typedef std::map< std::string, t_string > string_map;
namespace gui2 {
struct tbuilder_grid;
@ -236,8 +238,8 @@ public:
* become pure virtuals.
*/
/** Inherited from twidget. */
virtual void layout_init(const bool full_initialization) = 0;
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE = 0;
/** Inherited from twidget. */
virtual void request_reduce_width(const unsigned maximum_width) = 0;
@ -254,8 +256,8 @@ public:
/** Inherited from twidget. */
virtual void set_origin(const tpoint& origin) = 0;
/** Inherited from twidget. */
void set_visible_area(const SDL_Rect& area) = 0;
/** See @ref twidget::set_visible_rectangle. */
virtual void set_visible_rectangle(const SDL_Rect& rectangle) OVERRIDE = 0;
/** Inherited from twidget. */
virtual void impl_draw_children(surface& frame_buffer) = 0;

View file

@ -218,11 +218,11 @@ struct thorizontal_list
void set_origin(const tpoint& origin);
/**
* Sets the visible area of the generator.
* Sets the visible rectangle of the generator.
*
* @param area The visible area.
* @param rectangle The visible rectangle.
*/
void set_visible_area(const SDL_Rect& area);
void set_visible_rectangle(const SDL_Rect& rectangle);
/** Inherited from tgenerator_. */
twidget* find_at(const tpoint& coordinate, const bool must_be_active);
@ -288,8 +288,8 @@ struct tvertical_list
/** See thorizontal_list::set_origin(). */
void set_origin(const tpoint& origin);
/** See thorizontal_list::set_visible_area(). */
void set_visible_area(const SDL_Rect& area);
/** See @ref thorizontal_list::set_visible_rectangle(). */
void set_visible_rectangle(const SDL_Rect& rectangle);
/** See thorizontal_list::find_at(). */
twidget* find_at(const tpoint& coordinate, const bool must_be_active);
@ -364,8 +364,8 @@ struct tmatrix
void set_origin(const tpoint& /*origin*/)
{ ERROR_LOG(false); }
/** See thorizontal_list::set_visible_area(). */
void set_visible_area(const SDL_Rect& /*area*/)
/** See @ref thorizontal_list::set_visible_rectangle(). */
void set_visible_rectangle(const SDL_Rect& /*rectangle*/ )
{ ERROR_LOG(false); }
/** See thorizontal_list::find_at(). */
@ -425,8 +425,8 @@ struct tindependent
/** See thorizontal_list::set_origin(). */
void set_origin(const tpoint& origin);
/** See thorizontal_list::set_visible_area(). */
void set_visible_area(const SDL_Rect& area);
/** See @ref thorizontal_list::set_visible_rectangle(). */
void set_visible_rectangle(const SDL_Rect& rectangle);
/** See thorizontal_list::find_at(). */
twidget* find_at(const tpoint& coordinate, const bool must_be_active);
@ -503,7 +503,9 @@ struct tshow
{
void select(tgrid& grid, const bool show)
{
grid.set_visible(show ? twidget::VISIBLE : twidget::HIDDEN);
grid.set_visible(show
? twidget::tvisible::visible
: twidget::tvisible::hidden);
}
/**
@ -624,8 +626,8 @@ public:
/*** Set the proper visible state. ***/
items_[index]->shown = show;
items_[index]->grid.set_visible(show
? twidget::VISIBLE
: twidget::INVISIBLE);
? twidget::tvisible::visible
: twidget::tvisible::invisible);
/*** Update the selection. ***/
minimum_selection::set_item_shown(index, show);
@ -747,12 +749,14 @@ public:
impl_create_items(index, list_builder, data, callback);
}
/** Inherited from tgenerator_. */
void layout_init(const bool full_initialization)
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE
{
FOREACH(AUTO item, items_) {
if(item->grid.get_visible() != twidget::INVISIBLE && item->shown) {
item->grid.layout_init(full_initialization);
if(item->grid.get_visible() != twidget::tvisible::invisible
&& item->shown) {
item->grid.layout_initialise(full_initialisation);
}
}
}
@ -793,19 +797,21 @@ public:
placement::set_origin(origin);
}
/** Inherited from tgenerator_. */
void set_visible_area(const SDL_Rect& area)
/** See @ref twidget::set_visible_rectangle. */
virtual void set_visible_rectangle(const SDL_Rect& rectangle) OVERRIDE
{
placement::set_visible_area(area);
placement::set_visible_rectangle(rectangle);
}
/** Inherited from tgenerator_. */
void impl_draw_children(surface& frame_buffer)
{
assert(this->get_visible() == twidget::VISIBLE);
assert(this->get_visible() == twidget::tvisible::visible);
FOREACH(AUTO item, items_) {
if(item->grid.get_visible() == twidget::VISIBLE && item->shown) {
if(item->grid.get_visible() == twidget::tvisible::visible
&& item->shown) {
item->grid.draw_children(frame_buffer);
}
}
@ -814,10 +820,12 @@ public:
/** Inherited from tgenerator_. */
void impl_draw_children(surface& frame_buffer, int x_offset, int y_offset)
{
assert(this->get_visible() == twidget::VISIBLE);
assert(this->get_visible() == twidget::tvisible::visible);
FOREACH(AUTO item, items_) {
if(item->grid.get_visible() == twidget::VISIBLE && item->shown) {
if(item->grid.get_visible() == twidget::tvisible::visible
&& item->shown) {
item->grid.draw_children(frame_buffer, x_offset, y_offset);
}
}

View file

@ -182,15 +182,15 @@ void tgrid::set_active(const bool active)
}
}
void tgrid::layout_init(const bool full_initialization)
void tgrid::layout_initialise(const bool full_initialisation)
{
// Inherited.
twidget::layout_init(full_initialization);
twidget::layout_initialise(full_initialisation);
// Clear child caches.
FOREACH(AUTO& child, children_) {
child.layout_init(full_initialization);
child.layout_initialise(full_initialisation);
}
}
@ -564,17 +564,17 @@ void tgrid::set_origin(const tpoint& origin)
}
}
void tgrid::set_visible_area(const SDL_Rect& area)
void tgrid::set_visible_rectangle(const SDL_Rect& rectangle)
{
// Inherited.
twidget::set_visible_area(area);
twidget::set_visible_rectangle(rectangle);
FOREACH(AUTO& child, children_) {
twidget* widget = child.widget();
assert(widget);
widget->set_visible_area(area);
widget->set_visible_rectangle(rectangle);
}
}
@ -643,7 +643,7 @@ bool tgrid::has_widget(const twidget* widget) const
bool tgrid::disable_click_dismiss() const
{
if(get_visible() != twidget::VISIBLE) {
if(get_visible() != twidget::tvisible::visible) {
return false;
}
@ -711,7 +711,7 @@ tpoint tgrid::tchild::get_best_size() const
return border_space();
}
if(widget_->get_visible() == twidget::INVISIBLE) {
if(widget_->get_visible() == twidget::tvisible::invisible) {
DBG_GUI_L << LOG_CHILD_HEADER
<< " has widget " << true
<< " widget visible " << false
@ -733,7 +733,7 @@ tpoint tgrid::tchild::get_best_size() const
void tgrid::tchild::place(tpoint origin, tpoint size)
{
assert(widget());
if(widget()->get_visible() == twidget::INVISIBLE) {
if(widget()->get_visible() == twidget::tvisible::invisible) {
return;
}
@ -871,12 +871,12 @@ void tgrid::tchild::place(tpoint origin, tpoint size)
widget()->place(widget_orig, widget_size);
}
void tgrid::tchild::layout_init(const bool full_initialization)
void tgrid::tchild::layout_initialise(const bool full_initialisation)
{
assert(widget_);
if(widget_->get_visible() != twidget::INVISIBLE) {
widget_->layout_init(full_initialization);
if(widget_->get_visible() != twidget::tvisible::invisible) {
widget_->layout_initialise(full_initialisation);
}
}
@ -939,7 +939,7 @@ void tgrid::impl_draw_children(surface& frame_buffer)
*/
SDL_PumpEvents();
assert(get_visible() == twidget::VISIBLE);
assert(get_visible() == twidget::tvisible::visible);
set_dirty(false);
FOREACH(AUTO& child, children_) {
@ -947,11 +947,11 @@ void tgrid::impl_draw_children(surface& frame_buffer)
twidget* widget = child.widget();
assert(widget);
if(widget->get_visible() != twidget::VISIBLE) {
if(widget->get_visible() != twidget::tvisible::visible) {
continue;
}
if(widget->get_drawing_action() == twidget::NOT_DRAWN) {
if(widget->get_drawing_action() == twidget::tredraw_action::none) {
continue;
}
@ -978,7 +978,7 @@ void tgrid::impl_draw_children(
*/
SDL_PumpEvents();
assert(get_visible() == twidget::VISIBLE);
assert(get_visible() == twidget::tvisible::visible);
set_dirty(false);
FOREACH(AUTO& child, children_) {
@ -986,11 +986,11 @@ void tgrid::impl_draw_children(
twidget* widget = child.widget();
assert(widget);
if(widget->get_visible() != twidget::VISIBLE) {
if(widget->get_visible() != twidget::tvisible::visible) {
continue;
}
if(widget->get_drawing_action() == twidget::NOT_DRAWN) {
if(widget->get_drawing_action() == twidget::tredraw_action::none) {
continue;
}
@ -1060,7 +1060,7 @@ void tgrid_implementation::cell_request_reduce_height(
{
assert(child.widget_);
if(child.widget_->get_visible() == twidget::INVISIBLE) {
if(child.widget_->get_visible() == twidget::tvisible::invisible) {
return;
}
@ -1073,7 +1073,7 @@ void tgrid_implementation::cell_request_reduce_width(
{
assert(child.widget_);
if(child.widget_->get_visible() == twidget::INVISIBLE) {
if(child.widget_->get_visible() == twidget::tvisible::invisible) {
return;
}

View file

@ -83,7 +83,7 @@ public:
{
assert(row < row_grow_factor_.size());
row_grow_factor_[row] = factor;
set_dirty();
set_dirty(true);
}
/**
@ -98,7 +98,7 @@ public:
{
assert(column< col_grow_factor_.size());
col_grow_factor_[column] = factor;
set_dirty();
set_dirty(true);
}
/***** ***** ***** ***** CHILD MANIPULATION ***** ***** ***** *****/
@ -179,8 +179,8 @@ public:
/***** ***** ***** ***** layout functions ***** ***** ***** *****/
/** Inherited from twidget. */
void layout_init(const bool full_initialization);
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/**
* Tries to reduce the width of a container.
@ -240,8 +240,8 @@ public:
/** Inherited from twidget. */
void set_origin(const tpoint& origin);
/** Inherited from twidget. */
void set_visible_area(const SDL_Rect& area);
/** See @ref twidget::set_visible_rectangle. */
virtual void set_visible_rectangle(const SDL_Rect& rectangle) OVERRIDE;
/** Inherited from twidget. */
void layout_children();
@ -315,8 +315,8 @@ private:
*/
void place(tpoint origin, tpoint size);
/** Forwards layout_init() to the cell. */
void layout_init(const bool full_initialization);
/** Forwards @ref tgrid::layout_initialise to the cell. */
void layout_initialise(const bool full_initialisation);
/** Returns the can_wrap for the cell. */
bool can_wrap() const

View file

@ -156,7 +156,7 @@ void tlist::remove_row(const unsigned row, unsigned count)
unsigned height_reduced = 0;
for(; count; --count) {
if(generator_->item(row).get_visible() != INVISIBLE) {
if(generator_->item(row).get_visible() != tvisible::invisible) {
height_reduced += generator_->item(row).get_height();
}
generator_->delete_item(row);
@ -208,8 +208,8 @@ void tlist::set_row_shown(const unsigned row, const bool shown)
if(resize_needed) {
window->invalidate_layout();
} else {
// grid().set_visible_area(content_visible_area());
set_dirty();
// grid().set_visible_rectangle(content_visible_rectangle());
set_dirty(true);
}
if(selected_row != get_selected_row()) {
@ -242,8 +242,8 @@ void tlist::set_row_shown(const std::vector<bool>& shown)
if(resize_needed) {
window->invalidate_layout();
} else {
// content_grid_->set_visible_area(content_visible_area());
set_dirty();
// content_grid_->set_visible_rectangle(content_visible_rectangle());
set_dirty(true);
}
if(selected_row != get_selected_row()) {
@ -297,7 +297,7 @@ void tlist::place(const tpoint& origin, const tpoint& size)
if(selected_item != -1) {
/*
const SDL_Rect& visible = content_visible_area();
SDL_Rect rect = generator_->item(selected_item).get_rect();
SDL_Rect rect = generator_->item(selected_item).get_rectangle();
rect.x = visible.x;
rect.w = visible.w;
@ -330,7 +330,7 @@ void tlist::resize_content(
need_layout_ = true;
// If the content grows assume it "overwrites" the old content.
if(width_modification < 0 || height_modification < 0) {
set_dirty();
set_dirty(true);
}
DBG_GUI_L << LOG_HEADER << " succeeded.\n";
} else {
@ -352,16 +352,16 @@ void tlist::init()
* So make them invisible for now.
*/
tgrid* g = find_widget<tgrid>(&grid(), "_header_grid", false, false);
if(g) g->set_visible(twidget::INVISIBLE);
if(g) g->set_visible(twidget::tvisible::invisible);
g = find_widget<tgrid>(&grid(), "_footer_grid", false, false);
if(g) g->set_visible(twidget::INVISIBLE);
if(g) g->set_visible(twidget::tvisible::invisible);
g = find_widget<tgrid>(&grid(), "_vertical_scrollbar_grid", false, false);
if(g) g->set_visible(twidget::INVISIBLE);
if(g) g->set_visible(twidget::tvisible::invisible);
g = find_widget<tgrid>(&grid(), "_horizontal_scrollbar_grid", false, false);
if(g) g->set_visible(twidget::INVISIBLE);
if(g) g->set_visible(twidget::tvisible::invisible);
}
@ -371,10 +371,10 @@ void tlist::layout_children(const bool force)
grid().place(grid().get_origin(), grid().get_size());
/*
grid().set_visible_area(content_visible_area_);
grid().set_visible_rectangle(content_visible_area_);
*/
need_layout_ = false;
set_dirty();
set_dirty(true);
}
}

View file

@ -90,7 +90,7 @@ void tlistbox::remove_row(const unsigned row, unsigned count)
int height_reduced = 0;
for(; count; --count) {
if(generator_->item(row).get_visible() != INVISIBLE) {
if(generator_->item(row).get_visible() != tvisible::invisible) {
height_reduced += generator_->item(row).get_height();
}
generator_->delete_item(row);
@ -142,8 +142,8 @@ void tlistbox::set_row_shown(const unsigned row, const bool shown)
if(resize_needed) {
window->invalidate_layout();
} else {
content_grid_->set_visible_area(content_visible_area());
set_dirty();
content_grid_->set_visible_rectangle(content_visible_area());
set_dirty(true);
}
if(selected_row != get_selected_row() && callback_value_changed_) {
@ -176,8 +176,8 @@ void tlistbox::set_row_shown(const std::vector<bool>& shown)
if(resize_needed) {
window->invalidate_layout();
} else {
content_grid_->set_visible_area(content_visible_area());
set_dirty();
content_grid_->set_visible_rectangle(content_visible_area());
set_dirty(true);
}
if(selected_row != get_selected_row() && callback_value_changed_) {
@ -237,7 +237,7 @@ void tlistbox::list_item_clicked(twidget* caller)
bool tlistbox::update_content_size()
{
if(get_visible() == twidget::INVISIBLE) {
if(get_visible() == twidget::tvisible::invisible) {
return true;
}
@ -246,8 +246,8 @@ bool tlistbox::update_content_size()
}
if(content_resize_request(true)) {
content_grid_->set_visible_area(content_visible_area());
set_dirty();
content_grid_->set_visible_rectangle(content_visible_area());
set_dirty(true);
return true;
}
@ -270,7 +270,7 @@ void tlistbox::place(const tpoint& origin, const tpoint& size)
const int selected_item = generator_->get_selected_item();
if(selected_item != -1) {
const SDL_Rect& visible = content_visible_area();
SDL_Rect rect = generator_->item(selected_item).get_rect();
SDL_Rect rect = generator_->item(selected_item).get_rectangle();
rect.x = visible.x;
rect.w = visible.w;
@ -302,7 +302,7 @@ void tlistbox::resize_content(
need_layout_ = true;
// If the content grows assume it "overwrites" the old content.
if(width_modification < 0 || height_modification < 0) {
set_dirty();
set_dirty(true);
}
DBG_GUI_L << LOG_HEADER << " succeeded.\n";
} else {
@ -337,7 +337,7 @@ void tlistbox::handle_key_up_arrow(SDLMod modifier, bool& handled)
// horizontal scrollbar position.
const SDL_Rect& visible = content_visible_area();
SDL_Rect rect = generator_->item(
generator_->get_selected_item()).get_rect();
generator_->get_selected_item()).get_rectangle();
rect.x = visible.x;
rect.w = visible.w;
@ -364,7 +364,7 @@ void tlistbox::handle_key_down_arrow(SDLMod modifier, bool& handled)
// horizontal scrollbar position.
const SDL_Rect& visible = content_visible_area();
SDL_Rect rect = generator_->item(
generator_->get_selected_item()).get_rect();
generator_->get_selected_item()).get_rectangle();
rect.x = visible.x;
rect.w = visible.w;
@ -392,7 +392,7 @@ void tlistbox::handle_key_left_arrow(SDLMod modifier, bool& handled)
// vertical scrollbar position.
const SDL_Rect& visible = content_visible_area();
SDL_Rect rect = generator_->item(
generator_->get_selected_item()).get_rect();
generator_->get_selected_item()).get_rectangle();
rect.y = visible.y;
rect.h = visible.h;
@ -419,7 +419,7 @@ void tlistbox::handle_key_right_arrow(SDLMod modifier, bool& handled)
// vertical scrollbar position.
const SDL_Rect& visible = content_visible_area();
SDL_Rect rect = generator_->item(
generator_->get_selected_item()).get_rect();
generator_->get_selected_item()).get_rectangle();
rect.y = visible.y;
rect.h = visible.h;
@ -511,10 +511,10 @@ void tlistbox::layout_children(const bool force)
content_grid()->get_origin()
, content_grid()->get_size());
content_grid()->set_visible_area(content_visible_area_);
content_grid()->set_visible_rectangle(content_visible_area_);
need_layout_ = false;
set_dirty();
set_dirty(true);
}
}

View file

@ -108,9 +108,9 @@ void tmatrix::place(const tpoint& origin, const tpoint& size)
content_.place(origin, size);
}
void tmatrix::layout_init(const bool full_initialization)
void tmatrix::layout_initialise(const bool full_initialisation)
{
content_.layout_init(full_initialization);
content_.layout_initialise(full_initialisation);
}
void tmatrix::impl_draw_children(

View file

@ -114,8 +114,8 @@ public:
/** Inherited from twidget. */
void place(const tpoint& origin, const tpoint& size);
/** Inherited from twidget. */
void layout_init(const bool full_initialization);
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/** Inherited from twidget. */
void impl_draw_children(surface& frame_buffer, int x_offset, int y_offset);

View file

@ -217,14 +217,14 @@ void tminimap::impl_draw_background(surface& frame_buffer)
assert(terrain_);
DBG_GUI_D << LOG_HEADER
<< " size " << get_rect()
<< " size " << get_rectangle()
<< ".\n";
if(map_data_.empty()) {
return;
}
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
assert(rect.w > 0 && rect.h > 0);
const ::surface surf = get_image(rect.w, rect.h);

View file

@ -55,7 +55,7 @@ public:
/***** ***** ***** setters / getters for members ***** ****** *****/
void set_map_data(const std::string& map_data)
{ if(map_data != map_data_) { map_data_ = map_data; set_dirty(); } }
{ if(map_data != map_data_) { map_data_ = map_data; set_dirty(true); } }
std::string get_map_data() const { return map_data_; }

View file

@ -66,7 +66,7 @@ struct tpane_implementation
typedef typename utils::tconst_clone<tpane::titem, W>::reference thack;
BOOST_FOREACH(thack item, pane->items_) {
if(item.grid->get_visible() == twidget::INVISIBLE) {
if(item.grid->get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -74,7 +74,7 @@ struct tpane_implementation
* If the adjusted coordinate is in the item's grid let the grid
* resolve the coordinate.
*/
const SDL_Rect rect = item.grid->get_rect();
const SDL_Rect rect = item.grid->get_rectangle();
if(
coordinate.x >= rect.x
&& coordinate.y >= rect.y
@ -190,15 +190,15 @@ void tpane::place(const tpoint& origin, const tpoint& size)
place_children();
}
void tpane::layout_init(const bool full_initialization)
void tpane::layout_initialise(const bool full_initialisation)
{
DBG_GUI_D << LOG_HEADER << '\n';
twidget::layout_init(full_initialization);
twidget::layout_initialise(full_initialisation);
FOREACH(AUTO& item, items_) {
if(item.grid->get_visible() != twidget::INVISIBLE) {
item.grid->layout_init(full_initialization);
if(item.grid->get_visible() != twidget::tvisible::invisible) {
item.grid->layout_initialise(full_initialisation);
}
}
}
@ -211,7 +211,7 @@ void tpane::impl_draw_children(
DBG_GUI_D << LOG_HEADER << '\n';
FOREACH(AUTO& item, items_) {
if(item.grid->get_visible() != twidget::INVISIBLE) {
if(item.grid->get_visible() != twidget::tvisible::invisible) {
item.grid->draw_children(frame_buffer, x_offset, y_offset);
}
}
@ -238,8 +238,8 @@ void tpane::filter(const tfilter_functor& filter_functor)
FOREACH(AUTO& item, items_) {
item.grid->set_visible(
filter_functor(item)
? twidget::VISIBLE
: twidget::INVISIBLE);
? twidget::tvisible::visible
: twidget::tvisible::invisible);
}
set_origin_children();
@ -303,7 +303,7 @@ void tpane::place_children()
prepare_placement();
unsigned index = 0;
FOREACH(AUTO& item, items_) {
if(item.grid->get_visible() == twidget::INVISIBLE) {
if(item.grid->get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -318,7 +318,7 @@ void tpane::set_origin_children()
prepare_placement();
unsigned index = 0;
FOREACH(AUTO& item, items_) {
if(item.grid->get_visible() == twidget::INVISIBLE) {
if(item.grid->get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -333,7 +333,7 @@ void tpane::place_or_set_origin_children()
prepare_placement();
unsigned index = 0;
FOREACH(AUTO& item, items_) {
if(item.grid->get_visible() == twidget::INVISIBLE) {
if(item.grid->get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -353,7 +353,7 @@ void tpane::prepare_placement() const
placer_->initialise();
FOREACH(const AUTO& item, items_) {
if(item.grid->get_visible() == twidget::INVISIBLE) {
if(item.grid->get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -372,7 +372,7 @@ void tpane::signal_handler_request_placement(
if(widget) {
FOREACH(AUTO& item, items_) {
if(item.grid->has_widget(widget)) {
if(item.grid->get_visible() != twidget::INVISIBLE) {
if(item.grid->get_visible() != twidget::tvisible::invisible) {
/*
* This time we call init layout but also the linked widget
@ -380,7 +380,7 @@ void tpane::signal_handler_request_placement(
* addon_list. This code can use some more tuning,
* polishing and testing.
*/
item.grid->layout_init(false);
item.grid->layout_initialise(false);
get_window()->layout_linked_widgets();
/*

View file

@ -24,6 +24,8 @@
#include <list>
typedef std::map< std::string, t_string > string_map;
namespace gui2 {
namespace implementation {
@ -79,8 +81,8 @@ public:
/** Inherited from twidget. */
void place(const tpoint& origin, const tpoint& size);
/** Inherited from twidget. */
void layout_init(const bool full_initialization);
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/** Inherited from twidget. */
void impl_draw_children(surface& frame_buffer, int x_offset, int y_offset);

View file

@ -38,7 +38,7 @@ SDL_Rect tpanel::get_client_rect() const
boost::dynamic_pointer_cast<const tpanel_definition::tresolution>(config());
assert(conf);
SDL_Rect result = get_rect();
SDL_Rect result = get_rectangle();
result.x += conf->left_border;
result.y += conf->top_border;
result.w -= conf->left_border + conf->right_border;
@ -50,10 +50,10 @@ SDL_Rect tpanel::get_client_rect() const
void tpanel::impl_draw_background(surface& frame_buffer)
{
DBG_GUI_D << LOG_HEADER
<< " size " << get_rect()
<< " size " << get_rectangle()
<< ".\n";
canvas(0).blit(frame_buffer, get_rect());
canvas(0).blit(frame_buffer, get_rectangle());
}
void tpanel::impl_draw_background(
@ -62,7 +62,7 @@ void tpanel::impl_draw_background(
, int y_offset)
{
DBG_GUI_D << LOG_HEADER
<< " size " << get_rect()
<< " size " << get_rectangle()
<< ".\n";
canvas(0).blit(
@ -72,7 +72,7 @@ void tpanel::impl_draw_background(
void tpanel::impl_draw_foreground(surface& frame_buffer)
{
canvas(1).blit(frame_buffer, get_rect());
canvas(1).blit(frame_buffer, get_rectangle());
}
void tpanel::impl_draw_foreground(

View file

@ -129,7 +129,7 @@ void tpassword_box::post_function() {
// Why do the selection functions not update
// the canvas?
update_canvas();
set_dirty();
set_dirty(true);
}
const std::string& tpassword_box::get_control_type() const

View file

@ -44,7 +44,7 @@ void tprogress_bar::set_percentage(const unsigned percentage)
c.set_variable("percentage", variant(percentage));
}
set_dirty();
set_dirty(true);
}
}

View file

@ -136,7 +136,7 @@ void tscrollbar_::update_canvas() {
tmp.set_variable("positioner_offset", variant(positioner_offset_));
tmp.set_variable("positioner_length", variant(positioner_length_));
}
set_dirty();
set_dirty(true);
}
void tscrollbar_::set_state(const tstate state)

View file

@ -115,44 +115,50 @@ tscrollbar_container::tscrollbar_container(const unsigned canvas_count)
, event::tdispatcher::back_post_child);
}
void tscrollbar_container::layout_init(const bool full_initialization)
void tscrollbar_container::layout_initialise(const bool full_initialisation)
{
// Inherited.
tcontainer_::layout_init(full_initialization);
tcontainer_::layout_initialise(full_initialisation);
if(full_initialization) {
if(full_initialisation) {
assert(vertical_scrollbar_grid_);
switch(vertical_scrollbar_mode_) {
case always_visible :
vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
vertical_scrollbar_grid_
->set_visible(twidget::tvisible::visible);
break;
case auto_visible :
vertical_scrollbar_grid_->set_visible(twidget::HIDDEN);
vertical_scrollbar_grid_
->set_visible(twidget::tvisible::hidden);
break;
default :
vertical_scrollbar_grid_->set_visible(twidget::INVISIBLE);
vertical_scrollbar_grid_
->set_visible(twidget::tvisible::invisible);
}
assert(horizontal_scrollbar_grid_);
switch(horizontal_scrollbar_mode_) {
case always_visible :
horizontal_scrollbar_grid_->set_visible(twidget::VISIBLE);
horizontal_scrollbar_grid_
->set_visible(twidget::tvisible::visible);
break;
case auto_visible :
horizontal_scrollbar_grid_->set_visible(twidget::HIDDEN);
horizontal_scrollbar_grid_
->set_visible(twidget::tvisible::hidden);
break;
default :
horizontal_scrollbar_grid_->set_visible(twidget::INVISIBLE);
horizontal_scrollbar_grid_
->set_visible(twidget::tvisible::invisible);
}
}
assert(content_grid_);
content_grid_->layout_init(full_initialization);
content_grid_->layout_initialise(full_initialisation);
}
void tscrollbar_container::request_reduce_height(
@ -167,10 +173,13 @@ void tscrollbar_container::request_reduce_height(
*/
/** @todo Evaluate whether sizing hints are required. */
assert(content_grid_);
const unsigned offset = horizontal_scrollbar_grid_
&& horizontal_scrollbar_grid_->get_visible() != twidget::INVISIBLE
const unsigned offset
= horizontal_scrollbar_grid_
&& horizontal_scrollbar_grid_->get_visible()
!= twidget::tvisible::invisible
? horizontal_scrollbar_grid_->get_best_size().y
: 0;
content_grid_->request_reduce_height(maximum_height - offset);
// Did we manage to achieve the wanted size?
@ -189,16 +198,16 @@ void tscrollbar_container::request_reduce_height(
assert(vertical_scrollbar_grid_);
const bool resized =
vertical_scrollbar_grid_->get_visible() == twidget::INVISIBLE;
vertical_scrollbar_grid_->get_visible() == twidget::tvisible::invisible;
// Always set the bar visible, is a nop is already visible.
vertical_scrollbar_grid_->set_visible(twidget::VISIBLE);
vertical_scrollbar_grid_->set_visible(twidget::tvisible::visible);
const tpoint scrollbar_size = vertical_scrollbar_grid_->get_best_size();
// If showing the scrollbar increased the height, hide and abort.
if(resized && scrollbar_size.y > size.y) {
vertical_scrollbar_grid_->set_visible(twidget::INVISIBLE);
vertical_scrollbar_grid_->set_visible(twidget::tvisible::invisible);
DBG_GUI_L << LOG_HEADER
<< " request failed, showing the scrollbar"
<< " increased the height to " << scrollbar_size.y
@ -237,10 +246,13 @@ void tscrollbar_container::request_reduce_width(
// First ask our content, it might be able to wrap which looks better as
// a scrollbar.
assert(content_grid_);
const unsigned offset = vertical_scrollbar_grid_
&& vertical_scrollbar_grid_->get_visible() != twidget::INVISIBLE
const unsigned offset
= vertical_scrollbar_grid_
&& vertical_scrollbar_grid_->get_visible()
!= twidget::tvisible::invisible
? vertical_scrollbar_grid_->get_best_size().x
: 0;
content_grid_->request_reduce_width(maximum_width - offset);
// Did we manage to achieve the wanted size?
@ -259,7 +271,7 @@ void tscrollbar_container::request_reduce_width(
// Always set the bar visible, is a nop when it's already visible.
assert(horizontal_scrollbar_grid_);
horizontal_scrollbar_grid_->set_visible(twidget::VISIBLE);
horizontal_scrollbar_grid_->set_visible(twidget::tvisible::visible);
size = get_best_size();
const tpoint scrollbar_size = horizontal_scrollbar_grid_->get_best_size();
@ -268,7 +280,7 @@ void tscrollbar_container::request_reduce_width(
if(horizontal_scrollbar_mode_ == auto_visible_first_run
&& scrollbar_size.x > size.x) {
horizontal_scrollbar_grid_->set_visible(twidget::INVISIBLE);
horizontal_scrollbar_grid_->set_visible(twidget::tvisible::invisible);
DBG_GUI_L << LOG_HEADER
<< " request failed, showing the scrollbar"
<< " increased the width to " << scrollbar_size.x
@ -295,14 +307,16 @@ tpoint tscrollbar_container::calculate_best_size() const
log_scope2(log_gui_layout, LOG_SCOPE_HEADER);
/***** get vertical scrollbar size *****/
const tpoint vertical_scrollbar =
vertical_scrollbar_grid_->get_visible() == twidget::INVISIBLE
const tpoint vertical_scrollbar
= vertical_scrollbar_grid_->get_visible()
== twidget::tvisible::invisible
? tpoint(0, 0)
: vertical_scrollbar_grid_->get_best_size();
/***** get horizontal scrollbar size *****/
const tpoint horizontal_scrollbar =
horizontal_scrollbar_grid_->get_visible() == twidget::INVISIBLE
const tpoint horizontal_scrollbar
= horizontal_scrollbar_grid_->get_visible()
== twidget::tvisible::invisible
? tpoint(0, 0)
: horizontal_scrollbar_grid_->get_best_size();
@ -333,7 +347,7 @@ static void set_scrollbar_mode(tgrid* scrollbar_grid, tscrollbar_* scrollbar,
assert(scrollbar_grid && scrollbar);
if(scrollbar_mode == tscrollbar_container::always_invisible) {
scrollbar_grid->set_visible(twidget::INVISIBLE);
scrollbar_grid->set_visible(twidget::tvisible::invisible);
return;
}
@ -346,8 +360,8 @@ static void set_scrollbar_mode(tgrid* scrollbar_grid, tscrollbar_* scrollbar,
const bool scrollbar_needed = items > visible_items;
scrollbar_grid->set_visible(scrollbar_needed
? twidget::VISIBLE
: twidget::HIDDEN);
? twidget::tvisible::visible
: twidget::tvisible::hidden);
}
}
@ -386,8 +400,8 @@ void tscrollbar_container::place(const tpoint& origin, const tpoint& size)
set_scrollbar_button_status();
// Now set the visible part of the content.
content_visible_area_ = content_->get_rect();
content_grid_->set_visible_area(content_visible_area_);
content_visible_area_ = content_->get_rectangle();
content_grid_->set_visible_rectangle(content_visible_area_);
}
void tscrollbar_container::set_origin(const tpoint& origin)
@ -403,18 +417,19 @@ void tscrollbar_container::set_origin(const tpoint& origin)
content_grid_->set_origin(content_origin);
// Changing the origin also invalidates the visible area.
content_grid_->set_visible_area(content_visible_area_);
content_grid_->set_visible_rectangle(content_visible_area_);
}
void tscrollbar_container::set_visible_area(const SDL_Rect& area)
void tscrollbar_container::set_visible_rectangle(const SDL_Rect& rectangle)
{
// Inherited.
tcontainer_::set_visible_area(area);
tcontainer_::set_visible_rectangle(rectangle);
// Now get the visible part of the content.
content_visible_area_ = intersect_rects(area, content_->get_rect());
content_visible_area_
= intersect_rects(rectangle, content_->get_rectangle());
content_grid_->set_visible_area(content_visible_area_);
content_grid_->set_visible_rectangle(content_visible_area_);
}
twidget* tscrollbar_container::find_at(
@ -497,7 +512,7 @@ bool tscrollbar_container::content_resize_request(const bool force_sizing)
if(horizontal_scrollbar_mode_ == always_invisible
|| (horizontal_scrollbar_mode_ == auto_visible_first_run
&& horizontal_scrollbar_grid_->get_visible()
== twidget::INVISIBLE)) {
== twidget::tvisible::invisible)) {
DBG_GUI_L << LOG_HEADER
<< " can't use horizontal scrollbar, ask window.\n";
@ -513,7 +528,7 @@ bool tscrollbar_container::content_resize_request(const bool force_sizing)
if(vertical_scrollbar_mode_ == always_invisible
|| (vertical_scrollbar_mode_ == auto_visible_first_run
&& vertical_scrollbar_grid_->get_visible()
== twidget::INVISIBLE)) {
== twidget::tvisible::invisible)) {
DBG_GUI_L << LOG_HEADER
<< " can't use vertical scrollbar, ask window.\n";
@ -597,7 +612,7 @@ bool tscrollbar_container::content_resize_width(const int width_modification)
if(horizontal_scrollbar_mode_ == always_invisible
|| (horizontal_scrollbar_mode_ == auto_visible_first_run
&& horizontal_scrollbar_grid_->get_visible()
== twidget::INVISIBLE)) {
== twidget::tvisible::invisible)) {
DBG_GUI_L << " can't use horizontal scrollbar, ask window.\n";
twindow* window = get_window();
@ -645,7 +660,7 @@ bool tscrollbar_container::content_resize_height(const int height_modification)
if(vertical_scrollbar_mode_ == always_invisible
|| (vertical_scrollbar_mode_ == auto_visible_first_run
&& vertical_scrollbar_grid_->get_visible()
== twidget::INVISIBLE)) {
== twidget::tvisible::invisible)) {
DBG_GUI_L << " can't use vertical scrollbar, ask window.\n";
twindow* window = get_window();
@ -749,8 +764,8 @@ void tscrollbar_container::
void tscrollbar_container::impl_draw_children(surface& frame_buffer)
{
assert(get_visible() == twidget::VISIBLE
&& content_grid_->get_visible() == twidget::VISIBLE);
assert(get_visible() == twidget::tvisible::visible
&& content_grid_->get_visible() == twidget::tvisible::visible);
// Inherited.
tcontainer_::impl_draw_children(frame_buffer);
@ -763,8 +778,8 @@ void tscrollbar_container::impl_draw_children(
, int x_offset
, int y_offset)
{
assert(get_visible() == twidget::VISIBLE
&& content_grid_->get_visible() == twidget::VISIBLE);
assert(get_visible() == twidget::tvisible::visible
&& content_grid_->get_visible() == twidget::tvisible::visible);
// Inherited.
tcontainer_::impl_draw_children(frame_buffer, x_offset, y_offset);
@ -1031,8 +1046,8 @@ void tscrollbar_container::scrollbar_moved()
content_->get_y() - y_offset);
content_grid_->set_origin(content_origin);
content_grid_->set_visible_area(content_visible_area_);
content_grid_->set_dirty();
content_grid_->set_visible_rectangle(content_visible_area_);
content_grid_->set_dirty(true);
// Update scrollbar.
set_scrollbar_button_status();
@ -1100,7 +1115,7 @@ void tscrollbar_container::signal_handler_sdl_wheel_up(
assert(vertical_scrollbar_grid_ && vertical_scrollbar_);
if(vertical_scrollbar_grid_->get_visible() == twidget::VISIBLE) {
if(vertical_scrollbar_grid_->get_visible() == twidget::tvisible::visible) {
vertical_scrollbar_->scroll(tscrollbar_::HALF_JUMP_BACKWARDS);
scrollbar_moved();
handled = true;
@ -1115,7 +1130,7 @@ void tscrollbar_container::signal_handler_sdl_wheel_down(
assert(vertical_scrollbar_grid_ && vertical_scrollbar_);
if(vertical_scrollbar_grid_->get_visible() == twidget::VISIBLE) {
if(vertical_scrollbar_grid_->get_visible() == twidget::tvisible::visible) {
vertical_scrollbar_->scroll(tscrollbar_::HALF_JUMP_FORWARD);
scrollbar_moved();
handled = true;
@ -1130,7 +1145,7 @@ void tscrollbar_container::signal_handler_sdl_wheel_left(
assert(horizontal_scrollbar_grid_ && horizontal_scrollbar_);
if(horizontal_scrollbar_grid_->get_visible() == twidget::VISIBLE) {
if(horizontal_scrollbar_grid_->get_visible() == twidget::tvisible::visible) {
horizontal_scrollbar_->scroll(tscrollbar_::HALF_JUMP_BACKWARDS);
scrollbar_moved();
handled = true;
@ -1145,7 +1160,7 @@ void tscrollbar_container::signal_handler_sdl_wheel_right(
assert(horizontal_scrollbar_grid_ && horizontal_scrollbar_);
if(horizontal_scrollbar_grid_->get_visible() == twidget::VISIBLE) {
if(horizontal_scrollbar_grid_->get_visible() == twidget::tvisible::visible) {
horizontal_scrollbar_->scroll(tscrollbar_::HALF_JUMP_FORWARD);
scrollbar_moved();
handled = true;

View file

@ -85,8 +85,8 @@ public:
/***** ***** ***** ***** layout functions ***** ***** ***** *****/
/** Inherited from tcontainer_. */
void layout_init(const bool full_initialization);
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/** Inherited from twidget. */
void request_reduce_height(const unsigned maximum_height);
@ -114,8 +114,8 @@ public:
/** Inherited from tcontainer_. */
void set_origin(const tpoint& origin);
/** Inherited from tcontainer_. */
void set_visible_area(const SDL_Rect& area);
/** See @ref twidget::set_visible_rectangle. */
virtual void set_visible_rectangle(const SDL_Rect& rectangle) OVERRIDE;
/***** ***** ***** inherited ****** *****/

View file

@ -34,6 +34,7 @@
#include "serialization/schema_validator.hpp"
#include "formula_string_utils.hpp"
#include "utils/foreach.tpp"
#include "wml_exception.hpp"
namespace gui2 {

View file

@ -61,7 +61,7 @@ public:
/***** ***** ***** setters / getters for members ***** ****** *****/
void set_best_slider_length(const unsigned length)
{ best_slider_length_ = length; set_dirty(); }
{ best_slider_length_ = length; set_dirty(true); }
void set_minimum_value_label(const t_string& minimum_value_label)
{ minimum_value_label_ = minimum_value_label; }

View file

@ -66,7 +66,7 @@ void ttext_::set_maximum_length(const size_t maximum_length)
selection_length_ = maximum_length - selection_start_;
}
update_canvas();
set_dirty();
set_dirty(true);
}
}
@ -79,7 +79,7 @@ void ttext_::set_value(const std::string& text)
selection_start_ = text_.get_length();
selection_length_ = 0;
update_canvas();
set_dirty();
set_dirty(true);
}
}
@ -98,7 +98,7 @@ void ttext_::set_cursor(const size_t offset, const bool select)
copy_selection(true);
#endif
update_canvas();
set_dirty();
set_dirty(true);
} else {
assert(offset <= text_.get_length());
@ -106,7 +106,7 @@ void ttext_::set_cursor(const size_t offset, const bool select)
selection_length_ = 0;
update_canvas();
set_dirty();
set_dirty(true);
}
}
@ -119,7 +119,7 @@ void ttext_::insert_char(const Uint16 unicode)
// Update status
set_cursor(selection_start_ + 1, false);
update_canvas();
set_dirty();
set_dirty(true);
}
}
@ -156,7 +156,7 @@ void ttext_::paste_selection(const bool mouse)
selection_start_ += text_.insert_text(selection_start_, text);
update_canvas();
set_dirty();
set_dirty(true);
fire(event::NOTIFY_MODIFIED, *this, NULL);
}
@ -164,7 +164,7 @@ void ttext_::set_selection_start(const size_t selection_start)
{
if(selection_start != selection_start_) {
selection_start_ = selection_start;
set_dirty();
set_dirty(true);
}
}
@ -172,7 +172,7 @@ void ttext_::set_selection_length(const int selection_length)
{
if(selection_length != selection_length_) {
selection_length_ = selection_length;
set_dirty();
set_dirty(true);
}
}

View file

@ -235,7 +235,7 @@ void ttext_box::handle_mouse_selection(tpoint mouse, const bool start_selection)
set_cursor(offset, !start_selection);
update_canvas();
set_dirty();
set_dirty(true);
dragging_ |= start_selection;
}

View file

@ -94,7 +94,7 @@ void ttoggle_button::update_canvas()
canvas.set_variable("icon", variant(icon_name_));
}
set_dirty();
set_dirty(true);
}
void ttoggle_button::set_value(const bool selected)

View file

@ -102,7 +102,7 @@ SDL_Rect ttoggle_panel::get_client_rect() const
boost::dynamic_pointer_cast<const ttoggle_panel_definition::tresolution>(config());
assert(conf);
SDL_Rect result = get_rect();
SDL_Rect result = get_rectangle();
result.x += conf->left_border;
result.y += conf->top_border;
result.w -= conf->left_border + conf->right_border;

View file

@ -131,7 +131,7 @@ void ttree_view::resize_content(
need_layout_ = true;
// If the content grows assume it "overwrites" the old content.
if(width_modification < 0 || height_modification < 0) {
set_dirty();
set_dirty(true);
}
DBG_GUI_L << LOG_HEADER << " succeeded.\n";
} else {
@ -147,7 +147,7 @@ void ttree_view::layout_children(const bool force)
root_node_->place(indention_step_size_
, get_origin()
, content_grid()->get_size().x);
root_node_->set_visible_area(content_visible_area_);
root_node_->set_visible_rectangle(content_visible_area_);
need_layout_ = false;
}

View file

@ -62,7 +62,7 @@ ttree_view_node::ttree_view_node(const std::string& id
, false);
if(icon_) {
icon_->set_visible(twidget::HIDDEN);
icon_->set_visible(twidget::tvisible::hidden);
icon_->connect_signal<event::LEFT_BUTTON_CLICK>(
boost::bind(&ttree_view_node::
signal_handler_left_button_click
@ -71,7 +71,7 @@ ttree_view_node::ttree_view_node(const std::string& id
}
if(parent_node_ && parent_node_->icon_) {
parent_node_->icon_->set_visible(twidget::VISIBLE);
parent_node_->icon_->set_visible(twidget::tvisible::visible);
}
twidget& widget = find_widget<twidget>(
@ -329,7 +329,7 @@ tpoint ttree_view_node::get_current_size() const
const ttree_view_node& node = *itor;
if(node.grid_.get_visible() == twidget::INVISIBLE) {
if(node.grid_.get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -363,7 +363,7 @@ tpoint ttree_view_node::get_unfolded_size() const
const ttree_view_node& node = *itor;
if(node.grid_.get_visible() == twidget::INVISIBLE) {
if(node.grid_.get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -400,7 +400,7 @@ tpoint ttree_view_node::calculate_best_size(const int indention_level
const ttree_view_node& node = *itor;
if(node.grid_.get_visible() == twidget::INVISIBLE) {
if(node.grid_.get_visible() == twidget::tvisible::invisible) {
continue;
}
@ -468,11 +468,11 @@ unsigned ttree_view_node::place(
return origin.y - offset;
}
void ttree_view_node::set_visible_area(const SDL_Rect& area)
void ttree_view_node::set_visible_rectangle(const SDL_Rect& rectangle)
{
log_scope2(log_gui_layout, LOG_SCOPE_HEADER);
DBG_GUI_L << LOG_HEADER << " area " << area << ".\n";
grid_.set_visible_area(area);
DBG_GUI_L << LOG_HEADER << " rectangle " << rectangle << ".\n";
grid_.set_visible_rectangle(rectangle);
if(is_folded()) {
DBG_GUI_L << LOG_HEADER << " folded node done.\n";
@ -480,7 +480,7 @@ void ttree_view_node::set_visible_area(const SDL_Rect& area)
}
FOREACH(AUTO& node, children_) {
node.set_visible_area(area);
node.set_visible_rectangle(rectangle);
}
}

View file

@ -248,7 +248,8 @@ private:
, tpoint origin
, unsigned width);
void set_visible_area(const SDL_Rect& area);
/** See @ref twidget::set_visible_rectangle. */
virtual void set_visible_rectangle(const SDL_Rect& rectangle) OVERRIDE;
void impl_draw_children(surface& frame_buffer);
void impl_draw_children(surface& frame_buffer, int x_offset, int y_offset);

View file

@ -121,12 +121,12 @@ void tviewport::place(const tpoint& origin, const tpoint& size)
widget_.place(tpoint(0, 0), widget_.get_best_size());
}
void tviewport::layout_init(const bool full_initialization)
void tviewport::layout_initialise(const bool full_initialisation)
{
twidget::layout_init(full_initialization);
twidget::layout_initialise(full_initialisation);
if(widget_.get_visible() != twidget::INVISIBLE) {
widget_.layout_init(full_initialization);
if(widget_.get_visible() != twidget::tvisible::invisible) {
widget_.layout_initialise(full_initialisation);
}
}
@ -138,7 +138,7 @@ void tviewport::impl_draw_children(
x_offset += get_x();
y_offset += get_y();
if(widget_.get_visible() != twidget::INVISIBLE) {
if(widget_.get_visible() != twidget::tvisible::invisible) {
widget_.draw_background(frame_buffer, x_offset, y_offset);
widget_.draw_children(frame_buffer, x_offset, y_offset);
widget_.draw_foreground(frame_buffer, x_offset, y_offset);

View file

@ -53,8 +53,8 @@ public:
/** Inherited from twidget. */
void place(const tpoint& origin, const tpoint& size);
/** Inherited from twidget. */
void layout_init(const bool full_initialization);
/** See @ref twidget::layout_initialise. */
virtual void layout_initialise(const bool full_initialisation) OVERRIDE;
/** Inherited from twidget. */
void impl_draw_children(surface& frame_buffer, int x_offset, int y_offset);

View file

@ -22,25 +22,27 @@
namespace gui2 {
/***** ***** ***** Constructor and destructor. ***** ***** *****/
twidget::twidget()
: id_("")
, parent_(NULL)
, x_(-1)
, y_(-1)
, w_(0)
, h_(0)
, dirty_(true)
, visible_(VISIBLE)
, drawing_action_(DRAWN)
, clip_rect_()
, width_(0)
, height_(0)
, layout_size_(tpoint(0,0))
, linked_group_()
#ifndef LOW_MEM
, debug_border_mode_(0)
, debug_border_color_(0)
#endif
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
, last_best_size_(tpoint(0,0))
#endif
, linked_group_()
, dirty_(true)
, visible_(tvisible::visible)
, redraw_action_(tredraw_action::full)
, clipping_rectangle_()
#ifndef LOW_MEM
, debug_border_mode_(0)
, debug_border_colour_(0)
#endif
{
DBG_GUI_LF << "widget create: " << static_cast<void*>(this) << "\n";
@ -51,20 +53,20 @@ twidget::twidget(const tbuilder_widget& builder)
, parent_(NULL)
, x_(-1)
, y_(-1)
, w_(0)
, h_(0)
, dirty_(true)
, visible_(VISIBLE)
, drawing_action_(DRAWN)
, clip_rect_()
, width_(0)
, height_(0)
, layout_size_(tpoint(0,0))
, linked_group_(builder.linked_group)
#ifndef LOW_MEM
, debug_border_mode_(builder.debug_border_mode)
, debug_border_color_(builder.debug_border_color)
#endif
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
, last_best_size_(tpoint(0,0))
#endif
, linked_group_(builder.linked_group)
, dirty_(true)
, visible_(tvisible::visible)
, redraw_action_(tredraw_action::full)
, clipping_rectangle_()
#ifndef LOW_MEM
, debug_border_mode_(builder.debug_border_mode)
, debug_border_colour_(builder.debug_border_color)
#endif
{
DBG_GUI_LF << "widget create: " << static_cast<void*>(this) << "\n";
@ -72,7 +74,8 @@ twidget::twidget(const tbuilder_widget& builder)
twidget::~twidget()
{
DBG_GUI_LF << "widget destroy: " << static_cast<void*>(this)
DBG_GUI_LF
<< "widget destroy: " << static_cast<void*>(this)
<< " (id: " << id_ << ")\n";
twidget* p = parent();
@ -88,104 +91,28 @@ twidget::~twidget()
}
}
/***** ***** ***** ***** ID functions. ***** ***** ***** *****/
void twidget::set_id(const std::string& id)
{
DBG_GUI_LF << "set id of " << static_cast<void*>(this)
DBG_GUI_LF
<< "set id of " << static_cast<void*>(this)
<< " to '" << id << "' "
<< "(was '" << id_ << "'). Widget type: " <<
(dynamic_cast<tcontrol*>(this) ?
dynamic_cast<tcontrol*>(this)->get_control_type()
<< "(was '" << id_ << "'). Widget type: "
<< (dynamic_cast<tcontrol*>(this)
? dynamic_cast<tcontrol*>(this)->get_control_type()
: typeid(twidget).name())
<< "\n";
id_ = id;
}
void twidget::layout_init(const bool /*full_initialization*/)
const std::string& twidget::id() const
{
assert(visible_ != INVISIBLE);
assert(get_window());
layout_size_ = tpoint(0,0);
if(!linked_group_.empty()) {
get_window()->add_linked_widget(linked_group_, this);
}
return id_;
}
tpoint twidget::get_best_size() const
{
assert(visible_ != INVISIBLE);
tpoint result = layout_size_;
if(result == tpoint(0, 0)) {
result = calculate_best_size();
}
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
last_best_size_ = result;
#endif
return result;
}
void twidget::place(const tpoint& origin, const tpoint& size)
{
assert(size.x >= 0);
assert(size.y >= 0);
x_ = origin.x;
y_ = origin.y;
w_ = size.x;
h_ = size.y;
#if 0
std::cerr << "Id " << id()
<< " rect " << get_rect()
<< " parent "
<< (parent ? parent->get_x() : 0)
<< ','
<< (parent ? parent->get_y() : 0)
<< " screen origin " << x_ << ',' << y_
<< ".\n";
#endif
set_dirty();
}
void twidget::set_size(const tpoint& size)
{
assert(size.x >= 0);
assert(size.y >= 0);
w_ = size.x;
h_ = size.y;
set_dirty();
}
twidget* twidget::find_at(const tpoint& coordinate,
const bool must_be_active)
{
return is_at(coordinate, must_be_active) ? this : NULL;
}
const twidget* twidget::find_at(const tpoint& coordinate,
const bool must_be_active) const
{
return is_at(coordinate, must_be_active) ? this : NULL;
}
SDL_Rect twidget::get_dirty_rect() const
{
return drawing_action_ == DRAWN
? get_rect()
: clip_rect_;
}
void twidget::move(const int x_offset, const int y_offset)
{
x_ += x_offset;
y_ += y_offset;
}
/***** ***** ***** ***** Parent functions ***** ***** ***** *****/
twindow* twidget::get_window()
{
@ -197,7 +124,7 @@ twindow* twidget::get_window()
result = result->parent_;
}
// on error dynamic_cast return 0 which is what we want.
// on error dynamic_cast returns NULL which is what we want.
return dynamic_cast<twindow*>(result);
}
@ -211,7 +138,7 @@ const twindow* twidget::get_window() const
result = result->parent_;
}
// on error dynamic_cast return 0 which is what we want.
// on error dynamic_cast returns NULL which is what we want.
return dynamic_cast<const twindow*>(result);
}
@ -221,16 +148,285 @@ tdialog* twidget::dialog()
return window ? window->dialog() : NULL;
}
void twidget::set_parent(twidget* parent)
{
parent_ = parent;
}
twidget* twidget::parent()
{
return parent_;
}
/***** ***** ***** ***** Size and layout functions. ***** ***** ***** *****/
void twidget::layout_initialise(const bool /*full_initialisation*/)
{
assert(visible_ != tvisible::invisible);
assert(get_window());
layout_size_ = tpoint(0,0);
if(!linked_group_.empty()) {
get_window()->add_linked_widget(linked_group_, this);
}
}
void twidget::demand_reduce_width(const unsigned /*maximum_width*/)
{
/* DO NOTHING */
}
void twidget::request_reduce_height(const unsigned /*maximum_height*/)
{
/* DO NOTHING */
}
void twidget::demand_reduce_height(const unsigned /*maximum_height*/)
{
/* DO NOTHING */
}
tpoint twidget::get_best_size() const
{
assert(visible_ != tvisible::invisible);
tpoint result = layout_size_;
if(result == tpoint(0, 0)) {
result = calculate_best_size();
}
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
last_best_size_ = result;
#endif
return result;
}
bool twidget::can_wrap() const
{
return false;
}
void twidget::set_origin(const tpoint& origin)
{
x_ = origin.x;
y_ = origin.y;
}
void twidget::set_size(const tpoint& size)
{
assert(size.x >= 0);
assert(size.y >= 0);
width_ = size.x;
height_ = size.y;
set_dirty(true);
}
void twidget::place(const tpoint& origin, const tpoint& size)
{
assert(size.x >= 0);
assert(size.y >= 0);
x_ = origin.x;
y_ = origin.y;
width_ = size.x;
height_ = size.y;
#if 0
std::cerr
<< "Id " << id()
<< " rect " << get_rectangle()
<< " parent "
<< (parent ? parent->get_x() : 0)
<< ','
<< (parent ? parent->get_y() : 0)
<< " screen origin " << x_ << ',' << y_
<< ".\n";
#endif
set_dirty(true);
}
void twidget::move(const int x_offset, const int y_offset)
{
x_ += x_offset;
y_ += y_offset;
}
void twidget::layout_children()
{
/* DO NOTHING */
}
tpoint twidget::get_origin() const
{
return tpoint(x_, y_);
}
tpoint twidget::get_size() const
{
return tpoint(width_, height_);
}
SDL_Rect twidget::get_rectangle() const
{
return create_rect(get_origin(), get_size());
}
int twidget::get_x() const
{
return x_;
}
int twidget::get_y() const
{
return y_;
}
unsigned twidget::get_width() const
{
return width_;
}
unsigned twidget::get_height() const
{
return height_;
}
void twidget::set_layout_size(const tpoint& size)
{
layout_size_ = size;
}
const tpoint& twidget::layout_size() const
{
return layout_size_;
}
void twidget::set_linked_group(const std::string& linked_group)
{
linked_group_ = linked_group;
}
/***** ***** ***** ***** Drawing functions. ***** ***** ***** *****/
SDL_Rect twidget::calculate_blitting_rectangle(
const int x_offset
, const int y_offset)
{
SDL_Rect result = get_rectangle();
result.x += x_offset;
result.y += y_offset;
return result;
}
SDL_Rect twidget::calculate_clipping_rectangle(
const int x_offset
, const int y_offset)
{
SDL_Rect result = clipping_rectangle_;
result.x += x_offset;
result.y += y_offset;
return result;
}
void twidget::draw_background(surface& frame_buffer, int x_offset, int y_offset)
{
assert(visible_ == tvisible::visible);
if(redraw_action_ == tredraw_action::partly) {
const SDL_Rect clipping_rectangle
= calculate_clipping_rectangle(x_offset, y_offset);
clip_rect_setter clip(frame_buffer, &clipping_rectangle);
draw_debug_border(frame_buffer, x_offset, y_offset);
impl_draw_background(frame_buffer, x_offset, y_offset);
} else {
draw_debug_border(frame_buffer, x_offset, y_offset);
impl_draw_background(frame_buffer, x_offset, y_offset);
}
}
void twidget::draw_background(surface& frame_buffer)
{
assert(visible_ == tvisible::visible);
if(redraw_action_ == tredraw_action::partly) {
clip_rect_setter clip(frame_buffer, &clipping_rectangle_);
draw_debug_border(frame_buffer);
impl_draw_background(frame_buffer);
} else {
draw_debug_border(frame_buffer);
impl_draw_background(frame_buffer);
}
}
void twidget::draw_children(surface& frame_buffer, int x_offset, int y_offset)
{
assert(visible_ == tvisible::visible);
if(redraw_action_ == tredraw_action::partly) {
const SDL_Rect clipping_rectangle
= calculate_clipping_rectangle(x_offset, y_offset);
clip_rect_setter clip(frame_buffer, &clipping_rectangle);
impl_draw_children(frame_buffer, x_offset, y_offset);
} else {
impl_draw_children(frame_buffer, x_offset, y_offset);
}
}
void twidget::draw_children(surface& frame_buffer)
{
assert(visible_ == tvisible::visible);
if(redraw_action_ == tredraw_action::partly) {
clip_rect_setter clip(frame_buffer, &clipping_rectangle_);
impl_draw_children(frame_buffer);
} else {
impl_draw_children(frame_buffer);
}
}
void twidget::draw_foreground(surface& frame_buffer, int x_offset, int y_offset)
{
assert(visible_ == tvisible::visible);
if(redraw_action_ == tredraw_action::partly) {
const SDL_Rect clipping_rectangle
= calculate_clipping_rectangle(x_offset, y_offset);
clip_rect_setter clip(frame_buffer, &clipping_rectangle);
impl_draw_foreground(frame_buffer, x_offset, y_offset);
} else {
impl_draw_foreground(frame_buffer, x_offset, y_offset);
}
}
void twidget::draw_foreground(surface& frame_buffer)
{
assert(visible_ == tvisible::visible);
if(redraw_action_ == tredraw_action::partly) {
clip_rect_setter clip(frame_buffer, &clipping_rectangle_);
impl_draw_foreground(frame_buffer);
} else {
impl_draw_foreground(frame_buffer);
}
}
void twidget::populate_dirty_list(twindow& caller,
std::vector<twidget*>& call_stack)
{
assert(call_stack.empty() || call_stack.back() != this);
if(visible_ != VISIBLE) {
if(visible_ != tvisible::visible) {
return;
}
if(get_drawing_action() == NOT_DRAWN) {
if(get_drawing_action() == tredraw_action::none) {
return;
}
@ -243,14 +439,52 @@ void twidget::populate_dirty_list(twindow& caller,
}
}
void twidget::set_visible(const tvisible visible)
void twidget::child_populate_dirty_list(
twindow& /*caller*/
, const std::vector<twidget*>& /*call_stack*/)
{
/* DO NOTHING */
}
SDL_Rect twidget::get_dirty_rectangle() const
{
return redraw_action_ == tredraw_action::full
? get_rectangle()
: clipping_rectangle_;
}
void twidget::set_visible_rectangle(const SDL_Rect& rectangle)
{
clipping_rectangle_ = intersect_rects(rectangle, get_rectangle());
if(clipping_rectangle_ == get_rectangle()) {
redraw_action_ = tredraw_action::full;
} else if(clipping_rectangle_ == empty_rect) {
redraw_action_ = tredraw_action::none;
} else {
redraw_action_ = tredraw_action::partly;
}
}
void twidget::set_dirty(const bool dirty)
{
dirty_ = dirty;
}
bool twidget::get_dirty() const
{
return dirty_;
}
void twidget::set_visible(const tvisible::scoped_enum visible)
{
if(visible == visible_) {
return;
}
// Switching to or from invisible should invalidate the layout.
const bool need_resize = visible_ == INVISIBLE || visible == INVISIBLE;
const bool need_resize
= visible_ == tvisible::invisible || visible == tvisible::invisible;
visible_ = visible;
if(need_resize) {
@ -264,152 +498,58 @@ void twidget::set_visible(const tvisible visible)
}
}
} else {
set_dirty();
set_dirty(true);
}
}
twidget::tdrawing_action twidget::get_drawing_action() const
twidget::tvisible::scoped_enum twidget::get_visible() const
{
return (w_ == 0 || h_ == 0)
? NOT_DRAWN
: drawing_action_;
return visible_;
}
void twidget::set_visible_area(const SDL_Rect& area)
twidget::tredraw_action::scoped_enum twidget::get_drawing_action() const
{
clip_rect_ = intersect_rects(area, get_rect());
if(clip_rect_ == get_rect()) {
drawing_action_ = DRAWN;
} else if(clip_rect_ == empty_rect) {
drawing_action_ = NOT_DRAWN;
} else {
drawing_action_ = PARTLY_DRAWN;
}
}
SDL_Rect twidget::calculate_blitting_rectangle(
const int x_offset
, const int y_offset)
{
SDL_Rect result = get_rect();
result.x += x_offset;
result.y += y_offset;
return result;
}
SDL_Rect twidget::calculate_clipping_rectangle(
const int x_offset
, const int y_offset)
{
SDL_Rect result = clip_rect_;
result.x += x_offset;
result.y += y_offset;
return result;
}
void twidget::draw_background(surface& frame_buffer)
{
assert(visible_ == VISIBLE);
if(drawing_action_ == PARTLY_DRAWN) {
clip_rect_setter clip(frame_buffer, &clip_rect_);
draw_debug_border(frame_buffer);
impl_draw_background(frame_buffer);
} else {
draw_debug_border(frame_buffer);
impl_draw_background(frame_buffer);
}
}
void twidget::draw_background(surface& frame_buffer, int x_offset, int y_offset)
{
assert(visible_ == VISIBLE);
if(drawing_action_ == PARTLY_DRAWN) {
const SDL_Rect clipping_rectangle =
calculate_clipping_rectangle(x_offset, y_offset);
clip_rect_setter clip(frame_buffer, &clipping_rectangle);
draw_debug_border(frame_buffer, x_offset, y_offset);
impl_draw_background(frame_buffer, x_offset, y_offset);
} else {
draw_debug_border(frame_buffer, x_offset, y_offset);
impl_draw_background(frame_buffer, x_offset, y_offset);
}
}
void twidget::draw_children(surface& frame_buffer)
{
assert(visible_ == VISIBLE);
if(drawing_action_ == PARTLY_DRAWN) {
clip_rect_setter clip(frame_buffer, &clip_rect_);
impl_draw_children(frame_buffer);
} else {
impl_draw_children(frame_buffer);
}
}
void twidget::draw_children(surface& frame_buffer, int x_offset, int y_offset)
{
assert(visible_ == VISIBLE);
if(drawing_action_ == PARTLY_DRAWN) {
const SDL_Rect clipping_rectangle =
calculate_clipping_rectangle(x_offset, y_offset);
clip_rect_setter clip(frame_buffer, &clipping_rectangle);
impl_draw_children(frame_buffer, x_offset, y_offset);
} else {
impl_draw_children(frame_buffer, x_offset, y_offset);
}
}
void twidget::draw_foreground(surface& frame_buffer)
{
assert(visible_ == VISIBLE);
if(drawing_action_ == PARTLY_DRAWN) {
clip_rect_setter clip(frame_buffer, &clip_rect_);
impl_draw_foreground(frame_buffer);
} else {
impl_draw_foreground(frame_buffer);
}
}
void twidget::draw_foreground(surface& frame_buffer, int x_offset, int y_offset)
{
assert(visible_ == VISIBLE);
if(drawing_action_ == PARTLY_DRAWN) {
const SDL_Rect clipping_rectangle =
calculate_clipping_rectangle(x_offset, y_offset);
clip_rect_setter clip(frame_buffer, &clipping_rectangle);
impl_draw_foreground(frame_buffer, x_offset, y_offset);
} else {
impl_draw_foreground(frame_buffer, x_offset, y_offset);
}
return (width_ == 0 || height_ == 0)
? tredraw_action::none
: redraw_action_;
}
#ifndef LOW_MEM
void twidget::set_debug_border_mode(const unsigned debug_border_mode)
{
debug_border_mode_ = debug_border_mode;
}
void twidget::set_debug_border_colour(const unsigned debug_border_colour)
{
debug_border_colour_ = debug_border_colour;
}
void twidget::draw_debug_border(surface& frame_buffer)
{
SDL_Rect r = drawing_action_ == PARTLY_DRAWN
? clip_rect_
: get_rect();
SDL_Rect r = redraw_action_ == tredraw_action::partly
? clipping_rectangle_
: get_rectangle();
switch(debug_border_mode_) {
case 0:
/* DO NOTHING */
break;
case 1:
draw_rectangle(r.x, r.y, r.w, r.h
, debug_border_color_, frame_buffer);
draw_rectangle(
r.x
, r.y
, r.w
, r.h
, debug_border_colour_
, frame_buffer);
break;
case 2:
sdl_fill_rect(frame_buffer, &r, debug_border_color_);
sdl_fill_rect(frame_buffer, &r, debug_border_colour_);
break;
default:
assert(false);
}
@ -420,7 +560,7 @@ void twidget::draw_debug_border(
, int x_offset
, int y_offset)
{
SDL_Rect r = drawing_action_ == PARTLY_DRAWN
SDL_Rect r = redraw_action_ == tredraw_action::partly
? calculate_clipping_rectangle(x_offset, y_offset)
: calculate_blitting_rectangle(x_offset, y_offset);
@ -428,29 +568,78 @@ void twidget::draw_debug_border(
case 0:
/* DO NOTHING */
break;
case 1:
draw_rectangle(r.x, r.y, r.w, r.h
, debug_border_color_, frame_buffer);
draw_rectangle(
r.x
, r.y
, r.w
, r.h
, debug_border_colour_
, frame_buffer);
break;
case 2:
sdl_fill_rect(frame_buffer, &r, debug_border_color_);
sdl_fill_rect(frame_buffer, &r, debug_border_colour_);
break;
default:
assert(false);
}
}
#endif
/***** ***** ***** ***** Query functions ***** ***** ***** *****/
twidget* twidget::find_at(
const tpoint& coordinate
, const bool must_be_active)
{
return is_at(coordinate, must_be_active) ? this : NULL;
}
const twidget* twidget::find_at(const tpoint& coordinate,
const bool must_be_active) const
{
return is_at(coordinate, must_be_active) ? this : NULL;
}
twidget* twidget::find(
const std::string& id
, const bool /*must_be_active*/)
{
return id_ == id ? this : NULL;
}
const twidget* twidget::find(
const std::string& id
, const bool /*must_be_active*/) const
{
return id_ == id ? this : NULL;
}
bool twidget::has_widget(const twidget* widget) const
{
return widget == this;
}
bool twidget::is_at(const tpoint& coordinate) const
{
return is_at(coordinate, true);
}
bool twidget::is_at(const tpoint& coordinate, const bool must_be_active) const
{
if(visible_ == INVISIBLE
|| (visible_ == HIDDEN && must_be_active)) {
if(visible_ == tvisible::invisible
|| (visible_ == tvisible::hidden && must_be_active)) {
return false;
}
return coordinate.x >= x_
&& coordinate.x < (x_ + static_cast<int>(w_))
&& coordinate.x < (x_ + static_cast<int>(width_))
&& coordinate.y >= y_
&& coordinate.y < (y_ + static_cast<int>(h_)) ? true : false;
&& coordinate.y < (y_ + static_cast<int>(height_));
}
} // namespace gui2

File diff suppressed because it is too large Load diff

View file

@ -675,9 +675,9 @@ int twindow::show(const bool restore, const unsigned auto_close_timeout)
// restore area
if(restore) {
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
sdl_blit(restorer_, 0, video_.getSurface(), &rect);
update_rect(get_rect());
update_rect(get_rectangle());
font::undraw_floating_labels(video_.getSurface());
}
throw;
@ -687,9 +687,9 @@ int twindow::show(const bool restore, const unsigned auto_close_timeout)
// restore area
if(restore) {
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
sdl_blit(restorer_, 0, video_.getSurface(), &rect);
update_rect(get_rect());
update_rect(get_rectangle());
font::undraw_floating_labels(video_.getSurface());
}
@ -712,7 +712,7 @@ void twindow::draw()
// since all will be redrawn when needed with dirty rects. Since that
// doesn't work yet we need to undraw the window.
if(restorer_) {
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
sdl_blit(restorer_, 0, frame_buffer, &rect);
// Since the old area might be bigger as the new one, invalidate
// it.
@ -722,7 +722,7 @@ void twindow::draw()
layout();
// Get new surface for restoring
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
// We want the labels underneath the window so draw them and use them
// as restore point.
font::draw_floating_labels(frame_buffer);
@ -773,7 +773,7 @@ void twindow::draw()
const SDL_Rect dirty_rect = new_widgets
? screen_area()
: item.back()->get_dirty_rect();
: item.back()->get_dirty_rectangle();
// For testing we disable the clipping rect and force the entire screen to
// update. This way an item rendered at the wrong place is directly visible.
@ -801,16 +801,17 @@ void twindow::draw()
*
* Before drawing there needs to be determined whether a dirty widget
* really needs to be redrawn. If the widget doesn't need to be
* redrawing either being not VISIBLE or has status NOT_DRAWN. If
* it's not drawn it's still set not dirty to avoid it keep getting
* on the dirty list.
* redrawing either being not tvisible::visible or has status
* twidget::tredraw_action::none. If it's not drawn it's still set not
* dirty to avoid it keep getting on the dirty list.
*/
for(std::vector<twidget*>::iterator itor = item.begin();
itor != item.end(); ++itor) {
if((**itor).get_visible() != twidget::VISIBLE
|| (**itor).get_drawing_action() == twidget::NOT_DRAWN) {
if((**itor).get_visible() != twidget::tvisible::visible
|| (**itor).get_drawing_action()
== twidget::tredraw_action::none) {
for(std::vector<twidget*>::iterator citor = itor;
citor != item.end(); ++citor) {
@ -824,7 +825,7 @@ void twindow::draw()
}
// Restore.
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
sdl_blit(restorer_, 0, frame_buffer, &rect);
/**
@ -890,14 +891,14 @@ void twindow::draw()
populate_dirty_list(*this, call_stack);
assert(dirty_list_.empty());
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
update_rect(rect);
}
void twindow::undraw()
{
if(restorer_) {
SDL_Rect rect = get_rect();
SDL_Rect rect = get_rectangle();
sdl_blit(restorer_, 0, video_.getSurface(), &rect);
// Since the old area might be bigger as the new one, invalidate
// it.
@ -999,12 +1000,12 @@ void twindow::layout()
if((click_dismiss_button
= find_widget<tbutton>(this, "click_dismiss", false, false))) {
click_dismiss_button->set_visible(twidget::INVISIBLE);
click_dismiss_button->set_visible(twidget::tvisible::invisible);
}
if(click_dismiss_) {
tbutton* button = find_widget<tbutton>(this, "ok", false, false);
if(button) {
button->set_visible(twidget::INVISIBLE);
button->set_visible(twidget::tvisible::invisible);
click_dismiss_button = button;
}
VALIDATE(click_dismiss_button
@ -1012,8 +1013,8 @@ void twindow::layout()
}
/***** Layout. *****/
layout_init(true);
generate_dot_file("layout_init", LAYOUT);
layout_initialise(true);
generate_dot_file("layout_initialise", LAYOUT);
layout_linked_widgets();
@ -1040,7 +1041,7 @@ void twindow::layout()
/****** Validate click dismiss status. *****/
if(click_dismiss_ && disable_click_dismiss()) {
assert(click_dismiss_button);
click_dismiss_button->set_visible(twidget::VISIBLE);
click_dismiss_button->set_visible(twidget::tvisible::visible);
connect_signal_mouse_left_click(
*click_dismiss_button
@ -1050,8 +1051,8 @@ void twindow::layout()
, OK
, true));
layout_init(true);
generate_dot_file("layout_init", LAYOUT);
layout_initialise(true);
generate_dot_file("layout_initialise", LAYOUT);
layout_linked_widgets();
@ -1312,7 +1313,7 @@ void twindow_implementation::layout(twindow& window,
DBG_GUI_L << LOG_IMPL_HEADER
<< " Status: Width has been modified, rerun.\n";
window.layout_init(false);
window.layout_initialise(false);
window.layout_linked_widgets();
layout(window, maximum_width, maximum_height);
return;
@ -1499,13 +1500,14 @@ void twindow::signal_handler_request_placement(
* layout property must be set by the engine after validation.
*
* - All visible grid cells; A grid cell is visible when the widget inside
* of it doesn't have the state INVISIBLE. Widgets which are HIDDEN are
* sized properly since when they become VISIBLE the layout shouldn't be
* invalidated. A grid cell that's invisible has size 0,0.
* of it doesn't have the state tvisible::invisible. Widgets which have the
* state @ref tvisible::hidden are sized properly since when they become
* @ref tvisible::visible the layout shouldn't be invalidated. A grid cell
* that's invisible has size 0,0.
*
* - All resizable grid cells; A grid cell is resizable under the following
* conditions:
* - The widget is VISIBLE.
* - The widget is tvisible::visible.
* - The widget is not in a shared size group.
*
* There are two layout algorithms with a different purpose.
@ -1524,7 +1526,7 @@ void twindow::signal_handler_request_placement(
* Here is the algorithm used to layout the window:
*
* - Perform a full initialization
* (@ref gui2::twidget::layout_init (full_initialization = true)):
* (@ref gui2::twidget::layout_initialise (full_initialisation = true)):
* - Clear the internal best size cache for all widgets.
* - For widgets with scrollbars hide them unless the
* @ref gui2::tscrollbar_container::tscrollbar_mode "scrollbar_mode" is
@ -1616,7 +1618,7 @@ void twindow::signal_handler_request_placement(
*
* - Relayout:
* - Initialize all widgets
* (@ref gui2::twidget::layout_init (full_initialization = false))
* (@ref gui2::twidget::layout_initialise (full_initialisation = false))
* - Handle shared sizes, since the reinitialization resets that state.
* - Goto start layout loop.
*

View file

@ -410,7 +410,7 @@ public:
void set_variable(const std::string& key, const variant& value)
{
variables_.add(key, value);
set_dirty();
set_dirty(true);
}
private: