static gulong expose_handler = 0;
static gboolean currently_paging = FALSE;
+static gint promptwidth, promptheight;
+static PangoLayout *prompt;
+static GdkColor red, white;
+
static gboolean
quit()
{
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;
}
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);
/* 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);
g_signal_connect(button, "clicked", G_CALLBACK(barf), textview);
gtk_main();
+
+ g_object_unref(prompt);
return 0;
}