diff --git a/airplayServer.cpp b/airplayServer.cpp index 405a8fb..dad66cd 100755 --- a/airplayServer.cpp +++ b/airplayServer.cpp @@ -70,6 +70,7 @@ struct GTK_STRUCT { GdkWindow *video_window_xwindow; gulong embed_xid; cairo_surface_t *surface = NULL; + bool is_fullscreen = false; }; static GTK_STRUCT * GTK_data = NULL; @@ -169,6 +170,27 @@ void configure_callback(GtkWindow *window, GdkEvent *event, gpointer data) { gtk_widget_queue_draw(GTK_data->video_window); } + +static bool click_callback(GtkWindow *window, GdkEventButton *event, gpointer data) { + + + if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { + printf("Double clicked!"); + + if(GTK_data->is_fullscreen) { + gtk_window_unfullscreen((GtkWindow*)GTK_data->app_window); + GTK_data->is_fullscreen = false; + } else { + gtk_window_fullscreen((GtkWindow*)GTK_data->app_window); + GTK_data->is_fullscreen = true; + } + } + + + + +} + int main(int argc, char *argv[]) { init_signals(); @@ -235,8 +257,11 @@ int main(int argc, char *argv[]) { //gtk_widget_set_double_buffered (GTK_data->video_window, FALSE); gtk_container_add (GTK_CONTAINER (GTK_data->app_window), GTK_data->video_window); gtk_widget_show_all (GTK_data->app_window); + gtk_widget_add_events(GTK_data->app_window, GDK_BUTTON_PRESS_MASK); gtk_widget_realize (GTK_data->video_window); + gtk_widget_realize (GTK_data->app_window); g_signal_connect (G_OBJECT (GTK_data->video_window), "draw",G_CALLBACK (draw_callback), NULL); + g_signal_connect (G_OBJECT (GTK_data->app_window), "button-press-event" ,G_CALLBACK (click_callback), NULL); g_signal_connect(G_OBJECT(GTK_data->app_window), "configure-event", G_CALLBACK(configure_callback), NULL); GTK_data->video_window_xwindow = gtk_widget_get_window (GTK_data->video_window);