Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2023-10-29 14:42:39 +0300
committerwurstsalat <mailtrash@posteo.de>2023-10-29 14:42:43 +0300
commit0d492702e43718d56358c5281b48b39831a2ffdb (patch)
tree5cdbfbbaeb287be9a083908a5a01e76d731324c5
parent2af75b110bf559add945a6f3f83bece56e8078e5 (diff)
fix: VideoPreview: Disable preview on destroy
Fixes #11657
-rw-r--r--gajim/data/gui/video_preview.ui20
-rw-r--r--gajim/gtk/preferences.py2
-rw-r--r--gajim/gtk/video_preview.py17
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: