Flutter Windows Embedder
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
flutter::FlutterWindowsView Class Reference

#include <flutter_windows_view.h>

Inheritance diagram for flutter::FlutterWindowsView:
flutter::WindowBindingHandlerDelegate flutter::testing::MockFlutterWindowsView flutter::testing::MockFlutterWindowsView flutter::testing::MockFlutterWindowsView flutter::testing::MockFlutterWindowsView

Public Member Functions

 FlutterWindowsView (FlutterViewId view_id, FlutterWindowsEngine *engine, std::unique_ptr< WindowBindingHandler > window_binding, std::shared_ptr< WindowsProcTable > windows_proc_table=nullptr)
 
virtual ~FlutterWindowsView ()
 
FlutterViewId view_id () const
 
bool IsImplicitView () const
 
void CreateRenderSurface ()
 
egl::WindowSurfacesurface () const
 
virtual HWND GetWindowHandle () const
 
FlutterWindowsEngineGetEngine () const
 
void ForceRedraw ()
 
virtual bool ClearSoftwareBitmap ()
 
virtual bool PresentSoftwareBitmap (const void *allocation, size_t row_bytes, size_t height)
 
FlutterWindowMetricsEvent CreateWindowMetricsEvent () const
 
void SendInitialBounds ()
 
void AnnounceAlert (const std::wstring &text)
 
void OnHighContrastChanged () override
 
bool OnEmptyFrameGenerated ()
 
bool OnFrameGenerated (size_t width, size_t height)
 
virtual void OnFramePresented ()
 
void UpdateFlutterCursor (const std::string &cursor_name)
 
void SetFlutterCursor (HCURSOR cursor)
 
bool OnWindowSizeChanged (size_t width, size_t height) override
 
void OnWindowRepaint () override
 
void OnPointerMove (double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, int modifiers_state) override
 
void OnPointerDown (double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, FlutterPointerMouseButtons button) override
 
void OnPointerUp (double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, FlutterPointerMouseButtons button) override
 
void OnPointerLeave (double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id=0) override
 
virtual void OnPointerPanZoomStart (int32_t device_id) override
 
virtual void OnPointerPanZoomUpdate (int32_t device_id, double pan_x, double pan_y, double scale, double rotation) override
 
virtual void OnPointerPanZoomEnd (int32_t device_id) override
 
void OnText (const std::u16string &) override
 
void OnKey (int key, int scancode, int action, char32_t character, bool extended, bool was_down, KeyEventCallback callback) override
 
void OnFocus (FlutterViewFocusState focus_state, FlutterViewFocusDirection direction) override
 
void OnComposeBegin () override
 
void OnComposeCommit () override
 
void OnComposeEnd () override
 
void OnComposeChange (const std::u16string &text, int cursor_pos) override
 
void OnScroll (double x, double y, double delta_x, double delta_y, int scroll_offset_multiplier, FlutterPointerDeviceKind device_kind, int32_t device_id) override
 
void OnScrollInertiaCancel (int32_t device_id) override
 
virtual void OnUpdateSemanticsEnabled (bool enabled) override
 
virtual gfx::NativeViewAccessible GetNativeViewAccessible () override
 
virtual void OnCursorRectUpdated (const Rect &rect)
 
virtual void OnResetImeComposing ()
 
void OnDwmCompositionChanged ()
 
ui::AXPlatformNodeWin * AlertNode () const
 
virtual ui::AXFragmentRootDelegateWin * GetAxFragmentRootDelegate () override
 
virtual void UpdateSemanticsEnabled (bool enabled)
 
std::weak_ptr< AccessibilityBridgeWindowsaccessibility_bridge ()
 
void OnWindowStateEvent (HWND hwnd, WindowStateEvent event) override
 
virtual bool Focus ()
 

Protected Member Functions

virtual void NotifyWinEventWrapper (ui::AXPlatformNodeWin *node, ax::mojom::Event event)
 
virtual std::shared_ptr< AccessibilityBridgeWindowsCreateAccessibilityBridge ()
 

Friends

class ViewModifier
 

Additional Inherited Members

- Public Types inherited from flutter::WindowBindingHandlerDelegate
using KeyEventCallback = std::function< void(bool)>
 

Detailed Description

Definition at line 34 of file flutter_windows_view.h.

Constructor & Destructor Documentation

◆ FlutterWindowsView()

flutter::FlutterWindowsView::FlutterWindowsView ( FlutterViewId  view_id,
FlutterWindowsEngine engine,
std::unique_ptr< WindowBindingHandler window_binding,
std::shared_ptr< WindowsProcTable windows_proc_table = nullptr 
)

Definition at line 104 of file flutter_windows_view.cc.

109  : view_id_(view_id),
110  engine_(engine),
111  windows_proc_table_(std::move(windows_proc_table)) {
112  if (windows_proc_table_ == nullptr) {
113  windows_proc_table_ = std::make_shared<WindowsProcTable>();
114  }
115 
116  // Take the binding handler, and give it a pointer back to self.
117  binding_handler_ = std::move(window_binding);
118  binding_handler_->SetView(this);
119 }

◆ ~FlutterWindowsView()

flutter::FlutterWindowsView::~FlutterWindowsView ( )
virtual

Definition at line 121 of file flutter_windows_view.cc.

121  {
122  // The view owns the child window.
123  // Notify the engine the view's child window will no longer be visible.
125 
126  if (surface_) {
127  DestroyWindowSurface(*engine_, std::move(surface_));
128  }
129 }

References GetWindowHandle(), flutter::kHide, and flutter::FlutterWindowsEngine::OnWindowStateEvent().

Member Function Documentation

◆ accessibility_bridge()

std::weak_ptr<AccessibilityBridgeWindows> flutter::FlutterWindowsView::accessibility_bridge ( )
inline

Definition at line 246 of file flutter_windows_view.h.

246  {
247  return accessibility_bridge_;
248  }

Referenced by flutter::FlutterWindowsEngine::Run().

◆ AlertNode()

ui::AXPlatformNodeWin * flutter::FlutterWindowsView::AlertNode ( ) const

Definition at line 815 of file flutter_windows_view.cc.

815  {
816  return binding_handler_->GetAlert();
817 }

◆ AnnounceAlert()

void flutter::FlutterWindowsView::AnnounceAlert ( const std::wstring &  text)

Definition at line 794 of file flutter_windows_view.cc.

794  {
795  auto alert_delegate = binding_handler_->GetAlertDelegate();
796  if (!alert_delegate) {
797  return;
798  }
799  alert_delegate->SetText(fml::WideStringToUtf16(text));
800  ui::AXPlatformNodeWin* alert_node = binding_handler_->GetAlert();
801  NotifyWinEventWrapper(alert_node, ax::mojom::Event::kAlert);
802 }

References NotifyWinEventWrapper(), and text.

◆ ClearSoftwareBitmap()

bool flutter::FlutterWindowsView::ClearSoftwareBitmap ( )
virtual

Definition at line 706 of file flutter_windows_view.cc.

706  {
707  return binding_handler_->OnBitmapSurfaceCleared();
708 }

Referenced by flutter::CompositorSoftware::Present().

◆ CreateAccessibilityBridge()

std::shared_ptr< AccessibilityBridgeWindows > flutter::FlutterWindowsView::CreateAccessibilityBridge ( )
protectedvirtual

Definition at line 820 of file flutter_windows_view.cc.

820  {
821  return std::make_shared<AccessibilityBridgeWindows>(this);
822 }

Referenced by UpdateSemanticsEnabled().

◆ CreateRenderSurface()

void flutter::FlutterWindowsView::CreateRenderSurface ( )

Definition at line 725 of file flutter_windows_view.cc.

725  {
726  FML_DCHECK(surface_ == nullptr);
727 
728  if (engine_->egl_manager()) {
729  PhysicalWindowBounds bounds = binding_handler_->GetPhysicalWindowBounds();
730  surface_ = engine_->egl_manager()->CreateWindowSurface(
731  GetWindowHandle(), bounds.width, bounds.height);
732 
733  UpdateVsync(*engine_, surface_.get(), NeedsVsync());
734 
735  resize_target_width_ = bounds.width;
736  resize_target_height_ = bounds.height;
737  }
738 }

References flutter::egl::Manager::CreateWindowSurface(), flutter::FlutterWindowsEngine::egl_manager(), GetWindowHandle(), flutter::PhysicalWindowBounds::height, and flutter::PhysicalWindowBounds::width.

◆ CreateWindowMetricsEvent()

FlutterWindowMetricsEvent flutter::FlutterWindowsView::CreateWindowMetricsEvent ( ) const

Definition at line 389 of file flutter_windows_view.cc.

389  {
390  PhysicalWindowBounds bounds = binding_handler_->GetPhysicalWindowBounds();
391  double pixel_ratio = binding_handler_->GetDpiScale();
392 
393  FlutterWindowMetricsEvent event = {};
394  event.struct_size = sizeof(event);
395  event.width = bounds.width;
396  event.height = bounds.height;
397  event.pixel_ratio = pixel_ratio;
398  event.view_id = view_id_;
399 
400  return event;
401 }

References flutter::PhysicalWindowBounds::height, and flutter::PhysicalWindowBounds::width.

Referenced by SendInitialBounds().

◆ Focus()

bool flutter::FlutterWindowsView::Focus ( )
virtual

Definition at line 844 of file flutter_windows_view.cc.

844  {
845  return binding_handler_->Focus();
846 }

Referenced by flutter::FlutterWindowsEngine::OnViewFocusChangeRequest().

◆ ForceRedraw()

void flutter::FlutterWindowsView::ForceRedraw ( )

Definition at line 187 of file flutter_windows_view.cc.

187  {
188  if (resize_status_ == ResizeState::kDone) {
189  // Request new frame.
190  engine_->ScheduleFrame();
191  }
192 }

References flutter::FlutterWindowsEngine::ScheduleFrame().

Referenced by OnWindowRepaint().

◆ GetAxFragmentRootDelegate()

ui::AXFragmentRootDelegateWin * flutter::FlutterWindowsView::GetAxFragmentRootDelegate ( )
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 811 of file flutter_windows_view.cc.

811  {
812  return accessibility_bridge_.get();
813 }

◆ GetEngine()

FlutterWindowsEngine * flutter::FlutterWindowsView::GetEngine ( ) const

Definition at line 790 of file flutter_windows_view.cc.

790  {
791  return engine_;
792 }

Referenced by flutter::AccessibilityBridgeWindows::DispatchAccessibilityAction(), and FlutterDesktopViewGetGraphicsAdapter().

◆ GetNativeViewAccessible()

gfx::NativeViewAccessible flutter::FlutterWindowsView::GetNativeViewAccessible ( )
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 360 of file flutter_windows_view.cc.

360  {
361  if (!accessibility_bridge_) {
362  return nullptr;
363  }
364 
365  return accessibility_bridge_->GetChildOfAXFragmentRoot();
366 }

◆ GetWindowHandle()

◆ IsImplicitView()

bool flutter::FlutterWindowsView::IsImplicitView ( ) const

Definition at line 721 of file flutter_windows_view.cc.

721  {
722  return view_id_ == kImplicitViewId;
723 }

References flutter::kImplicitViewId.

Referenced by SendInitialBounds().

◆ NotifyWinEventWrapper()

void flutter::FlutterWindowsView::NotifyWinEventWrapper ( ui::AXPlatformNodeWin *  node,
ax::mojom::Event  event 
)
protectedvirtual

Definition at line 804 of file flutter_windows_view.cc.

805  {
806  if (node) {
807  node->NotifyAccessibilityEvent(event);
808  }
809 }

Referenced by AnnounceAlert().

◆ OnComposeBegin()

void flutter::FlutterWindowsView::OnComposeBegin ( )
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 323 of file flutter_windows_view.cc.

323  {
324  SendComposeBegin();
325 }

◆ OnComposeChange()

void flutter::FlutterWindowsView::OnComposeChange ( const std::u16string &  text,
int  cursor_pos 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 335 of file flutter_windows_view.cc.

336  {
337  SendComposeChange(text, cursor_pos);
338 }

References text.

◆ OnComposeCommit()

void flutter::FlutterWindowsView::OnComposeCommit ( )
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 327 of file flutter_windows_view.cc.

327  {
328  SendComposeCommit();
329 }

◆ OnComposeEnd()

void flutter::FlutterWindowsView::OnComposeEnd ( )
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 331 of file flutter_windows_view.cc.

331  {
332  SendComposeEnd();
333 }

◆ OnCursorRectUpdated()

void flutter::FlutterWindowsView::OnCursorRectUpdated ( const Rect rect)
virtual

Definition at line 368 of file flutter_windows_view.cc.

368  {
369  binding_handler_->OnCursorRectUpdated(rect);
370 }

◆ OnDwmCompositionChanged()

void flutter::FlutterWindowsView::OnDwmCompositionChanged ( )

Definition at line 836 of file flutter_windows_view.cc.

836  {
837  UpdateVsync(*engine_, surface_.get(), NeedsVsync());
838 }

◆ OnEmptyFrameGenerated()

bool flutter::FlutterWindowsView::OnEmptyFrameGenerated ( )

Definition at line 131 of file flutter_windows_view.cc.

131  {
132  // Called on the raster thread.
133  std::unique_lock<std::mutex> lock(resize_mutex_);
134 
135  if (surface_ == nullptr || !surface_->IsValid()) {
136  return false;
137  }
138 
139  if (resize_status_ != ResizeState::kResizeStarted) {
140  return true;
141  }
142 
143  if (!ResizeRenderSurface(resize_target_height_, resize_target_width_)) {
144  return false;
145  }
146 
147  // Platform thread is blocked for the entire duration until the
148  // resize_status_ is set to kDone by |OnFramePresented|.
149  resize_status_ = ResizeState::kFrameGenerated;
150  return true;
151 }

◆ OnFocus()

void flutter::FlutterWindowsView::OnFocus ( FlutterViewFocusState  focus_state,
FlutterViewFocusDirection  direction 
)
overridevirtual

Notifies the delegate that the backing window has received or lost focus.

Typically called by currently configured WindowBindingHandler.

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 318 of file flutter_windows_view.cc.

319  {
320  SendFocus(focus_state, direction);
321 }

◆ OnFrameGenerated()

bool flutter::FlutterWindowsView::OnFrameGenerated ( size_t  width,
size_t  height 
)

Definition at line 153 of file flutter_windows_view.cc.

153  {
154  // Called on the raster thread.
155  std::unique_lock<std::mutex> lock(resize_mutex_);
156 
157  if (surface_ == nullptr || !surface_->IsValid()) {
158  return false;
159  }
160 
161  if (resize_status_ != ResizeState::kResizeStarted) {
162  return true;
163  }
164 
165  if (resize_target_width_ != width || resize_target_height_ != height) {
166  return false;
167  }
168 
169  if (!ResizeRenderSurface(resize_target_width_, resize_target_height_)) {
170  return false;
171  }
172 
173  // Platform thread is blocked for the entire duration until the
174  // resize_status_ is set to kDone by |OnFramePresented|.
175  resize_status_ = ResizeState::kFrameGenerated;
176  return true;
177 }

Referenced by flutter::CompositorOpenGL::Present().

◆ OnFramePresented()

void flutter::FlutterWindowsView::OnFramePresented ( )
virtual

Definition at line 673 of file flutter_windows_view.cc.

673  {
674  // Called on the engine's raster thread.
675  std::unique_lock<std::mutex> lock(resize_mutex_);
676 
677  switch (resize_status_) {
678  case ResizeState::kResizeStarted:
679  // The caller must first call |OnFrameGenerated| or
680  // |OnEmptyFrameGenerated| before calling this method. This
681  // indicates one of the following:
682  //
683  // 1. The caller did not call these methods.
684  // 2. The caller ignored these methods' result.
685  // 3. The platform thread started a resize after the caller called these
686  // methods. We might have presented a frame of the wrong size to the
687  // view.
688  return;
689  case ResizeState::kFrameGenerated: {
690  // A frame was generated for a pending resize.
691  resize_status_ = ResizeState::kDone;
692  // Unblock the platform thread.
693  engine_->task_runner()->PostTask([this] {});
694 
695  lock.unlock();
696 
697  // Blocking the raster thread until DWM flushes alleviates glitches where
698  // previous size surface is stretched over current size view.
699  windows_proc_table_->DwmFlush();
700  }
701  case ResizeState::kDone:
702  return;
703  }
704 }

References flutter::TaskRunner::PostTask(), and flutter::FlutterWindowsEngine::task_runner().

Referenced by flutter::CompositorOpenGL::Present().

◆ OnHighContrastChanged()

void flutter::FlutterWindowsView::OnHighContrastChanged ( )
overridevirtual

◆ OnKey()

void flutter::FlutterWindowsView::OnKey ( int  key,
int  scancode,
int  action,
char32_t  character,
bool  extended,
bool  was_down,
KeyEventCallback  callback 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 308 of file flutter_windows_view.cc.

314  {
316 }

References action, callback, character, extended, key, scancode, and was_down.

◆ OnPointerDown()

void flutter::FlutterWindowsView::OnPointerDown ( double  x,
double  y,
FlutterPointerDeviceKind  device_kind,
int32_t  device_id,
FlutterPointerMouseButtons  button 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 254 of file flutter_windows_view.cc.

259  {
260  if (flutter_button != 0) {
261  auto state = GetOrCreatePointerState(device_kind, device_id);
262  state->buttons |= flutter_button;
263  SendPointerDown(x, y, state);
264  }
265 }

◆ OnPointerLeave()

void flutter::FlutterWindowsView::OnPointerLeave ( double  x,
double  y,
FlutterPointerDeviceKind  device_kind,
int32_t  device_id = 0 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 280 of file flutter_windows_view.cc.

283  {
284  SendPointerLeave(x, y, GetOrCreatePointerState(device_kind, device_id));
285 }

◆ OnPointerMove()

void flutter::FlutterWindowsView::OnPointerMove ( double  x,
double  y,
FlutterPointerDeviceKind  device_kind,
int32_t  device_id,
int  modifiers_state 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 245 of file flutter_windows_view.cc.

249  {
250  engine_->keyboard_key_handler()->SyncModifiersIfNeeded(modifiers_state);
251  SendPointerMove(x, y, GetOrCreatePointerState(device_kind, device_id));
252 }

References flutter::FlutterWindowsEngine::keyboard_key_handler(), and flutter::KeyboardHandlerBase::SyncModifiersIfNeeded().

◆ OnPointerPanZoomEnd()

void flutter::FlutterWindowsView::OnPointerPanZoomEnd ( int32_t  device_id)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 300 of file flutter_windows_view.cc.

300  {
301  SendPointerPanZoomEnd(device_id);
302 }

◆ OnPointerPanZoomStart()

void flutter::FlutterWindowsView::OnPointerPanZoomStart ( int32_t  device_id)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 287 of file flutter_windows_view.cc.

287  {
288  PointerLocation point = binding_handler_->GetPrimaryPointerLocation();
289  SendPointerPanZoomStart(device_id, point.x, point.y);
290 }

References flutter::PointerLocation::x, and flutter::PointerLocation::y.

◆ OnPointerPanZoomUpdate()

void flutter::FlutterWindowsView::OnPointerPanZoomUpdate ( int32_t  device_id,
double  pan_x,
double  pan_y,
double  scale,
double  rotation 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 292 of file flutter_windows_view.cc.

296  {
297  SendPointerPanZoomUpdate(device_id, pan_x, pan_y, scale, rotation);
298 }

◆ OnPointerUp()

void flutter::FlutterWindowsView::OnPointerUp ( double  x,
double  y,
FlutterPointerDeviceKind  device_kind,
int32_t  device_id,
FlutterPointerMouseButtons  button 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 267 of file flutter_windows_view.cc.

272  {
273  if (flutter_button != 0) {
274  auto state = GetOrCreatePointerState(device_kind, device_id);
275  state->buttons &= ~flutter_button;
276  SendPointerUp(x, y, state);
277  }
278 }

◆ OnResetImeComposing()

void flutter::FlutterWindowsView::OnResetImeComposing ( )
virtual

Definition at line 372 of file flutter_windows_view.cc.

372  {
373  binding_handler_->OnResetImeComposing();
374 }

◆ OnScroll()

void flutter::FlutterWindowsView::OnScroll ( double  x,
double  y,
double  delta_x,
double  delta_y,
int  scroll_offset_multiplier,
FlutterPointerDeviceKind  device_kind,
int32_t  device_id 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 340 of file flutter_windows_view.cc.

346  {
347  SendScroll(x, y, delta_x, delta_y, scroll_offset_multiplier, device_kind,
348  device_id);
349 }

◆ OnScrollInertiaCancel()

void flutter::FlutterWindowsView::OnScrollInertiaCancel ( int32_t  device_id)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 351 of file flutter_windows_view.cc.

351  {
352  PointerLocation point = binding_handler_->GetPrimaryPointerLocation();
353  SendScrollInertiaCancel(device_id, point.x, point.y);
354 }

References flutter::PointerLocation::x, and flutter::PointerLocation::y.

◆ OnText()

void flutter::FlutterWindowsView::OnText ( const std::u16string &  text)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 304 of file flutter_windows_view.cc.

304  {
305  SendText(text);
306 }

References text.

◆ OnUpdateSemanticsEnabled()

void flutter::FlutterWindowsView::OnUpdateSemanticsEnabled ( bool  enabled)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 356 of file flutter_windows_view.cc.

356  {
357  engine_->UpdateSemanticsEnabled(enabled);
358 }

References flutter::FlutterWindowsEngine::UpdateSemanticsEnabled().

◆ OnWindowRepaint()

void flutter::FlutterWindowsView::OnWindowRepaint ( )
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 241 of file flutter_windows_view.cc.

241  {
242  ForceRedraw();
243 }

References ForceRedraw().

◆ OnWindowSizeChanged()

bool flutter::FlutterWindowsView::OnWindowSizeChanged ( size_t  width,
size_t  height 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 195 of file flutter_windows_view.cc.

195  {
196  if (!engine_->egl_manager()) {
197  SendWindowMetrics(width, height, binding_handler_->GetDpiScale());
198  return true;
199  }
200 
201  if (!surface_ || !surface_->IsValid()) {
202  SendWindowMetrics(width, height, binding_handler_->GetDpiScale());
203  return true;
204  }
205 
206  // We're using OpenGL rendering. Resizing the surface must happen on the
207  // raster thread.
208  bool surface_will_update =
209  SurfaceWillUpdate(surface_->width(), surface_->height(), width, height);
210  if (!surface_will_update) {
211  SendWindowMetrics(width, height, binding_handler_->GetDpiScale());
212  return true;
213  }
214 
215  {
216  std::unique_lock<std::mutex> lock(resize_mutex_);
217  resize_status_ = ResizeState::kResizeStarted;
218  resize_target_width_ = width;
219  resize_target_height_ = height;
220  }
221 
222  SendWindowMetrics(width, height, binding_handler_->GetDpiScale());
223 
224  std::chrono::time_point<std::chrono::steady_clock> start_time =
225  std::chrono::steady_clock::now();
226 
227  while (true) {
228  if (std::chrono::steady_clock::now() > start_time + kWindowResizeTimeout) {
229  return false;
230  }
231  std::unique_lock<std::mutex> lock(resize_mutex_);
232  if (resize_status_ == ResizeState::kDone) {
233  break;
234  }
235  lock.unlock();
236  engine_->task_runner()->PollOnce(kWindowResizeTimeout);
237  }
238  return true;
239 }

References flutter::FlutterWindowsEngine::egl_manager(), flutter::TaskRunner::PollOnce(), and flutter::FlutterWindowsEngine::task_runner().

◆ OnWindowStateEvent()

void flutter::FlutterWindowsView::OnWindowStateEvent ( HWND  hwnd,
WindowStateEvent  event 
)
overridevirtual

Implements flutter::WindowBindingHandlerDelegate.

Definition at line 840 of file flutter_windows_view.cc.

840  {
841  engine_->OnWindowStateEvent(hwnd, event);
842 }

References flutter::FlutterWindowsEngine::OnWindowStateEvent().

◆ PresentSoftwareBitmap()

bool flutter::FlutterWindowsView::PresentSoftwareBitmap ( const void *  allocation,
size_t  row_bytes,
size_t  height 
)
virtual

Definition at line 710 of file flutter_windows_view.cc.

712  {
713  return binding_handler_->OnBitmapSurfaceUpdated(allocation, row_bytes,
714  height);
715 }

Referenced by flutter::CompositorSoftware::Present().

◆ SendInitialBounds()

void flutter::FlutterWindowsView::SendInitialBounds ( )

Definition at line 403 of file flutter_windows_view.cc.

403  {
404  // Non-implicit views' initial window metrics are sent when the view is added
405  // to the engine.
406  if (!IsImplicitView()) {
407  return;
408  }
409 
411 }

References CreateWindowMetricsEvent(), IsImplicitView(), and flutter::FlutterWindowsEngine::SendWindowMetricsEvent().

◆ SetFlutterCursor()

void flutter::FlutterWindowsView::SetFlutterCursor ( HCURSOR  cursor)

Definition at line 183 of file flutter_windows_view.cc.

183  {
184  binding_handler_->SetFlutterCursor(cursor);
185 }

◆ surface()

egl::WindowSurface * flutter::FlutterWindowsView::surface ( ) const

Definition at line 778 of file flutter_windows_view.cc.

778  {
779  return surface_.get();
780 }

Referenced by flutter::CompositorOpenGL::Present().

◆ UpdateFlutterCursor()

void flutter::FlutterWindowsView::UpdateFlutterCursor ( const std::string &  cursor_name)

Definition at line 179 of file flutter_windows_view.cc.

179  {
180  binding_handler_->UpdateFlutterCursor(cursor_name);
181 }

◆ UpdateSemanticsEnabled()

void flutter::FlutterWindowsView::UpdateSemanticsEnabled ( bool  enabled)
virtual

Definition at line 824 of file flutter_windows_view.cc.

824  {
825  if (semantics_enabled_ != enabled) {
826  semantics_enabled_ = enabled;
827 
828  if (!semantics_enabled_ && accessibility_bridge_) {
829  accessibility_bridge_.reset();
830  } else if (semantics_enabled_ && !accessibility_bridge_) {
831  accessibility_bridge_ = CreateAccessibilityBridge();
832  }
833  }
834 }

References CreateAccessibilityBridge().

◆ view_id()

FlutterViewId flutter::FlutterWindowsView::view_id ( ) const

Definition at line 717 of file flutter_windows_view.cc.

717  {
718  return view_id_;
719 }

Friends And Related Function Documentation

◆ ViewModifier

friend class ViewModifier
friend

Definition at line 267 of file flutter_windows_view.h.


The documentation for this class was generated from the following files:
flutter::kImplicitViewId
constexpr FlutterViewId kImplicitViewId
Definition: flutter_windows_engine.h:55
flutter::WindowStateEvent::kHide
@ kHide
scancode
int scancode
Definition: keyboard_key_handler_unittests.cc:115
was_down
bool was_down
Definition: keyboard_key_handler_unittests.cc:119
extended
bool extended
Definition: keyboard_key_handler_unittests.cc:118
flutter::FlutterWindowsEngine::task_runner
TaskRunner * task_runner()
Definition: flutter_windows_engine.h:161
character
char32_t character
Definition: keyboard_key_handler_unittests.cc:117
flutter::TaskRunner::PostTask
void PostTask(TaskClosure task)
Definition: task_runner.cc:88
flutter::FlutterWindowsView::ForceRedraw
void ForceRedraw()
Definition: flutter_windows_view.cc:187
flutter::FlutterWindowsView::IsImplicitView
bool IsImplicitView() const
Definition: flutter_windows_view.cc:721
flutter::FlutterWindowsView::GetWindowHandle
virtual HWND GetWindowHandle() const
Definition: flutter_windows_view.cc:786
text
std::u16string text
Definition: keyboard_unittests.cc:332
flutter::FlutterWindowsEngine::SendWindowMetricsEvent
void SendWindowMetricsEvent(const FlutterWindowMetricsEvent &event)
Definition: flutter_windows_engine.cc:698
flutter::FlutterWindowsView::view_id
FlutterViewId view_id() const
Definition: flutter_windows_view.cc:717
flutter::KeyboardHandlerBase::SyncModifiersIfNeeded
virtual void SyncModifiersIfNeeded(int modifiers_state)=0
flutter::FlutterWindowsEngine::keyboard_key_handler
KeyboardHandlerBase * keyboard_key_handler()
Definition: flutter_windows_engine.h:191
flutter::FlutterWindowsView::NotifyWinEventWrapper
virtual void NotifyWinEventWrapper(ui::AXPlatformNodeWin *node, ax::mojom::Event event)
Definition: flutter_windows_view.cc:804
flutter::FlutterWindowsEngine::ScheduleFrame
void ScheduleFrame()
Definition: flutter_windows_engine.cc:785
flutter::TaskRunner::PollOnce
void PollOnce(std::chrono::milliseconds timeout)
Definition: task_runner.cc:95
flutter::FlutterWindowsEngine::UpdateHighContrastMode
void UpdateHighContrastMode()
Definition: flutter_windows_engine.cc:947
flutter::FlutterWindowsView::CreateAccessibilityBridge
virtual std::shared_ptr< AccessibilityBridgeWindows > CreateAccessibilityBridge()
Definition: flutter_windows_view.cc:820
action
int action
Definition: keyboard_key_handler_unittests.cc:116
flutter::FlutterWindowsEngine::UpdateSemanticsEnabled
void UpdateSemanticsEnabled(bool enabled)
Definition: flutter_windows_engine.cc:912
flutter::FlutterWindowsEngine::egl_manager
egl::Manager * egl_manager() const
Definition: flutter_windows_engine.h:171
key
int key
Definition: keyboard_key_handler_unittests.cc:114
flutter::FlutterWindowsView::CreateWindowMetricsEvent
FlutterWindowMetricsEvent CreateWindowMetricsEvent() const
Definition: flutter_windows_view.cc:389
flutter::FlutterWindowsEngine::OnWindowStateEvent
void OnWindowStateEvent(HWND hwnd, WindowStateEvent event)
Definition: flutter_windows_engine.cc:988
flutter::egl::Manager::CreateWindowSurface
virtual std::unique_ptr< WindowSurface > CreateWindowSurface(HWND hwnd, size_t width, size_t height)
Definition: manager.cc:276
callback
FlutterDesktopBinaryReply callback
Definition: flutter_windows_view_unittests.cc:52