void BTextWidget::CheckAndUpdate(BPoint loc, const BColumn *column, BPoseView *view, bool visible) { BRect oldRect; if (view->ViewMode() != kListMode) oldRect = CalcOldRect(loc, column, view); if (fText->CheckAttributeChanged() && fText->CheckViewChanged(view) && visible) { BRect invalRect(ColumnRect(loc, column, view)); if (view->ViewMode() != kListMode) invalRect = invalRect | oldRect; view->Invalidate(invalRect); } }
void BTextWidget::StopEdit(bool saveChanges, BPoint poseLoc, BPoseView* view, BPose* pose, int32 poseIndex) { // find the text editing view BView* scrollView = view->FindView("BorderView"); ASSERT(scrollView != NULL); if (scrollView == NULL) return; BTextView* textView = dynamic_cast<BTextView*>( scrollView->FindView("WidgetTextView")); ASSERT(textView != NULL); if (textView == NULL) return; BColumn* column = view->ColumnFor(fAttrHash); ASSERT(column != NULL); if (column == NULL) return; if (saveChanges && fText->CommitEditedText(textView)) { // we have an actual change, re-sort view->CheckPoseSortOrder(pose, poseIndex); } // make text widget visible again SetVisible(true); view->Invalidate(ColumnRect(poseLoc, column, view)); // force immediate redraw so TEView disappears scrollView->RemoveSelf(); delete scrollView; ASSERT(view->Window() != NULL); view->Window()->UpdateIfNeeded(); view->MakeFocus(); SetActive(false); }