Created
July 7, 2016 23:51
-
-
Save anderflash/b9cffe559f3981e3fc63e9e0d4eb63ac to your computer and use it in GitHub Desktop.
A Minimum Working Example (MWE) of failure of press event in GTK+3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <gtk/gtk.h> | |
static gboolean | |
press_event(GtkWidget* widget, GdkEvent* event, gpointer user_data){ | |
printf("Hello\n"); | |
return FALSE; | |
} | |
static gboolean | |
release_event(GtkWidget* widget, GdkEvent* event, gpointer user_data){ | |
printf("World\n"); | |
return FALSE; | |
} | |
static gboolean | |
clicked_event(GtkWidget* widget, GdkEvent* event, gpointer user_data){ | |
printf("!\n"); | |
return FALSE; | |
} | |
static void | |
activate(GtkApplication* app, gpointer user_data){ | |
GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
GtkWidget* toolbar = gtk_toolbar_new(); | |
GtkWidget* left = GTK_WIDGET(gtk_tool_button_new(NULL,"left")); | |
GtkWidget* box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); | |
gtk_widget_add_events(left, GDK_BUTTON_PRESS_MASK); | |
gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0); | |
gtk_container_add(GTK_CONTAINER(window), box); | |
gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(left),0); | |
g_signal_connect(left,"button-press-event",G_CALLBACK(press_event),NULL); | |
g_signal_connect(left,"button-release-event",G_CALLBACK(release_event),NULL); | |
g_signal_connect(left,"clicked",G_CALLBACK(clicked_event),NULL); | |
g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL); | |
gtk_widget_show_all(window); | |
gtk_main(); | |
} | |
int main(int argc, char const *argv[]) | |
{ | |
// Common routine for setting up a GTK+ application | |
GtkApplication* app = gtk_application_new("io.github.atkv",G_APPLICATION_FLAGS_NONE); | |
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); | |
int status = g_application_run(G_APPLICATION(app),argc, (char**)argv); | |
g_object_unref(app); | |
return status; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Compiles with
$ gcc test_gtk_press_event.c -o test_gtk_press_event `pkg-config --libs --cflags gtk+-3.0` $ ./test_gtk_press_event
If I click fast, the press event happens, but in a normal speed, it does not.