@@ -366,6 +366,24 @@ static FlMethodResponse* start_dragging(WindowManagerPlugin* self) {
366366 fl_method_success_response_new (fl_value_new_bool (true )));
367367}
368368
369+ static FlMethodResponse* get_primary_display (WindowManagerPlugin* self,
370+ FlValue* args) {
371+ GdkDisplay* display = gdk_display_get_default ();
372+ GdkMonitor* monitor = gdk_display_get_primary_monitor (display);
373+
374+ GdkRectangle frame;
375+ gdk_monitor_get_geometry (monitor, &frame);
376+
377+ auto size = fl_value_new_map ();
378+ fl_value_set_string_take (size, " width" , fl_value_new_float (frame.width ));
379+ fl_value_set_string_take (size, " height" , fl_value_new_float (frame.height ));
380+
381+ g_autoptr (FlValue) value = fl_value_new_map ();
382+ fl_value_set_take (value, fl_value_new_string (" size" ), size);
383+
384+ return FL_METHOD_RESPONSE (fl_method_success_response_new (value));
385+ }
386+
369387// Called when a method call is received from Flutter.
370388static void window_manager_plugin_handle_method_call (
371389 WindowManagerPlugin* self,
@@ -445,6 +463,8 @@ static void window_manager_plugin_handle_method_call(
445463 response = set_skip_taskbar (self, args);
446464 } else if (strcmp (method, " startDragging" ) == 0 ) {
447465 response = start_dragging (self);
466+ } else if (strcmp (method, " getPrimaryDisplay" ) == 0 ) {
467+ response = get_primary_display (self, args);
448468 } else {
449469 response = FL_METHOD_RESPONSE (fl_method_not_implemented_response_new ());
450470 }
0 commit comments