Adjust scenario editor scroll bar size/positioning.

FIxes #772
This commit is contained in:
2025-08-02 01:10:54 -04:00
parent e9212db929
commit 3bb416b1e4
4 changed files with 33 additions and 9 deletions

View File

@@ -87,6 +87,10 @@ void cScrollbar::setWheelEventRect(rectangle rect) {
this->wheel_event_rect = rect;
}
rectangle cScrollbar::getWheelEventRect() const {
return wheel_event_rect;
}
long cScrollbar::getPosition() const {
return pos;
}

View File

@@ -125,6 +125,7 @@ public:
/// @param newStyle The new style.
void setStyle(eScrollStyle newStyle);
void setWheelEventRect(rectangle);
rectangle getWheelEventRect() const;
virtual void draw() override;
virtual bool handle_event(const sf::Event&) override;
/// @copydoc cControl::getSupportedHandlers

View File

@@ -3062,6 +3062,12 @@ void start_town_edit() {
shut_down_menus(2);
right_sbar->hide();
pal_sbar->show();
rectangle pal_rect = pal_sbar->getWheelEventRect();
pal_rect.height() = 1 + TYPE_ROWS_DRAWING * 17;
pal_sbar->setWheelEventRect(pal_rect);
pal_rect = pal_sbar->getBounds();
pal_rect.height() = 1 + TYPE_ROWS_DRAWING * 17;
pal_sbar->setBounds(pal_rect);
set_string("Drawing mode",scenario.ter_types[current_terrain_type].name);
place_location();
// TODO this is hardcoding cave floor and grass as the only ground terrains
@@ -3107,6 +3113,12 @@ void start_out_edit() {
set_up_type_buttons(true);
right_sbar->hide();
pal_sbar->show();
rectangle pal_rect = pal_sbar->getWheelEventRect();
pal_rect.height() = 1 + TYPE_ROWS_DRAWING * 17;
pal_sbar->setWheelEventRect(pal_rect);
pal_rect = pal_sbar->getBounds();
pal_rect.height() = 1 + TYPE_ROWS_DRAWING * 17;
pal_sbar->setBounds(pal_rect);
shut_down_menus(4);
shut_down_menus(1);
set_string("Drawing mode",scenario.ter_types[current_terrain_type].name);
@@ -3125,6 +3137,12 @@ void start_out_edit() {
void start_type_editing(eDrawMode mode) {
right_sbar->hide();
pal_sbar->show();
rectangle pal_rect = pal_sbar->getWheelEventRect();
pal_rect.height() = terrain_buttons_rect.height();
pal_sbar->setWheelEventRect(pal_rect);
pal_rect = pal_sbar->getBounds();
pal_rect.height() = terrain_buttons_rect.height();
pal_sbar->setBounds(pal_rect);
overall_mode = MODE_EDIT_TYPES;
// Remember non-drawing modes
scenario.editor_state.overall_mode = MODE_EDIT_TYPES;

View File

@@ -232,20 +232,21 @@ static void init_sbar(std::shared_ptr<cScrollbar>& sbar, const std::string& name
}
static void init_scrollbars() {
right_sbar_rect.top = RIGHT_AREA_UL_Y - 1;
right_sbar_rect.top = RIGHT_AREA_UL_Y;
right_sbar_rect.left = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1 - 16;
right_sbar_rect.bottom = RIGHT_AREA_UL_Y + RIGHT_AREA_HEIGHT + 1;
right_sbar_rect.bottom = RIGHT_AREA_UL_Y + RIGHT_AREA_HEIGHT;
right_sbar_rect.right = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1;
rectangle pal_sbar_rect = terrain_buttons_rect;
pal_sbar_rect.offset(RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y);
pal_sbar_rect.left = pal_sbar_rect.right - 16;
pal_sbar_rect.height() = 17 * 16;
rectangle const right_sbar_event_rect { 5, 287, 405, 577 };
rectangle const pal_sbar_event_rect { 5, 287, 279, 581 };
rectangle right_sbar_event_rect;
right_sbar_event_rect.top = RIGHT_AREA_UL_Y;
right_sbar_event_rect.left = RIGHT_AREA_UL_X;
right_sbar_event_rect.width() = RIGHT_AREA_WIDTH;
right_sbar_event_rect.height() = RIGHT_AREA_HEIGHT;
init_sbar(right_sbar, "right_sbar", right_sbar_rect, right_sbar_event_rect, NRSONPAGE - 1);
init_sbar(pal_sbar, "pal_sbar", pal_sbar_rect, pal_sbar_event_rect, 16);
init_sbar(pal_sbar, "pal_sbar", pal_sbar_rect, terrain_buttons_rect, 16);
}
static void init_search_field() {
@@ -377,13 +378,13 @@ void init_scened(int argc, char* argv[]) {
cen_x = 18;
cen_y = 18;
Set_up_win();
init_scrollbars();
init_search_field();
init_lb();
init_rb();
Set_up_win();
init_screen_locs();
load_graphics();
cDialog::init();