void TFilePanel::SetButtonLabel(file_panel_button selector, const char* text) { switch (selector) { case B_CANCEL_BUTTON: { BButton* button = dynamic_cast<BButton*>(FindView("cancel button")); if (button == NULL) break; float old_width = button->StringWidth(button->Label()); button->SetLabel(text); float delta = old_width - button->StringWidth(text); if (delta) { button->MoveBy(delta, 0); button->ResizeBy(-delta, 0); } } break; case B_DEFAULT_BUTTON: { fButtonText = text; float delta = 0; BButton* button = dynamic_cast<BButton*>(FindView("default button")); if (button != NULL) { float old_width = button->StringWidth(button->Label()); button->SetLabel(text); delta = old_width - button->StringWidth(text); if (delta) { button->MoveBy(delta, 0); button->ResizeBy(-delta, 0); } } // now must move cancel button button = dynamic_cast<BButton*>(FindView("cancel button")); if (button != NULL) button->MoveBy(delta, 0); } break; } }