ringmainwindow: refactor fullscreen functions
* move them into CppImpl.
* add toggleFullScreen.
Change-Id: I759195be4618781787c20bd36eb407a9a2a8bfe7
Reviewed-by: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
diff --git a/src/ringmainwindow.cpp b/src/ringmainwindow.cpp
index f7e65a1..2df2cb6 100644
--- a/src/ringmainwindow.cpp
+++ b/src/ringmainwindow.cpp
@@ -130,6 +130,9 @@
void changeView(GType type, lrc::api::conversation::Info conversation = {});
WebKitChatContainer* webkitChatContainer() const;
+ void enterFullScreen();
+ void leaveFullScreen();
+ void toggleFullScreen();
RingMainWindow* self = nullptr; // The GTK widget itself
RingMainWindowPrivate* priv = nullptr;
@@ -173,42 +176,11 @@
ring_init_lrc(RingMainWindow *win, const std::string& accountId);
static void
-enter_full_screen(RingMainWindow *self)
-{
- g_return_if_fail(IS_RING_MAIN_WINDOW(self));
- auto priv = RING_MAIN_WINDOW_GET_PRIVATE(RING_MAIN_WINDOW(self));
-
- if (!priv->cpp->is_fullscreen) {
- gtk_widget_hide(priv->vbox_left_pane);
- gtk_window_fullscreen(GTK_WINDOW(self));
- priv->cpp->is_fullscreen = TRUE;
- }
-}
-
-static void
-leave_full_screen(RingMainWindow *self)
-{
- g_return_if_fail(IS_RING_MAIN_WINDOW(self));
- auto priv = RING_MAIN_WINDOW_GET_PRIVATE(RING_MAIN_WINDOW(self));
-
- if (priv->cpp->is_fullscreen) {
- gtk_widget_show(priv->vbox_left_pane);
- gtk_window_unfullscreen(GTK_WINDOW(self));
- priv->cpp->is_fullscreen = FALSE;
- }
-}
-
-static void
video_double_clicked(RingMainWindow *self)
{
g_return_if_fail(IS_RING_MAIN_WINDOW(self));
- auto priv = RING_MAIN_WINDOW_GET_PRIVATE(RING_MAIN_WINDOW(self));
-
- if (priv->cpp->is_fullscreen) {
- leave_full_screen(self);
- } else {
- enter_full_screen(self);
- }
+ auto* priv = RING_MAIN_WINDOW_GET_PRIVATE(RING_MAIN_WINDOW(self));
+ priv->cpp->toggleFullScreen();
}
static void
@@ -882,7 +854,7 @@
void
CppImpl::changeView(GType type, lrc::api::conversation::Info conversation)
{
- leave_full_screen(self);
+ leaveFullScreen();
gtk_container_remove(GTK_CONTAINER(priv->frame_call),
gtk_bin_get_child(GTK_BIN(priv->frame_call)));
@@ -931,7 +903,8 @@
}
} catch(...) { }
- g_signal_connect_swapped(new_view, "video-double-clicked", G_CALLBACK(video_double_clicked), self);
+ g_signal_connect_swapped(new_view, "video-double-clicked",
+ G_CALLBACK(video_double_clicked), self);
return new_view;
}
@@ -957,6 +930,35 @@
return WEBKIT_CHAT_CONTAINER(priv->webkit_chat_container);
}
+void
+CppImpl::enterFullScreen()
+{
+ if (!is_fullscreen) {
+ gtk_widget_hide(priv->vbox_left_pane);
+ gtk_window_fullscreen(GTK_WINDOW(self));
+ is_fullscreen = true;
+ }
+}
+
+void
+CppImpl::leaveFullScreen()
+{
+ if (is_fullscreen) {
+ gtk_widget_show(priv->vbox_left_pane);
+ gtk_window_unfullscreen(GTK_WINDOW(self));
+ is_fullscreen = false;
+ }
+}
+
+void
+CppImpl::toggleFullScreen()
+{
+ if (is_fullscreen)
+ leaveFullScreen();
+ else
+ enterFullScreen();
+}
+
} // namespace details
//==============================================================================