bool worksheet::has_active_cell() const { if (!has_view()) return false; auto &primary_view = d_->views_.front(); if (!primary_view.has_selections()) return false; auto primary_selection = primary_view.selection(0); return primary_selection.has_active_cell(); }
void worksheet::unfreeze_panes() { if (!has_view()) return; auto &primary_view = d_->views_.front(); primary_view.clear_selections(); primary_view.clear_pane(); }
static bool has_view(BWindow* win, BView* who) { BView* c; for (int32 i=0; (c=win->ChildAt(i)) != NULL; i++) { if (c == who) return true; bool has = has_view(c, who); if (has) return true; } return false; }
virtual void DetachedFromWindow() { if( IsFocus() ) { BMessage msg(INLINE_ENDFOCUS_MSG); mOwner.SendMessage(&msg); } if( !Window()->DefaultButton() && mDefButton ) { if (has_view(Window(), mDefButton)) { Window()->SetDefaultButton(mDefButton); } } mDefButton = NULL; }
cell_reference worksheet::active_cell() const { if (!has_view()) { throw xlnt::exception("Worksheet has no view."); } auto &primary_view = d_->views_.front(); if (!primary_view.has_selections()) { throw xlnt::exception("Default worksheet view has no selections."); } return primary_view.selection(0).active_cell(); }
void worksheet::active_cell(const cell_reference &ref) { if (!has_view()) { d_->views_.push_back(sheet_view()); } auto &primary_view = d_->views_.front(); if (!primary_view.has_selections()) { primary_view.add_selection(selection(pane_corner::bottom_right, ref)); } else { primary_view.selection(0).active_cell(ref); } }
void worksheet::freeze_panes(const cell_reference &ref) { if (ref == "A1") { unfreeze_panes(); return; } if (!has_view()) { d_->views_.push_back(sheet_view()); } auto &primary_view = d_->views_.front(); if (!primary_view.has_pane()) { primary_view.pane(pane()); } primary_view.pane().top_left_cell = ref; primary_view.pane().state = pane_state::frozen; primary_view.clear_selections(); if (ref.column() == "A") // no column is frozen { primary_view.add_selection(selection(pane_corner::bottom_left, ref)); primary_view.pane().active_pane = pane_corner::bottom_left; primary_view.pane().y_split = ref.row() - 1; } else if (ref.row() == 1) // no row is frozen { primary_view.add_selection(selection(pane_corner::top_right, ref)); primary_view.pane().active_pane = pane_corner::top_right; primary_view.pane().x_split = ref.column_index() - 1; } else // column and row is frozen { primary_view.add_selection(selection(pane_corner::top_right, cell_reference(ref.column(), 1))); primary_view.add_selection(selection(pane_corner::bottom_left, cell_reference(1, ref.row()))); primary_view.add_selection(selection(pane_corner::bottom_right, ref)); primary_view.pane().active_pane = pane_corner::bottom_right; primary_view.pane().x_split = ref.column_index() - 1; primary_view.pane().y_split = ref.row() - 1; } }