added escape key event

This commit is contained in:
2020-04-29 21:17:47 +02:00
parent 4c29ab9b5e
commit e0f79439fb
2 changed files with 15 additions and 2 deletions

View File

@@ -15,5 +15,9 @@ Features:
Building:
1. sudo apt-get install cmake
2. sudo apt-get install libssl-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav libglib2.0-dev libgtk2.0-dev build-essential libgtk-3-dev
3. sudo apt-get install gstreamer1.0-vaapi (For Intel graphics)
3. sudo apt-get install gstreamer1.0-vaapi (For Intel graphics) (If you get Problems like a green screen. Remove this package! It worked for me.)
4. sh install.sh
GTK+ Features:
1. Double click switches between fullscreen mode and normal window.
2. Escape key ends fullscreen mode.

View File

@@ -35,6 +35,7 @@
#include <gst/video/videooverlay.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h> // for GDK_WINDOW_XID
@@ -171,7 +172,7 @@ void configure_callback(GtkWindow *window, GdkEvent *event, gpointer data) {
}
static bool click_callback(GtkWindow *window, GdkEventButton *event, gpointer data) {
static gboolean click_callback(GtkWindow *window, GdkEventButton *event, gpointer data) {
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
@@ -185,9 +186,16 @@ static bool click_callback(GtkWindow *window, GdkEventButton *event, gpointer da
GTK_data->is_fullscreen = true;
}
}
return true;
}
static gboolean on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data) {
if(event->keyval == GDK_KEY_Escape && GTK_data->is_fullscreen) {
gtk_window_unfullscreen((GtkWindow*)GTK_data->app_window);
GTK_data->is_fullscreen = false;
}
}
@@ -262,6 +270,7 @@ int main(int argc, char *argv[]) {
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), "key_press_event", G_CALLBACK (on_key_press), 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);