X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpspp-sheet-view.c;h=d474566788be2ebed8b010fee8ab970c5ec83649;hb=2d2a7bf72aaf1f117faeaddb207108463561302f;hp=6144237a586b97cd22fb5fa94e07be4a7646f927;hpb=4dcc1f5b560d0fd07990c1c86deee42708a89ad0;p=pspp diff --git a/src/ui/gui/pspp-sheet-view.c b/src/ui/gui/pspp-sheet-view.c index 6144237a58..d474566788 100644 --- a/src/ui/gui/pspp-sheet-view.c +++ b/src/ui/gui/pspp-sheet-view.c @@ -1477,10 +1477,9 @@ pspp_sheet_view_realize (GtkWidget *widget) attributes.height = allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK; - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; + attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; gtk_widget_set_window (widget, gdk_window_new (gtk_widget_get_parent_window (widget), @@ -3749,10 +3748,11 @@ invalidate_empty_focus (PsppSheetView *tree_view) * is empty. */ static void -draw_empty_focus (PsppSheetView *tree_view, GdkRectangle *clip_area) +draw_empty_focus (PsppSheetView *tree_view) { GtkWidget *widget = GTK_WIDGET (tree_view); gint w, h; + cairo_t *cr = gdk_cairo_create (tree_view->priv->bin_window); if (!gtk_widget_has_focus (widget)) return; @@ -3765,12 +3765,12 @@ draw_empty_focus (PsppSheetView *tree_view, GdkRectangle *clip_area) if (w > 0 && h > 0) gtk_paint_focus (gtk_widget_get_style (widget), - tree_view->priv->bin_window, + cr, gtk_widget_get_state (widget), - clip_area, widget, NULL, 1, 1, w, h); + cairo_destroy (cr); } static void @@ -3852,6 +3852,16 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, gint min_y, max_y; cairo_t *cr = gdk_cairo_create (event->window); + cairo_t *bwcr = gdk_cairo_create (tree_view->priv->bin_window); + GdkRectangle Zarea; + GtkAllocation allocation; + gtk_widget_get_allocation (widget, &allocation); + + Zarea.x = 0; + Zarea.y = 0; + Zarea.width = gdk_window_get_width (event->window); + Zarea.height = allocation.height; + rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); gtk_widget_style_get (widget, @@ -3864,19 +3874,19 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, if (tree_view->priv->row_count == 0) { - draw_empty_focus (tree_view, &event->area); + draw_empty_focus (tree_view); return TRUE; } #if GTK3_TRANSITION /* clip event->area to the visible area */ - if (event->area.height < 0.5) + if (Zarea.height < 0.5) return TRUE; #endif validate_visible_area (tree_view); - new_y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, event->area.y); + new_y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, Zarea.y); if (new_y < 0) new_y = 0; @@ -3891,10 +3901,9 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, if (tree_view->priv->height < bin_window_height) { gtk_paint_flat_box (gtk_widget_get_style (widget), - event->window, + cr, gtk_widget_get_state (widget), GTK_SHADOW_NONE, - &event->area, widget, "cell_even", 0, tree_view->priv->height, @@ -3976,7 +3985,7 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, cell_offset = 0; - background_area.y = y_offset + event->area.y; + background_area.y = y_offset + Zarea.y; background_area.height = max_height; max_y = background_area.y + max_height; @@ -4027,12 +4036,14 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, else selected_column = TRUE; - if (cell_offset > event->area.x + event->area.width || - cell_offset + column->width < event->area.x) +#if GTK3_TRANSITION + if (cell_offset > Zarea.x + Zarea.width || + cell_offset + column->width < Zarea.x) { cell_offset += column->width; continue; } +#endif if (selected && selected_column) flags |= GTK_CELL_RENDERER_SELECTED; @@ -4165,10 +4176,9 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, g_snprintf (new_detail, 128, "%s_middle", detail); gtk_paint_flat_box (gtk_widget_get_style (widget), - event->window, + cr, state, GTK_SHADOW_NONE, - &event->area, widget, new_detail, background_area.x, @@ -4179,10 +4189,9 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, else { gtk_paint_flat_box (gtk_widget_get_style (widget), - event->window, + cr, state, GTK_SHADOW_NONE, - &event->area, widget, detail, background_area.x, @@ -4211,7 +4220,7 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, #endif } - if (y_offset + max_height >= event->area.height - 0.5) + if (y_offset + max_height >= Zarea.height - 0.5) { #if GTK3_TRANSITION gdk_draw_line (event->window, @@ -4230,10 +4239,9 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, } _pspp_sheet_view_column_cell_render (column, - event->window, + cr, &background_area, &cell_area, - &event->area, flags); if (node == cursor && has_special_cell && @@ -4243,28 +4251,26 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, (column == tree_view->priv->edited_column))) { _pspp_sheet_view_column_cell_draw_focus (column, - event->window, + cr, &background_area, &cell_area, - &event->area, flags); } cell_offset += column->width; } - if (cell_offset < event->area.x) + if (cell_offset < Zarea.x) { gtk_paint_flat_box (gtk_widget_get_style (widget), - event->window, + cr, GTK_STATE_NORMAL, GTK_SHADOW_NONE, - &event->area, widget, "base", cell_offset, background_area.y, - event->area.x - cell_offset, + Zarea.x - cell_offset, background_area.height); } @@ -4298,9 +4304,8 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, if (row_ending_details) gtk_paint_focus (gtk_widget_get_style (widget), - tree_view->priv->bin_window, + bwcr, gtk_widget_get_state (widget), - &event->area, widget, (is_first ? (is_last ? "treeview-drop-indicator" : "treeview-drop-indicator-left" ) @@ -4311,9 +4316,8 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, - focus_line_width + 1); else gtk_paint_focus (gtk_widget_get_style (widget), - tree_view->priv->bin_window, + bwcr, gtk_widget_get_state (widget), - &event->area, widget, "treeview-drop-indicator", 0, BACKGROUND_FIRST_PIXEL (tree_view, node) @@ -4366,9 +4370,8 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, if (row_ending_details) gtk_paint_focus (gtk_widget_get_style (widget), - tree_view->priv->bin_window, + bwcr, focus_rect_state, - &event->area, widget, (is_first ? (is_last ? "treeview" : "treeview-left" ) @@ -4377,9 +4380,8 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, width, tmp_height); else gtk_paint_focus (gtk_widget_get_style (widget), - tree_view->priv->bin_window, + bwcr, focus_rect_state, - &event->area, widget, "treeview", 0, tmp_y, @@ -4404,7 +4406,7 @@ pspp_sheet_view_bin_expose (GtkWidget *widget, } while (!done); } - while (y_offset < event->area.height); + while (y_offset < Zarea.height); done: pspp_sheet_view_draw_vertical_grid_lines (tree_view, cr, n_visible_columns, @@ -4471,10 +4473,9 @@ pspp_sheet_view_expose (GtkWidget *widget, GList *list; gtk_paint_flat_box (gtk_widget_get_style (widget), - event->window, + cr, GTK_STATE_NORMAL, GTK_SHADOW_NONE, - &event->area, widget, "cell_odd", event->area.x, @@ -7693,9 +7694,8 @@ _pspp_sheet_view_column_start_drag (PsppSheetView *tree_view, attributes.width = column->allocation.width; attributes.height = column->allocation.height; attributes.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view)); - attributes.colormap = gtk_widget_get_colormap (GTK_WIDGET (tree_view)); attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK | GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK; - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; + attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL ; tree_view->priv->drag_window = gdk_window_new (tree_view->priv->bin_window, &attributes, @@ -7727,7 +7727,9 @@ _pspp_sheet_view_column_start_drag (PsppSheetView *tree_view, send_event->button.axes = NULL; send_event->button.state = 0; send_event->button.button = 1; - send_event->button.device = gdk_display_get_core_pointer (display); + send_event->button.device = + gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (display)); + send_event->button.x_root = 0; send_event->button.y_root = 0; @@ -12527,7 +12529,7 @@ pspp_sheet_view_event (GtkWidget *widget, gtk_tree_path_free (path); handled = gtk_binding_set_activate (edit_bindings, keyval, event->state, - GTK_OBJECT (tree_view)); + G_OBJECT (tree_view)); if (handled) g_signal_stop_emission_by_name (widget, "event");