New scroll pane control in the dialog engine

Also:
- Use a scroll pane for the credits in the about dialog, so that new credits can be added without altering other elements
- Use a scroll pane for the list of sections to be deleted in the resize outdoors dialog
- New cContainer superclass for controls that contain other controls
- Scrollbars consider their maximum as part of their state
This commit is contained in:
2015-10-02 17:03:25 -04:00
parent 22e63d898f
commit a455941d92
16 changed files with 419 additions and 23 deletions

View File

@@ -96,7 +96,7 @@ bool rectangle::contains(int x, int y) {
rectangle_size_delegate::rectangle_size_delegate(rectangle& rect, int rectangle::* first, int rectangle::* last) :
forRect(rect), b1(first), b2(last) {}
rectangle_size_delegate::operator int() {
rectangle_size_delegate::operator int() const {
return forRect.*b2 - forRect.*b1;
}
@@ -125,6 +125,26 @@ rectangle_size_delegate& rectangle_size_delegate::operator/=(int val) {
return *this;
}
rectangle_size_delegate& rectangle_size_delegate::operator=(const rectangle_size_delegate& val) {
return operator=(int(val));
}
rectangle_size_delegate& rectangle_size_delegate::operator+=(const rectangle_size_delegate& val) {
return operator+=(int(val));
}
rectangle_size_delegate& rectangle_size_delegate::operator-=(const rectangle_size_delegate& val) {
return operator-=(int(val));
}
rectangle_size_delegate& rectangle_size_delegate::operator*=(const rectangle_size_delegate& val) {
return operator*=(int(val));
}
rectangle_size_delegate& rectangle_size_delegate::operator/=(const rectangle_size_delegate& val) {
return operator/=(int(val));
}
rectangle_size_delegate rectangle::width() {
return rectangle_size_delegate(*this, &rectangle::left, &rectangle::right);
}

View File

@@ -40,12 +40,17 @@ class rectangle_size_delegate {
int rectangle::* b2;
rectangle_size_delegate(rectangle& rect, int rectangle::* first, int rectangle::* last);
public:
operator int();
operator int() const;
rectangle_size_delegate& operator=(int val);
rectangle_size_delegate& operator+=(int val);
rectangle_size_delegate& operator-=(int val);
rectangle_size_delegate& operator*=(int val);
rectangle_size_delegate& operator/=(int val);
rectangle_size_delegate& operator=(const rectangle_size_delegate& val);
rectangle_size_delegate& operator+=(const rectangle_size_delegate& val);
rectangle_size_delegate& operator-=(const rectangle_size_delegate& val);
rectangle_size_delegate& operator*=(const rectangle_size_delegate& val);
rectangle_size_delegate& operator/=(const rectangle_size_delegate& val);
};
struct rectangle {