1+ #include "glib-object.h"
12#include "terminal.h"
23#include <gtk/gtk.h>
34
@@ -48,7 +49,7 @@ static void write_configure_event_once(configure_event *e) {
4849static int idle_count = 0 ;
4950static GtkWidget * inner_size_widget = NULL ;
5051
51- static void on_configure_event (gpointer user_data ) {
52+ static void on_configure_event (gpointer data ) {
5253 int inner_width = gtk_widget_get_width (inner_size_widget );
5354 int inner_height = gtk_widget_get_height (inner_size_widget );
5455 if (inner_width == 0 && inner_height == 0 ) {
@@ -64,25 +65,25 @@ static void on_configure_event(gpointer user_data) {
6465 write_configure_event_once (& e );
6566}
6667
67- static gboolean idle_func (gpointer user_data ) {
68+ static gboolean idle_func (gpointer data ) {
6869 idle_count -- ;
6970 if (idle_count > 0 ) {
7071 return G_SOURCE_CONTINUE ;
7172 }
72- on_configure_event (user_data );
73+ on_configure_event (data );
7374 return G_SOURCE_REMOVE ;
7475}
7576
76- static void size_notify (GObject * self , GParamSpec * pspec , gpointer user_data ) {
77+ static void size_notify (GObject * self , GParamSpec * pspec , gpointer data ) {
7778 if (idle_count <= 0 ) {
78- g_idle_add (idle_func , user_data );
79+ g_idle_add (idle_func , data );
7980 }
8081 idle_count ++ ;
8182}
8283
83- static void adjustment_notify (GtkAdjustment * self , gpointer user_data ) {
84+ static void adjustment_notify (GtkAdjustment * self , gpointer data ) {
8485 if (idle_count <= 0 ) {
85- g_idle_add (idle_func , user_data );
86+ g_idle_add (idle_func , data );
8687 }
8788 idle_count ++ ;
8889}
@@ -100,7 +101,7 @@ typedef struct {
100101_Static_assert (sizeof (keyboard_event ) == 8 , "wrong keyboard_event align" );
101102
102103static gboolean key_pressed (GtkEventControllerKey * self , guint keyval , guint keycode , GdkModifierType state ,
103- gpointer user_data ) {
104+ gpointer data ) {
104105 char command_type = 'k' ;
105106 keyboard_event e ;
106107 e .unicode = gdk_keyval_to_unicode (keyval );
@@ -142,7 +143,7 @@ static int buttonType(int n_press) {
142143static guint32 prev_button_time = 0 ;
143144static GdkEventType prev_button_type = 0 ;
144145
145- static void button_pressed (GtkGestureClick * self , gint n_press , gdouble x , gdouble y , gpointer user_data ) {
146+ static void button_pressed (GtkGestureClick * self , gint n_press , gdouble x , gdouble y , gpointer data ) {
146147 GdkEvent * event = gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (self ));
147148 if (gdk_event_get_time (event ) == prev_button_time && gdk_event_get_event_type (event ) == prev_button_type ) {
148149 return ;
@@ -160,7 +161,7 @@ static void button_pressed(GtkGestureClick *self, gint n_press, gdouble x, gdoub
160161 pipe_event_flush ();
161162}
162163
163- static void button_released (GtkGestureClick * self , gint n_press , gdouble x , gdouble y , gpointer user_data ) {
164+ static void button_released (GtkGestureClick * self , gint n_press , gdouble x , gdouble y , gpointer data ) {
164165 GdkEvent * event = gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (self ));
165166 if (gdk_event_get_time (event ) == prev_button_time && gdk_event_get_event_type (event ) == prev_button_type ) {
166167 return ;
@@ -188,7 +189,7 @@ typedef struct {
188189
189190_Static_assert (sizeof (motion_event ) == 8 , "wrong motion_event align" );
190191
191- static void motion_notify (GtkEventControllerMotion * self , gdouble x , gdouble y , gpointer user_data ) {
192+ static void motion_notify (GtkEventControllerMotion * self , gdouble x , gdouble y , gpointer data ) {
192193 GdkEvent * event = gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (self ));
193194 if (gdk_event_get_time (event ) == prev_button_time && gdk_event_get_event_type (event ) == prev_button_type ) {
194195 return ;
@@ -216,7 +217,7 @@ typedef struct {
216217
217218_Static_assert (sizeof (scroll_event ) == 6 , "wrong scroll_event align" );
218219
219- static gboolean scroll_notify (GtkEventControllerScroll * self , gdouble dx , gdouble dy , gpointer user_data ) {
220+ static gboolean scroll_notify (GtkEventControllerScroll * self , gdouble dx , gdouble dy , gpointer data ) {
220221 char command_type = 's' ;
221222 scroll_event e ;
222223 e .direction = 4 ;
@@ -276,30 +277,51 @@ void set_clipboard(int clipboardtypeid, void *data) {
276277
277278void top_signal_connect () { g_signal_connect (top , "close-request" , G_CALLBACK (on_delete ), NULL ); }
278279
280+ void top_signal_disconnect () { g_signal_handlers_disconnect_by_func (top , G_CALLBACK (on_delete ), NULL ); }
281+
282+ static GtkEventController * keyEventController ;
283+ static GtkGesture * getstureConroller ;
284+ static GtkEventController * motionEventController ;
285+ static GtkEventController * scrollEventController ;
286+
279287void layout_signal_connect (GtkWidget * scrolled , GtkAdjustment * adjustment ) {
280288 inner_size_widget = scrolled ;
281289 g_signal_connect (top , "notify::default-width" , G_CALLBACK (size_notify ), NULL );
282290 g_signal_connect (top , "notify::default-height" , G_CALLBACK (size_notify ), NULL );
283291 g_signal_connect (adjustment , "changed" , G_CALLBACK (adjustment_notify ), NULL );
284292 g_signal_connect (adjustment , "value-changed" , G_CALLBACK (adjustment_notify ), NULL );
285293
286- GtkEventController * keyEventController = gtk_event_controller_key_new ();
294+ keyEventController = gtk_event_controller_key_new ();
287295 g_signal_connect (keyEventController , "key-pressed" , G_CALLBACK (key_pressed ), NULL );
288296 gtk_widget_add_controller (scrolled , keyEventController );
289297
290- GtkGesture * getstureConroller = gtk_gesture_click_new ();
298+ getstureConroller = gtk_gesture_click_new ();
291299 gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (getstureConroller ), 0 );
292300 gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (getstureConroller ), FALSE);
293301 g_signal_connect (getstureConroller , "pressed" , G_CALLBACK (button_pressed ), NULL );
294302 g_signal_connect (getstureConroller , "released" , G_CALLBACK (button_released ), NULL );
295303 g_signal_connect (getstureConroller , "unpaired-release" , G_CALLBACK (button_released ), NULL );
296304 gtk_widget_add_controller (scrolled , GTK_EVENT_CONTROLLER (getstureConroller ));
297305
298- GtkEventController * motionEventController = gtk_event_controller_motion_new ();
306+ motionEventController = gtk_event_controller_motion_new ();
299307 g_signal_connect (motionEventController , "motion" , G_CALLBACK (motion_notify ), NULL );
300308 gtk_widget_add_controller (scrolled , motionEventController );
301309
302- GtkEventController * scrollEventController = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES );
310+ scrollEventController = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES );
303311 g_signal_connect (scrollEventController , "scroll" , G_CALLBACK (scroll_notify ), NULL );
304312 gtk_widget_add_controller (scrolled , scrollEventController );
305313}
314+
315+ void layout_signal_disconnect (GtkWidget * scrolled , GtkAdjustment * adjustment ) {
316+ g_signal_handlers_disconnect_by_func (top , G_CALLBACK (size_notify ), NULL );
317+ g_signal_handlers_disconnect_by_func (adjustment , G_CALLBACK (adjustment_notify ), NULL );
318+
319+ g_signal_handlers_disconnect_by_func (keyEventController , G_CALLBACK (key_pressed ), NULL );
320+
321+ g_signal_handlers_disconnect_by_func (getstureConroller , G_CALLBACK (button_pressed ), NULL );
322+ g_signal_handlers_disconnect_by_func (getstureConroller , G_CALLBACK (button_released ), NULL );
323+
324+ g_signal_handlers_disconnect_by_func (motionEventController , G_CALLBACK (motion_notify ), NULL );
325+
326+ g_signal_handlers_disconnect_by_func (scrollEventController , G_CALLBACK (scroll_notify ), NULL );
327+ }
0 commit comments