diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/callbacks.c | 38 | ||||
-rw-r--r-- | src/callbacks.h | 3 | ||||
-rw-r--r-- | src/camorama-window.c | 7 |
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 } |