From 6fbdb46d375ef148ea0b7d2acbeb1ca1c92c642a Mon Sep 17 00:00:00 2001 From: Hielke Morsink <123mannetje@gmail.com> Date: Sun, 17 Apr 2016 00:55:56 +0200 Subject: [PATCH] Enabling and disabling the rotation button based on selected element type. --- src/windows/tile_inspector.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/windows/tile_inspector.c b/src/windows/tile_inspector.c index 59ff30d8d9..af9fe897f5 100644 --- a/src/windows/tile_inspector.c +++ b/src/windows/tile_inspector.c @@ -420,7 +420,7 @@ static void window_tile_inspector_scrollgetsize(rct_window *w, int scrollIndex, static void window_tile_inspector_auto_set_buttons(rct_window *w) { - // Map element buttons + // Remove button if (w->selected_list_item == -1) { // Check if anything is selected w->disabled_widgets |= (1ULL << WIDX_REMOVE) | (1 << WIDX_ROTATE); w->enabled_widgets &= ~((1ULL << WIDX_REMOVE) | (1 << WIDX_ROTATE)); @@ -429,6 +429,24 @@ static void window_tile_inspector_auto_set_buttons(rct_window *w) w->enabled_widgets |= (1ULL << WIDX_REMOVE) | (1 << WIDX_ROTATE); } widget_invalidate(w, WIDX_REMOVE); + + // Rotate button + rct_map_element *mapElement = map_get_first_element_at(window_tile_inspector_tile_x, window_tile_inspector_tile_y); + mapElement += w->selected_list_item; + switch (map_element_get_type(mapElement)) { + case MAP_ELEMENT_TYPE_PATH: + case MAP_ELEMENT_TYPE_TRACK: + case MAP_ELEMENT_TYPE_SCENERY: + case MAP_ELEMENT_TYPE_ENTRANCE: + case MAP_ELEMENT_TYPE_FENCE: + w->enabled_widgets |= (1 << WIDX_ROTATE); + w->disabled_widgets &= ~(1 << WIDX_ROTATE); + break; + default: + w->disabled_widgets |= (1 << WIDX_ROTATE); + w->enabled_widgets &= ~(1 << WIDX_ROTATE); + break; + } widget_invalidate(w, WIDX_ROTATE); // Move Up button