Change I/O signals to pass a unique window ID
[projects/chimara/chimara.git] / libchimara / input.c
index 3a4babf2dedf24e5f63f1e7254bb3bf5b57a9c3b..7a7521455cf172ee5d87f9d4f1663a25e534530e 100644 (file)
@@ -5,7 +5,7 @@
 #include "chimara-glk-private.h"
 #include "garglk.h"
 
-extern GPrivate *glk_data_key;
+extern GPrivate glk_data_key;
 
 /* Forward declarations */
 static int finish_text_buffer_line_input(winid_t win, gboolean emit_signal);
@@ -41,7 +41,7 @@ request_char_event_common(winid_t win, gboolean unicode)
        gdk_threads_leave();
 
        /* Emit the "waiting" signal to let listeners know we are ready for input */
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
        g_signal_emit_by_name(glk_data->self, "waiting");
 }
 
@@ -143,10 +143,7 @@ text_grid_request_line_event_common(winid_t win, glui32 maxlen, gboolean insert,
        gtk_entry_set_has_frame(GTK_ENTRY(win->input_entry), FALSE);
        GtkBorder border = { 0, 0, 0, 0 };
 
-       /* COMPAT: */
-#if GTK_CHECK_VERSION(2,10,0)
        gtk_entry_set_inner_border(GTK_ENTRY(win->input_entry), &border);
-#endif
     gtk_entry_set_max_length(GTK_ENTRY(win->input_entry), win->input_length);
     gtk_entry_set_width_chars(GTK_ENTRY(win->input_entry), win->input_length);
 
@@ -250,7 +247,7 @@ glk_request_line_event(winid_t win, char *buf, glui32 maxlen, glui32 initlen)
 
        cancel_old_input_request(win);
 
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
 
        /* Register the buffer */
        if(glk_data->register_arr)
@@ -323,7 +320,7 @@ glk_request_line_event_uni(winid_t win, glui32 *buf, glui32 maxlen, glui32 initl
        g_return_if_fail(initlen <= maxlen);
 
        cancel_old_input_request(win);
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
 
        /* Register the buffer */
        if(glk_data->register_arr)
@@ -407,7 +404,7 @@ glk_cancel_line_event(winid_t win, event_t *event)
        }
        gdk_threads_leave();
 
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
        if(glk_data->unregister_arr)
        {
                if(win->input_request_type == INPUT_REQUEST_LINE_UNICODE)
@@ -444,10 +441,10 @@ on_shutdown_key_press_event(GtkWidget *widget, GdkEventKey *event, winid_t win)
                g_node_traverse(priv->root_window, G_IN_ORDER, G_TRAVERSE_LEAVES, -1, (GNodeTraverseFunc)turn_off_handler, NULL);
        
        /* Signal the Glk library that it can shut everything down now */
-       g_mutex_lock(priv->shutdown_lock);
-       g_cond_signal(priv->shutdown_key_pressed);
-       g_mutex_unlock(priv->shutdown_lock);
-       
+       g_mutex_lock(&priv->shutdown_lock);
+       g_cond_signal(&priv->shutdown_key_pressed);
+       g_mutex_unlock(&priv->shutdown_lock);
+
        return TRUE; /* block the event */
 }
 
@@ -469,7 +466,7 @@ on_char_input_key_press_event(GtkWidget *widget, GdkEventKey *event, winid_t win
        ChimaraGlk *glk = CHIMARA_GLK(gtk_widget_get_ancestor(widget, CHIMARA_TYPE_GLK));
        g_assert(glk);
        event_throw(glk, evtype_CharInput, win, keycode, 0);
-       g_signal_emit_by_name(glk, "char-input", win->rock, event->keyval);
+       g_signal_emit_by_name(glk, "char-input", win->rock, win->librock, event->keyval);
 
        /* Only one keypress will be handled */
        win->input_request_type = INPUT_REQUEST_NONE;
@@ -690,7 +687,7 @@ finish_text_buffer_line_input(winid_t win, gboolean emit_signal)
        {
                ChimaraGlk *glk = CHIMARA_GLK(gtk_widget_get_ancestor(win->widget, CHIMARA_TYPE_GLK));
                g_assert(glk);
-               g_signal_emit_by_name(glk, "line-input", win->rock, inserted_text);
+               g_signal_emit_by_name(glk, "line-input", win->rock, win->librock, inserted_text);
        }
 
        /* Add the text to the window input history */
@@ -745,7 +742,7 @@ finish_text_grid_line_input(winid_t win, gboolean emit_signal)
     {
                ChimaraGlk *glk = CHIMARA_GLK(gtk_widget_get_ancestor(win->widget, CHIMARA_TYPE_GLK));
                g_assert(glk);
-               g_signal_emit_by_name(glk, "line-input", win->rock, text);
+               g_signal_emit_by_name(glk, "line-input", win->rock, win->librock, text);
     }
 
        /* Add the text to the window input history */
@@ -919,7 +916,7 @@ keyval_to_glk_keycode(guint keyval, gboolean unicode)
 void
 force_char_input_from_queue(winid_t win, event_t *event)
 {
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
        guint keyval = GPOINTER_TO_UINT(g_async_queue_pop(glk_data->char_input_queue));
 
        glk_cancel_char_event(win);
@@ -927,7 +924,7 @@ force_char_input_from_queue(winid_t win, event_t *event)
        gdk_threads_enter();
        ChimaraGlk *glk = CHIMARA_GLK(gtk_widget_get_ancestor(win->widget, CHIMARA_TYPE_GLK));
        g_assert(glk);
-       g_signal_emit_by_name(glk, "char-input", win->rock, keyval);
+       g_signal_emit_by_name(glk, "char-input", win->rock, win->librock, keyval);
        gdk_threads_leave();
 
        event->type = evtype_CharInput;
@@ -939,7 +936,7 @@ force_char_input_from_queue(winid_t win, event_t *event)
 void
 force_line_input_from_queue(winid_t win, event_t *event)
 {
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
        const gchar *text = g_async_queue_pop(glk_data->line_input_queue);
        glui32 chars_written = 0;