X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtk-contrib%2Fpsppire-sheet.c;h=8122eba99967fbef89b17c4c04363820449763e8;hb=524932d8d25d51ca1d0c6993ec9f36014073b3d9;hp=e9dfdcf87c8403e0f0c158a767d17c8490835bc1;hpb=42710eca56d40ba44bd80e52b42d4883b59291c0;p=pspp-builds.git diff --git a/lib/gtk-contrib/psppire-sheet.c b/lib/gtk-contrib/psppire-sheet.c index e9dfdcf8..8122eba9 100644 --- a/lib/gtk-contrib/psppire-sheet.c +++ b/lib/gtk-contrib/psppire-sheet.c @@ -54,8 +54,6 @@ #include #include -#include -#include #include #include #include @@ -72,8 +70,6 @@ #include #include -#include - /* sheet flags */ enum { @@ -85,9 +81,7 @@ enum of making a selection - ie while the mouse button is depressed. */ - PSPPIRE_SHEET_IN_SELECTION = 1 << 4, - - PSPPIRE_SHEET_IN_RESIZE = 1 << 5 + PSPPIRE_SHEET_IN_SELECTION = 1 << 4 }; #define PSPPIRE_SHEET_FLAGS(sheet) (PSPPIRE_SHEET (sheet)->flags) @@ -98,7 +92,6 @@ enum #define PSPPIRE_SHEET_IN_YDRAG(sheet) (PSPPIRE_SHEET_FLAGS (sheet) & PSPPIRE_SHEET_IN_YDRAG) #define PSPPIRE_SHEET_IN_DRAG(sheet) (PSPPIRE_SHEET_FLAGS (sheet) & PSPPIRE_SHEET_IN_DRAG) #define PSPPIRE_SHEET_IN_SELECTION(sheet) (PSPPIRE_SHEET_FLAGS (sheet) & PSPPIRE_SHEET_IN_SELECTION) -#define PSPPIRE_SHEET_IN_RESIZE(sheet) (PSPPIRE_SHEET_FLAGS (sheet) & PSPPIRE_SHEET_IN_RESIZE) #define CELL_SPACING 1 @@ -855,7 +848,7 @@ psppire_sheet_class_init (PsppireSheetClass *klass) /** * PsppireSheet::select-row * @sheet: the sheet widget that emitted the signal - * @row: the newly selected row index + * @row: the newly selected row index, or -1 if no row is selected. * * A row has been selected. */ @@ -874,7 +867,7 @@ psppire_sheet_class_init (PsppireSheetClass *klass) /** * PsppireSheet::select - column * @sheet: the sheet widget that emitted the signal - * @column: the newly selected column index + * @column: the newly selected column index, or -1 if no column is selected. * * A column has been selected. */ @@ -2260,17 +2253,6 @@ draw_sheet_region (PsppireSheet *sheet, GdkRegion *region) psppire_sheet_show_entry_widget (sheet); } - - -static inline gint -safe_strcmp (const gchar *s1, const gchar *s2) -{ - if ( !s1 && !s2) return 0; - if ( !s1) return -1; - if ( !s2) return +1; - return strcmp (s1, s2); -} - static void psppire_sheet_set_cell (PsppireSheet *sheet, gint row, gint col, GtkJustification justification, @@ -2292,7 +2274,7 @@ psppire_sheet_set_cell (PsppireSheet *sheet, gint row, gint col, old_text = psppire_sheet_model_get_string (model, row, col); - if (0 != safe_strcmp (old_text, text)) + if (0 != g_strcmp0 (old_text, text)) { g_signal_handler_block (sheet->model, sheet->update_handler_id); psppire_sheet_model_set_string (model, text, row, col); @@ -2700,6 +2682,8 @@ psppire_sheet_select_row (PsppireSheet *sheet, gint row) area.y++; gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); + + g_signal_emit (sheet, sheet_signals [SELECT_ROW], 0, row); } void @@ -2716,6 +2700,8 @@ psppire_sheet_select_column (PsppireSheet *sheet, gint column) area.y++; gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); + + g_signal_emit (sheet, sheet_signals [SELECT_COLUMN], 0, column); } @@ -2743,7 +2729,10 @@ psppire_sheet_unselect_range (PsppireSheet *sheet) rectangle_from_range (sheet, &sheet->range, &area); area.x++; area.y++; - gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); + gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); + + g_signal_emit (sheet, sheet_signals [SELECT_COLUMN], 0, -1); + g_signal_emit (sheet, sheet_signals [SELECT_ROW], 0, -1); } void @@ -3123,27 +3112,6 @@ psppire_sheet_button_release (GtkWidget *widget, psppire_sheet_select_range (sheet, &sheet->range); } - if (PSPPIRE_SHEET_IN_RESIZE (sheet)) - { - PsppireSheetRange old_range; - draw_xor_rectangle (sheet, sheet->drag_range); - PSPPIRE_SHEET_UNSET_FLAGS (sheet, PSPPIRE_SHEET_IN_RESIZE); - gdk_display_pointer_ungrab (display, event->time); - - psppire_sheet_unselect_range (sheet); - - old_range = sheet->range; - sheet->range = sheet->drag_range; - sheet->drag_range = old_range; - - if (sheet->select_status == PSPPIRE_SHEET_NORMAL) - sheet->select_status = PSPPIRE_SHEET_RANGE_SELECTED; - - g_signal_emit (sheet, sheet_signals[RESIZE_RANGE], 0, - &sheet->drag_range, &sheet->range); - psppire_sheet_select_range (sheet, &sheet->range); - } - if (PSPPIRE_SHEET_IN_SELECTION (sheet)) { PSPPIRE_SHEET_UNSET_FLAGS (sheet, PSPPIRE_SHEET_IN_SELECTION); @@ -3416,7 +3384,6 @@ psppire_sheet_motion (GtkWidget *widget, GdkEventMotion *event) !POSSIBLE_DRAG (sheet, x, y, &row, &column) && !PSPPIRE_SHEET_IN_DRAG (sheet) && !POSSIBLE_RESIZE (sheet, x, y, &row, &column) && - !PSPPIRE_SHEET_IN_RESIZE (sheet) && new_cursor != sheet->cursor_drag->type) { gdk_cursor_unref (sheet->cursor_drag); @@ -3426,8 +3393,7 @@ psppire_sheet_motion (GtkWidget *widget, GdkEventMotion *event) new_cursor = GDK_TOP_LEFT_ARROW; if ( event->window == sheet->sheet_window && - ! (POSSIBLE_RESIZE (sheet, x, y, &row, &column) || - PSPPIRE_SHEET_IN_RESIZE (sheet)) && + ! (POSSIBLE_RESIZE (sheet, x, y, &row, &column) ) && (POSSIBLE_DRAG (sheet, x, y, &row, &column) || PSPPIRE_SHEET_IN_DRAG (sheet)) && new_cursor != sheet->cursor_drag->type) @@ -3492,80 +3458,6 @@ psppire_sheet_motion (GtkWidget *widget, GdkEventMotion *event) return TRUE; } - if (PSPPIRE_SHEET_IN_RESIZE (sheet)) - { - PsppireSheetRange aux; - gint v_h, current_col, current_row, col_threshold, row_threshold; - v_h = 1; - if (abs (x - psppire_axis_start_pixel (sheet->haxis, sheet->drag_cell.col)) > - abs (y - psppire_axis_start_pixel (sheet->vaxis, sheet->drag_cell.row))) v_h = 2; - - current_col = column_from_xpixel (sheet, x); - current_row = row_from_ypixel (sheet, y); - column = current_col - sheet->drag_cell.col; - row = current_row - sheet->drag_cell.row; - - /*use half of column width resp. row height as threshold to - expand selection*/ - col_threshold = psppire_axis_start_pixel (sheet->haxis, current_col) + - psppire_axis_unit_size (sheet->haxis, current_col) / 2; - if (column > 0) - { - if (x < col_threshold) - column -= 1; - } - else if (column < 0) - { - if (x > col_threshold) - column +=1; - } - row_threshold = psppire_axis_start_pixel (sheet->vaxis, current_row) + - psppire_axis_unit_size (sheet->vaxis, current_row)/2; - if (row > 0) - { - if (y < row_threshold) - row -= 1; - } - else if (row < 0) - { - if (y > row_threshold) - row +=1; - } - - if (sheet->select_status == PSPPIRE_SHEET_COLUMN_SELECTED) row = 0; - if (sheet->select_status == PSPPIRE_SHEET_ROW_SELECTED) column = 0; - sheet->x_drag = x; - sheet->y_drag = y; - aux = sheet->range; - - if (v_h == 1) - column = 0; - else - row = 0; - - if (aux.row0 + row >= 0 && aux.rowi + row < psppire_axis_unit_count (sheet->vaxis) && - aux.col0 + column >= 0 && aux.coli + column < psppire_axis_unit_count (sheet->haxis)) - { - aux = sheet->drag_range; - sheet->drag_range = sheet->range; - - if (row < 0) sheet->drag_range.row0 = sheet->range.row0 + row; - if (row > 0) sheet->drag_range.rowi = sheet->range.rowi + row; - if (column < 0) sheet->drag_range.col0 = sheet->range.col0 + column; - if (column > 0) sheet->drag_range.coli = sheet->range.coli + column; - - if (aux.row0 != sheet->drag_range.row0 || - aux.rowi != sheet->drag_range.rowi || - aux.col0 != sheet->drag_range.col0 || - aux.coli != sheet->drag_range.coli) - { - draw_xor_rectangle (sheet, aux); - draw_xor_rectangle (sheet, sheet->drag_range); - } - } - return TRUE; - } - psppire_sheet_get_pixel_info (sheet, x, y, &row, &column); if (sheet->select_status == PSPPIRE_SHEET_NORMAL && row == sheet->active_cell.row &&