static gint cb_treeview_button_press (GtkWidget *treeview, GdkEventButton *event, StfDialogData *pagedata) { if (event->type == GDK_BUTTON_PRESS && event->button == 1) { int dx, col; stf_preview_find_column (pagedata->format.renderdata, (int)event->x, &col, &dx); activate_column (pagedata, col); return TRUE; } else if (event->type == GDK_BUTTON_PRESS && event->button == 3) { int dx, col; stf_preview_find_column (pagedata->format.renderdata, (int)event->x, &col, &dx); activate_column (pagedata, col); format_context_menu (pagedata, event, col); return TRUE; } return FALSE; }
static gint cb_treeview_button_press (GtkWidget *treeview, GdkEventButton *event, StfDialogData *pagedata) { if (event->type == GDK_2BUTTON_PRESS && event->button == 1) { int dx, col; stf_preview_find_column (pagedata->fixed.renderdata, (int)event->x, &col, &dx); make_new_column (pagedata, col, dx, FALSE); return TRUE; } if (event->type == GDK_BUTTON_PRESS && event->button == 3) { int dx, col; stf_preview_find_column (pagedata->fixed.renderdata, (int)event->x, &col, &dx); fixed_context_menu (pagedata, event, col, dx); return TRUE; } return FALSE; }
static gboolean cb_treeview_motion (GtkWidget *widget, GdkEventMotion *event, StfDialogData *pagedata) { int x = (int)event->x; int col, dx; RenderData_t *renderdata = pagedata->fixed.renderdata; int old_ruler_x = pagedata->fixed.ruler_x; int colstart, colend, colwidth; gpointer user; pagedata->fixed.ruler_x = -1; /* We get events from the buttons too. Translate x. */ gdk_window_get_user_data (event->window, &user); if (GTK_IS_BUTTON (user)) { int ewx; gdk_window_get_position (event->window, &ewx, NULL); x += ewx; } stf_preview_find_column (renderdata, x, &col, &dx); colstart = (col == 0) ? 0 : stf_parse_options_fixed_splitpositions_nth (pagedata->parseoptions, col - 1); colend = stf_parse_options_fixed_splitpositions_nth (pagedata->parseoptions, col); colwidth = (colend == -1) ? G_MAXINT : colend - colstart; if (col >= 0 && col < renderdata->colcount) { int ci = calc_char_index (renderdata, col, &dx); if (ci <= colwidth) { int padx; GtkCellRenderer *cell = stf_preview_get_cell_renderer (renderdata, col); gtk_cell_renderer_get_padding (cell, &padx, NULL); pagedata->fixed.ruler_x = x - dx + padx; } } gdk_event_request_motions (event); if (pagedata->fixed.ruler_x == old_ruler_x) return FALSE; queue_redraw (widget, old_ruler_x); queue_redraw (widget, pagedata->fixed.ruler_x); return FALSE; }