added escape key event
This commit is contained in:
@@ -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.
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user