En mi caso, estaba tratando de distinguir entre un usuario cambiar el tamaño de un Gtk.Paned del usuario cambiar el tamaño de toda la ventana. Ambos emitieron la señal notify::position
.
Mi solución fue, ya que no puedo saber si el usuario está cambiando el tamaño de la ventana del widget, revertir lo que quería saber. Registre si el usuario ha reubicado el widget e ignore las actualizaciones si el usuario no las inició en mi widget.
Es decir, en lugar de las pruebas "si se cambia el tamaño de la ventana" Grabé las button-press-event
y button-release-event
's a nivel local para que pudiera vez probar 'si widget de ser re-posiciona'
from gi.repository import Gtk
class MyPaned(Gtk.Paned):
_user_activated = False
def on_position(self, _, gparamspec):
if self._user_activated:
# widget touched
else:
# window resized (probably)
def on_button_press(self, *_):
self._user_activated = True
def on_button_release(self, *_):
self._user_activated = False
dev __init__(self, *args):
super(MyPaned, self).__init__(*args)
self.connect('notify::position', self.on_position)
self.connect('button-press-event', self.on_button_press)
self.connect('button-release-event', self.on_button_release)
efectivamente por grabados cuando el usuario comenzó y terminó interactuando directamente con mi widget, pude suponer que el resto del tiempo se debió a que se redimensionó la ventana. (Hasta que encuentre más casos)
¿Has descubierto una forma de hacerlo? – clahey
No. Si lo hago, aparecerá aquí. –