diff options
| author | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2023-07-16 11:36:26 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2023-07-16 11:36:26 +0200 |
| commit | b27bc692bdb7564f235388350fe1e8fa42e30c88 (patch) | |
| tree | e5ace15c87ddaa0a27bf722f8cdbebfed6c81d36 /itches | |
| parent | 30711eef7044cefeccfe12a8a3d49793b51952aa (diff) | |
| download | memory-leaks-b27bc692bdb7564f235388350fe1e8fa42e30c88.tar.xz | |
Cleanup shift-space demo
Diffstat (limited to 'itches')
| -rw-r--r-- | itches/emacs/pgtk-shift-space.c | 80 |
1 files changed, 31 insertions, 49 deletions
diff --git a/itches/emacs/pgtk-shift-space.c b/itches/emacs/pgtk-shift-space.c index dcfef21..b223098 100644 --- a/itches/emacs/pgtk-shift-space.c +++ b/itches/emacs/pgtk-shift-space.c @@ -2,78 +2,60 @@ #include <gtk/gtk.h> -static gboolean show_key ( - GtkWidget *widget, - GdkEventKey *event, - gpointer data -) { - int mods[] = {GDK_SHIFT_MASK, GDK_CONTROL_MASK, GDK_MOD1_MASK}; - char* mods_names[] = {"shift", "control", "alt"}; - char mods_desc[64] = {'\0'}; - - for (size_t i=0; i<sizeof(mods)/sizeof(mods[0]); i++) - { - if (! (event->state & mods[i])) - continue; - - if (mods_desc[0]) - strcat(mods_desc, ":"); - - strcat(mods_desc, mods_names[i]); - } - if (! mods_desc[0]) - strcpy(mods_desc, "∅"); - - fprintf(stderr, "key pressed: '%d' (mods: %s)\n", event->keyval, mods_desc); - - if (gtk_im_context_filter_keypress ((GtkIMContext*)data, event)) - fprintf(stderr, "\t(handled by gtkim)\n"); - - return TRUE; +static gboolean +show_key (GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + const int mods[] = {GDK_SHIFT_MASK, GDK_CONTROL_MASK, GDK_MOD1_MASK}; + char const * const mods_names[] = {"shift", "control", "alt"}; + + fprintf(stderr, "press:\t'%d'", event->keyval); + + for (size_t i=0; i<sizeof(mods)/sizeof(mods[0]); i++) + if (event->state & mods[i]) + fprintf(stderr, " +%s", mods_names[i]); + + fprintf(stderr, "\n"); + + if (gtk_im_context_filter_keypress (data, event)) + fprintf(stderr, "handled by gtkim\n"); + + fprintf(stderr, "\n"); + + return TRUE; } -static void show_commit ( - GtkIMContext *ctx, - gchar *str, - gpointer data -) { - fprintf(stderr, "\tcommitting: \"%s\"\n", str); +static void +show_commit (GtkIMContext *ctx, gchar *str, gpointer data) +{ + fprintf(stderr, "commit: \"%s\"\n", str); } static void -activate (GtkApplication* app, - gpointer user_data) +activate (GtkApplication *app, gpointer user_data) { GtkWidget *window; window = gtk_application_window_new (app); - gtk_window_set_title (GTK_WINDOW (window), "Window"); + gtk_window_set_title (GTK_WINDOW (window), "GTK key scratchpad"); gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); gtk_widget_show_all (window); GtkIMContext *im_context = gtk_im_context_simple_new(); - gtk_im_context_set_client_window( - im_context, gtk_widget_get_window(window) - ); + gtk_im_context_set_client_window(im_context, gtk_widget_get_window(window)); gtk_widget_add_events (window, GDK_KEY_PRESS_MASK); - g_signal_connect ( - G_OBJECT (window), "key_press_event", G_CALLBACK (show_key), im_context - ); - g_signal_connect ( - im_context, "commit", G_CALLBACK (show_commit), NULL - ); + g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (show_key), im_context); + g_signal_connect (im_context, "commit", G_CALLBACK (show_commit), NULL); } int -main (int argc, - char **argv) +main (int argc, char **argv) { GtkApplication *app; int status; - app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); + app = gtk_application_new ("org.gtk.key-scratchpad", G_APPLICATION_DEFAULT_FLAGS); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); |
