diff options
author | wurstsalat <mailtrash@posteo.de> | 2023-10-29 14:42:39 +0300 |
---|---|---|
committer | wurstsalat <mailtrash@posteo.de> | 2023-10-29 14:42:43 +0300 |
commit | 0d492702e43718d56358c5281b48b39831a2ffdb (patch) | |
tree | 5cdbfbbaeb287be9a083908a5a01e76d731324c5 | |
parent | 2af75b110bf559add945a6f3f83bece56e8078e5 (diff) |
fix: VideoPreview: Disable preview on destroy
Fixes #11657
-rw-r--r-- | gajim/data/gui/video_preview.ui | 20 | ||||
-rw-r--r-- | gajim/gtk/preferences.py | 2 | ||||
-rw-r--r-- | gajim/gtk/video_preview.py | 17 |
3 files changed, 23 insertions, 16 deletions
diff --git a/gajim/data/gui/video_preview.ui b/gajim/data/gui/video_preview.ui index 89561beec..6d8acb0c5 100644 --- a/gajim/data/gui/video_preview.ui +++ b/gajim/data/gui/video_preview.ui @@ -1,17 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.2 --> +<!-- Generated with glade 3.40.0 --> <interface> - <requires lib="gtk+" version="3.20"/> + <requires lib="gtk+" version="3.24"/> <object class="GtkBox" id="video_preview_box"> - <property name="height_request">250</property> + <property name="height-request">250</property> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkLabel" id="video_source_label"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> </object> <packing> <property name="expand">False</property> @@ -25,14 +27,14 @@ <child> <object class="GtkBox" id="video_preview_placeholder"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="vexpand">True</property> <property name="orientation">vertical</property> <child> <object class="GtkImage"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">camera-web-symbolic</property> + <property name="can-focus">False</property> + <property name="icon-name">camera-web-symbolic</property> <property name="icon_size">6</property> <style> <class name="dim-label"/> @@ -47,7 +49,7 @@ <child> <object class="GtkLabel"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="label" translatable="yes">Live Preview</property> <style> <class name="dim-label"/> diff --git a/gajim/gtk/preferences.py b/gajim/gtk/preferences.py index 86b86bbd5..1dd658c92 100644 --- a/gajim/gtk/preferences.py +++ b/gajim/gtk/preferences.py @@ -125,7 +125,7 @@ class Preferences(Gtk.ApplicationWindow): def _add_video_preview(self) -> None: self._video_preview = VideoPreview() - self._ui.video.add(self._video_preview.widget) + self._ui.video.add(self._video_preview) def _on_key_press(self, _widget: Gtk.Widget, event: Gdk.EventKey) -> None: if event.keyval == Gdk.KEY_Escape: diff --git a/gajim/gtk/video_preview.py b/gajim/gtk/video_preview.py index 6a5fdfd65..87a8b7bee 100644 --- a/gajim/gtk/video_preview.py +++ b/gajim/gtk/video_preview.py @@ -12,6 +12,7 @@ # You should have received a copy of the GNU General Public License # along with Gajim. If not, see <http://www.gnu.org/licenses/>. +from __future__ import annotations import logging @@ -33,10 +34,9 @@ except Exception: log = logging.getLogger('gajim.gtk.preview') -class VideoPreview: +class VideoPreview(Gtk.Box): def __init__(self) -> None: - - self._ui = get_builder('video_preview.ui') + Gtk.Box.__init__(self) self._active = False @@ -45,9 +45,14 @@ class VideoPreview: self._av_sink: Gst.Element | None = None self._av_widget: Gtk.Widget | None = None - @property - def widget(self) -> Gtk.Box: - return self._ui.video_preview_box + self._ui = get_builder('video_preview.ui') + self.add(self._ui.video_preview_box) + self.show_all() + + self.connect('destroy', self._on_destroy) + + def _on_destroy(self, widget: VideoPreview) -> None: + self._disable_preview() @property def is_active(self) -> bool: |