aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/callbacks.c38
-rw-r--r--src/callbacks.h3
-rw-r--r--src/camorama-window.c7
3 files changed, 47 insertions, 1 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index b4ee1bf..603351c 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -353,7 +353,7 @@ static void get_geometry(cam_t *cam, unsigned int *width, unsigned int *height)
#endif
}
-gboolean on_configure_event(GtkMenuItem *menuitem, GdkEvent *event, cam_t *cam)
+gboolean on_configure_event(GtkMenuItem *menuitem, GdkEvent *event, cam_t *cam)
{
#if GTK_MAJOR_VERSION >= 3
GtkWidget *da = GTK_WIDGET(gtk_builder_get_object(cam->xml, "da"));
@@ -386,6 +386,42 @@ gboolean on_configure_event(GtkMenuItem *menuitem, GdkEvent *event, cam_t *cam)
return FALSE;
}
+gboolean on_window_state_event(GtkMenuItem *menuitem,
+ GdkEventWindowState *event, cam_t *cam)
+{
+#if GTK_MAJOR_VERSION >= 3
+ if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) {
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem3")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4")));
+ gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(cam->xml, "hbox31")));
+ gtk_widget_hide(cam->status);
+ } else {
+ gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem3")));
+ gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(cam->xml, "menuitem4")));
+ gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(cam->xml, "hbox31")));
+ gtk_widget_show(cam->status);
+ }
+#endif
+
+ return GDK_EVENT_PROPAGATE;
+}
+
+void toggle_fullscreen(GtkWidget *widget, cam_t *cam)
+{
+ GdkWindowState state;
+ GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(cam->xml,
+ "main_window"));
+
+ state = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window)));
+
+ if (state & GDK_WINDOW_STATE_FULLSCREEN) {
+ gtk_window_unfullscreen(GTK_WINDOW(window));
+ } else {
+ gtk_window_fullscreen(GTK_WINDOW(window));
+ }
+}
+
+
void set_image_scale(cam_t *cam)
{
float f;
diff --git a/src/callbacks.h b/src/callbacks.h
index 4f11587..a23df4d 100644
--- a/src/callbacks.h
+++ b/src/callbacks.h
@@ -18,6 +18,8 @@ G_BEGIN_DECLS
void on_change_size_activate(GtkWidget * widget, cam_t *cam);
void on_quit_activate(GtkMenuItem *menuitem, cam_t *cam);
gboolean on_configure_event(GtkMenuItem *menuitem, GdkEvent *event, cam_t *cam);
+gboolean on_window_state_event(GtkMenuItem *menuitem,
+ GdkEventWindowState *event, cam_t *cam);
int delete_event(GtkWidget *, gpointer data);
void cap_func(GtkWidget *, cam_t *);
void rcap_func(GtkWidget *, cam_t *);
@@ -48,6 +50,7 @@ gboolean delete_event_prefs_window(GtkWidget *widget, GdkEvent *event,
cam_t *cam);
void capture_func2(GtkWidget *, cam_t *);
void capture_func(GtkWidget *, cam_t *);
+void toggle_fullscreen(GtkWidget *, cam_t *);
gint timeout_capture_func(cam_t *);
gint fps(GtkWidget *);
gint timeout_func(cam_t *);
diff --git a/src/camorama-window.c b/src/camorama-window.c
index 8f05d78..7e69e36 100644
--- a/src/camorama-window.c
+++ b/src/camorama-window.c
@@ -516,5 +516,12 @@ void load_interface(cam_t *cam)
// Detect window resize calls
g_signal_connect(GTK_WIDGET(gtk_builder_get_object(cam->xml, "da")),
"configure-event", G_CALLBACK(on_configure_event), cam);
+ g_signal_connect(window, "window-state-event",
+ G_CALLBACK(on_window_state_event), cam);
+
+ g_signal_connect(gtk_builder_get_object(cam->xml, "button3"),
+ "clicked", G_CALLBACK(toggle_fullscreen), cam);
+ g_signal_connect(gtk_builder_get_object(cam->xml, "imagemenuitem2"),
+ "activate", G_CALLBACK(toggle_fullscreen), cam);
#endif
}

Privacy Policy