Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite18cfda

Browse files
committed
FIX: Add version gate to GTK4 calls when necessary
get_current_event() calls within pygobject would cause segfaults. Thiswas fixed in 3.47, so gate the guiEvent information to only accessthat method in versions that don't segfault.
1 parentdc63ec7 commite18cfda

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

‎lib/matplotlib/backends/backend_gtk4.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
TimerGTKasTimerGTK4,
3030
)
3131

32+
_GOBJECT_GE_3_47=gi.version_info>= (3,47,0)
33+
3234

3335
classFigureCanvasGTK4(_FigureCanvasGTK,Gtk.DrawingArea):
3436
required_interactive_framework="gtk4"
@@ -115,7 +117,7 @@ def scroll_event(self, controller, dx, dy):
115117
MouseEvent(
116118
"scroll_event",self,*self._mpl_coords(),step=dy,
117119
modifiers=self._mpl_modifiers(controller),
118-
guiEvent=controller.get_current_event(),
120+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
119121
)._process()
120122
returnTrue
121123

@@ -124,7 +126,7 @@ def button_press_event(self, controller, n_press, x, y):
124126
"button_press_event",self,*self._mpl_coords((x,y)),
125127
controller.get_current_button(),
126128
modifiers=self._mpl_modifiers(controller),
127-
guiEvent=controller.get_current_event(),
129+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
128130
)._process()
129131
self.grab_focus()
130132

@@ -133,22 +135,22 @@ def button_release_event(self, controller, n_press, x, y):
133135
"button_release_event",self,*self._mpl_coords((x,y)),
134136
controller.get_current_button(),
135137
modifiers=self._mpl_modifiers(controller),
136-
guiEvent=controller.get_current_event(),
138+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
137139
)._process()
138140

139141
defkey_press_event(self,controller,keyval,keycode,state):
140142
KeyEvent(
141143
"key_press_event",self,self._get_key(keyval,keycode,state),
142144
*self._mpl_coords(),
143-
guiEvent=controller.get_current_event(),
145+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
144146
)._process()
145147
returnTrue
146148

147149
defkey_release_event(self,controller,keyval,keycode,state):
148150
KeyEvent(
149151
"key_release_event",self,self._get_key(keyval,keycode,state),
150152
*self._mpl_coords(),
151-
guiEvent=controller.get_current_event(),
153+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
152154
)._process()
153155
returnTrue
154156

@@ -157,21 +159,21 @@ def motion_notify_event(self, controller, x, y):
157159
"motion_notify_event",self,*self._mpl_coords((x,y)),
158160
buttons=self._mpl_buttons(controller),
159161
modifiers=self._mpl_modifiers(controller),
160-
guiEvent=controller.get_current_event(),
162+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
161163
)._process()
162164

163165
defenter_notify_event(self,controller,x,y):
164166
LocationEvent(
165167
"figure_enter_event",self,*self._mpl_coords((x,y)),
166168
modifiers=self._mpl_modifiers(),
167-
guiEvent=controller.get_current_event(),
169+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
168170
)._process()
169171

170172
defleave_notify_event(self,controller):
171173
LocationEvent(
172174
"figure_leave_event",self,*self._mpl_coords(),
173175
modifiers=self._mpl_modifiers(),
174-
guiEvent=controller.get_current_event(),
176+
guiEvent=controller.get_current_event()if_GOBJECT_GE_3_47elseNone,
175177
)._process()
176178

177179
defresize_event(self,area,width,height):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp