@@ -32,6 +32,7 @@ struct _WindowManagerPlugin {
3232 bool _is_always_on_top = false ;
3333 bool _is_always_on_bottom = false ;
3434 bool _is_dragging = false ;
35+ bool _is_resizing = false ;
3536 gchar* title_bar_style_ = strdup(" normal" );
3637 GdkEventButton _event_button = GdkEventButton{};
3738};
@@ -558,6 +559,7 @@ static FlMethodResponse* start_resizing(WindowManagerPlugin* self,
558559 gtk_window_begin_resize_drag (window, gdk_window_edge,
559560 self->_event_button .button , root_x, root_y,
560561 timestamp);
562+ self->_is_resizing = true ;
561563
562564 g_autoptr (FlValue) result = fl_value_new_bool (true );
563565 return FL_METHOD_RESPONSE (fl_method_success_response_new (result));
@@ -783,6 +785,19 @@ gboolean on_window_draw(GtkWidget* widget, cairo_t* cr, gpointer data) {
783785 return false ;
784786}
785787
788+ void emit_button_release (WindowManagerPlugin* self) {
789+ auto newEvent = (GdkEventButton*)gdk_event_new (GDK_BUTTON_RELEASE);
790+ newEvent->x = self->_event_button .x ;
791+ newEvent->y = self->_event_button .y ;
792+ newEvent->button = self->_event_button .button ;
793+ newEvent->type = GDK_BUTTON_RELEASE;
794+ newEvent->time = g_get_monotonic_time ();
795+ gboolean result;
796+ g_signal_emit_by_name (self->_event_box , " button-release-event" , newEvent,
797+ &result);
798+ gdk_event_free ((GdkEvent*)newEvent);
799+ }
800+
786801gboolean on_event_after (GtkWidget* text_view,
787802 GdkEvent* event,
788803 WindowManagerPlugin* self) {
@@ -792,19 +807,13 @@ gboolean on_event_after(GtkWidget* text_view,
792807 }
793808 if (self->_is_dragging ) {
794809 self->_is_dragging = false ;
795- auto newEvent = (GdkEventButton*)gdk_event_new (GDK_BUTTON_RELEASE);
796- newEvent->x = self->_event_button .x ;
797- newEvent->y = self->_event_button .y ;
798- newEvent->button = self->_event_button .button ;
799- newEvent->type = GDK_BUTTON_RELEASE;
800- newEvent->time = g_get_monotonic_time ();
801- gboolean result;
802- g_signal_emit_by_name (self->_event_box , " button-release-event" , newEvent,
803- &result);
804- gdk_event_free ((GdkEvent*)newEvent);
810+ emit_button_release (self);
811+ }
812+ if (self->_is_resizing ) {
813+ self->_is_resizing = false ;
814+ emit_button_release (self);
805815 }
806816 }
807-
808817 return FALSE ;
809818}
810819
0 commit comments