X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=tests%2Fbarf.c;h=a98b20877392ae8a00c1306027ca1e5aaf142b39;hb=7cbc2c68d146433b1d438d60406ca05e14a523ce;hp=36e51514c7c7e70d2f90c3a62c960ea141c5d941;hpb=250ef3015ce7855be6cc8c05d8ceda607fb7b5c8;p=projects%2Fchimara%2Fchimara.git diff --git a/tests/barf.c b/tests/barf.c index 36e5151..a98b208 100644 --- a/tests/barf.c +++ b/tests/barf.c @@ -13,6 +13,10 @@ static gulong pager_handler = 0; static gulong expose_handler = 0; static gboolean currently_paging = FALSE; +static gint promptwidth, promptheight; +static PangoLayout *prompt; +static GdkColor red, white; + static gboolean quit() { @@ -65,8 +69,8 @@ move_pager_and_get_scroll_distance(GtkTextView *textview) gtk_text_view_get_iter_location(textview, &newpager, &pagerpos); gtk_text_view_get_iter_location(textview, &end, &endpos); - g_printerr("View height = %d\n", visiblerect.height); - g_printerr("End - Pager = %d\n", endpos.y - pagerpos.y); + //g_printerr("View height = %d\n", visiblerect.height); + //g_printerr("End - Pager = %d\n", endpos.y - pagerpos.y); return endpos.y - pagerpos.y; } @@ -144,31 +148,27 @@ pager_wait(GtkTextView *textview, GdkEventKey *event, GtkTextBuffer *buffer) switch (event->keyval) { case GDK_space: case GDK_KP_Space: case GDK_Page_Down: case GDK_KP_Page_Down: gtk_adjustment_set_value(adj, CLAMP(value + page_size, lower, upper - page_size)); - return TRUE; + break; case GDK_Page_Up: case GDK_KP_Page_Up: gtk_adjustment_set_value(adj, CLAMP(value - page_size, lower, upper - page_size)); - return TRUE; + break; case GDK_Return: case GDK_KP_Enter: gtk_adjustment_set_value(adj, CLAMP(value + step_increment, lower, upper - page_size)); - return TRUE; + break; /* don't handle "up" and "down", they're used for input history */ + default: + return FALSE; /* if the key wasn't handled here, pass it to other handlers */ } - - return FALSE; /* if the key wasn't handled here, pass it to other handlers */ + + gdk_window_process_updates(gtk_widget_get_window(GTK_WIDGET(textview)), TRUE); + return TRUE; /* handled it, stop this event now */ } /* Draw the "more" prompt on top of the buffer, after the regular expose event has run */ static gboolean expose_prompt(GtkTextView *textview, GdkEventExpose *event) { - PangoLayout *prompt = gtk_widget_create_pango_layout(GTK_WIDGET(textview), "More"); - gint promptwidth, promptheight; - pango_layout_get_pixel_size(prompt, &promptwidth, &promptheight); - GdkGC *context = gdk_gc_new(GDK_DRAWABLE(event->window)); - GdkColor red, white; - gdk_color_parse("red", &red); - gdk_color_parse("white", &white); gint winx, winy, winwidth, winheight; gdk_window_get_position(event->window, &winx, &winy); @@ -207,6 +207,12 @@ main(int argc, char **argv) /* Set up the textview widget to receive exposure events, must be done after widget has been shown */ gdk_window_set_events(gtk_widget_get_window(textview), GDK_EXPOSURE_MASK); + /* Create the 'more' prompt */ + prompt = gtk_widget_create_pango_layout(GTK_WIDGET(textview), "More"); + pango_layout_get_pixel_size(prompt, &promptwidth, &promptheight); + gdk_color_parse("red", &red); + gdk_color_parse("white", &white); + /* Connect paging signals */ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); g_signal_connect_after(buffer, "insert-text", G_CALLBACK(after_insert), textview); @@ -229,5 +235,7 @@ main(int argc, char **argv) g_signal_connect(button, "clicked", G_CALLBACK(barf), textview); gtk_main(); + + g_object_unref(prompt); return 0; }