added escape key event
This commit is contained in:
@@ -15,5 +15,9 @@ Features:
|
|||||||
Building:
|
Building:
|
||||||
1. sudo apt-get install cmake
|
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
|
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
|
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 <gst/video/videooverlay.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
|
||||||
#ifdef GDK_WINDOWING_X11
|
#ifdef GDK_WINDOWING_X11
|
||||||
#include <gdk/gdkx.h> // for GDK_WINDOW_XID
|
#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) {
|
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;
|
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);
|
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->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), "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);
|
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);
|
GTK_data->video_window_xwindow = gtk_widget_get_window (GTK_data->video_window);
|
||||||
|
|||||||
Reference in New Issue
Block a user