| 436 | } |
| 437 | |
| 438 | void ContentWidget::refreshSearchField(bool shown) { |
| 439 | auto search = _controller->searchFieldController(); |
| 440 | if (search && shown) { |
| 441 | auto rowView = search->createRowView( |
| 442 | this, |
| 443 | st::infoLayerMediaSearch); |
| 444 | _searchWrap = std::move(rowView.wrap); |
| 445 | _searchField = rowView.field; |
| 446 | |
| 447 | const auto view = _searchWrap.get(); |
| 448 | widthValue( |
| 449 | ) | rpl::on_next([=](int newWidth) { |
| 450 | view->resizeToWidth(newWidth); |
| 451 | view->moveToLeft(0, 0); |
| 452 | }, view->lifetime()); |
| 453 | view->show(); |
| 454 | _searchField->setFocus(); |
| 455 | setScrollTopSkip(view->heightNoMargins() - st::lineWidth); |
| 456 | } else if (_searchWrap) { |
| 457 | if (Ui::InFocusChain(this)) { |
| 458 | setFocus(); |
| 459 | } |
| 460 | _searchWrap = nullptr; |
| 461 | setScrollTopSkip(0); |
| 462 | } |
| 463 | } |
| 464 | |
| 465 | int ContentWidget::scrollBottomSkip() const { |
| 466 | return _scrollBottomSkip.current(); |
nothing calls this directly
no test coverage detected