From 161ff9ecc9be47e9016ef5e347d347f7a336765b Mon Sep 17 00:00:00 2001 From: Thomas White Date: Tue, 14 Jan 2020 23:12:18 +0100 Subject: Add space for timing ruler --- libstorycode/gtk/gtknarrativeview.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'libstorycode/gtk/gtknarrativeview.c') diff --git a/libstorycode/gtk/gtknarrativeview.c b/libstorycode/gtk/gtknarrativeview.c index dbb5514..1787eac 100644 --- a/libstorycode/gtk/gtknarrativeview.c +++ b/libstorycode/gtk/gtknarrativeview.c @@ -40,6 +40,7 @@ #include "gtknarrativeview.h" #include "narrative_priv.h" +#include "timing_ruler.h" static void scroll_interface_init(GtkScrollable *iface) @@ -145,7 +146,7 @@ static void rewrap_range(GtkNarrativeView *e, int min, int max) static void update_size(GtkNarrativeView *e) { - e->w = e->visible_width; + e->w = e->visible_width - e->ruler_width; e->h = narrative_get_height(e->n); set_vertical_params(e); @@ -158,7 +159,7 @@ static gboolean gtknv_resize_sig(GtkWidget *widget, GdkEventConfigure *event, { e->visible_height = event->height; e->visible_width = event->width; - e->w = e->visible_width; + e->w = e->visible_width - e->ruler_width; rewrap_range(e, 0, e->n->n_items-1); @@ -518,6 +519,10 @@ static gboolean gtknv_draw_sig(GtkWidget *da, cairo_t *cr, GtkNarrativeView *e) cairo_translate(cr, -e->h_scroll_pos, -e->scroll_pos); + /* Space for ruler */ + cairo_save(cr); + cairo_translate(cr, e->ruler_width, 0.0); + /* Rendering background */ cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0); cairo_rectangle(cr, 0.0, 0.0, e->w, e->h); @@ -532,6 +537,10 @@ static gboolean gtknv_draw_sig(GtkWidget *da, cairo_t *cr, GtkNarrativeView *e) cairo_translate(cr, e->n->space_l, e->n->space_t); gtknv_draw_overlay(cr, e); + /* Timing ruler */ + cairo_restore(cr); + draw_ruler(cr, e); + return FALSE; } @@ -899,7 +908,7 @@ static gboolean gtknv_button_press_sig(GtkWidget *da, GdkEventButton *event, { gdouble x, y; - x = event->x; + x = event->x - e->ruler_width; y = event->y + e->scroll_pos; /* Clicked an existing frame, no immediate dragging */ @@ -941,7 +950,7 @@ static gboolean gtknv_motion_sig(GtkWidget *da, GdkEventMotion *event, struct edit_pos old_sel_end; int minp, maxp; - x = event->x; + x = event->x - e->ruler_width; y = event->y + e->scroll_pos; if ( e->drag_status == NARRATIVE_DRAG_STATUS_COULD_DRAG ) { @@ -1210,6 +1219,7 @@ GtkWidget *gtk_narrative_view_new(Narrative *n) nview->n = n; nview->rewrap_needed = 0; nview->para_highlight = 0; + nview->ruler_width = 100.0; gtk_widget_set_size_request(GTK_WIDGET(nview), nview->w, nview->h); -- cgit v1.2.3