diff --git a/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp b/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp index 31fffa3da1a..8682c519b8b 100644 --- a/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp +++ b/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp @@ -48,9 +48,9 @@ SpreadsheetWidget::SpreadsheetWidget(GUI::Window& parent_window, NonnullRefPtrVe help_button.set_tooltip("Functions Help"); help_button.set_fixed_size(20, 20); help_button.on_click = [&](auto) { - if (!m_selected_view) { + if (!current_view()) { GUI::MessageBox::show_error(window(), "Can only show function documentation/help when a worksheet exists and is open"); - } else if (auto* sheet_ptr = m_selected_view->sheet_if_available()) { + } else if (auto* sheet_ptr = current_worksheet_if_available()) { auto docs = sheet_ptr->gather_documentation(); auto help_window = HelpWindow::the(window()); help_window->set_docs(move(docs)); @@ -63,7 +63,7 @@ SpreadsheetWidget::SpreadsheetWidget(GUI::Window& parent_window, NonnullRefPtrVe cell_value_editor.set_scrollbars_enabled(false); cell_value_editor.on_return_pressed = [this]() { - m_selected_view->move_cursor(GUI::AbstractView::CursorMovement::Down); + current_view()->move_cursor(GUI::AbstractView::CursorMovement::Down); }; cell_value_editor.set_syntax_highlighter(make()); @@ -260,7 +260,7 @@ void SpreadsheetWidget::setup_tabs(NonnullRefPtrVector new_sheets) window()->set_modified(true); }; new_view.on_selection_changed = [&](Vector&& selection) { - auto* sheet_ptr = m_selected_view->sheet_if_available(); + auto* sheet_ptr = current_worksheet_if_available(); // How did this even happen? VERIFY(sheet_ptr); auto& sheet = *sheet_ptr; @@ -308,7 +308,7 @@ void SpreadsheetWidget::setup_tabs(NonnullRefPtrVector new_sheets) m_cell_value_editor->on_focusout = [this] { m_should_change_selected_cells = false; }; m_cell_value_editor->on_change = [cells = move(cells), this]() mutable { if (m_should_change_selected_cells) { - auto* sheet_ptr = m_selected_view->sheet_if_available(); + auto* sheet_ptr = current_worksheet_if_available(); if (!sheet_ptr) return; auto& sheet = *sheet_ptr; @@ -340,10 +340,6 @@ void SpreadsheetWidget::setup_tabs(NonnullRefPtrVector new_sheets) }; } - m_tab_widget->on_change = [this](auto& selected_widget) { - m_selected_view = &static_cast(selected_widget); - }; - m_tab_widget->on_context_menu_request = [&](auto& widget, auto& event) { m_tab_context_menu_sheet_view = static_cast(widget); m_tab_context_menu->popup(event.screen_position()); @@ -367,14 +363,14 @@ void SpreadsheetWidget::setup_tabs(NonnullRefPtrVector new_sheets) void SpreadsheetWidget::try_generate_tip_for_input_expression(StringView source, size_t cursor_offset) { - auto* sheet_ptr = m_selected_view->sheet_if_available(); + auto* sheet_ptr = current_view()->sheet_if_available(); if (!sheet_ptr) return; auto& sheet = *sheet_ptr; m_inline_documentation_window->set_rect(m_cell_value_editor->screen_relative_rect().translated(0, m_cell_value_editor->height() + 7).inflated(6, 6)); - if (!m_selected_view || !source.starts_with('=')) { + if (!current_view() || !source.starts_with('=')) { m_inline_documentation_window->hide(); return; } diff --git a/Userland/Applications/Spreadsheet/SpreadsheetWidget.h b/Userland/Applications/Spreadsheet/SpreadsheetWidget.h index bac707a3f0e..b21b1031780 100644 --- a/Userland/Applications/Spreadsheet/SpreadsheetWidget.h +++ b/Userland/Applications/Spreadsheet/SpreadsheetWidget.h @@ -9,6 +9,7 @@ #include "SpreadsheetView.h" #include "Workbook.h" #include +#include #include namespace Spreadsheet { @@ -26,18 +27,19 @@ public: void add_sheet(NonnullRefPtr&&); const String& current_filename() const { return m_workbook->current_filename(); } - Sheet* current_worksheet_if_available() { return m_selected_view ? m_selected_view->sheet_if_available() : nullptr; } + SpreadsheetView* current_view() { return static_cast(m_tab_widget->active_widget()); } + Sheet* current_worksheet_if_available() { return current_view() ? current_view()->sheet_if_available() : nullptr; } void update_window_title(); Workbook& workbook() { return *m_workbook; } const Workbook& workbook() const { return *m_workbook; } - const GUI::ModelIndex* current_selection_cursor() const + const GUI::ModelIndex* current_selection_cursor() { - if (!m_selected_view) + if (!current_view()) return nullptr; - return m_selected_view->cursor(); + return current_view()->cursor(); } void initialize_menubar(GUI::Window&); @@ -55,7 +57,6 @@ private: void try_generate_tip_for_input_expression(StringView source, size_t offset); - SpreadsheetView* m_selected_view { nullptr }; RefPtr m_current_cell_label; RefPtr m_cell_value_editor; RefPtr m_inline_documentation_window;