~ubuntu-branches/ubuntu/raring/gtk+2.0/raring-proposed

« back to all changes in this revision

Viewing changes to gtk/gtktreeview.c

  • Committer: Package Import Robot
  • Author(s): Ken VanDine
  • Date: 2011-12-01 11:40:06 UTC
  • mfrom: (1.14.11)
  • Revision ID: package-import@ubuntu.com-20111201114006-nrmf6qu3pg512veo
Tags: 2.24.8-0ubuntu1
* New upstream release 
  - gtkfilechooser should be more robust to malformed URIs
    in .gtk-bookmarks (LP: #189494)
* debian/patches/010_make_bg_changes_queue_repaint.patch
  - dropped it introduces performance regressions in some gtk2 
    apps (LP: #889019)
* 101_filechooser.patch, 000git_file_chooser.patch: dropped, upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
2787
2787
       */
2788
2788
      if (event->type == GDK_BUTTON_PRESS)
2789
2789
        {
2790
 
          if ((event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
2791
 
            tree_view->priv->ctrl_pressed = TRUE;
2792
 
          if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
2793
 
            tree_view->priv->shift_pressed = TRUE;
 
2790
          if ((event->state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
 
2791
            tree_view->priv->modify_selection_pressed = TRUE;
 
2792
          if ((event->state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
 
2793
            tree_view->priv->extend_selection_pressed = TRUE;
2794
2794
 
2795
2795
          focus_cell = _gtk_tree_view_column_get_cell_at_pos (column, event->x - background_area.x);
2796
2796
          if (focus_cell)
2797
2797
            gtk_tree_view_column_focus_cell (column, focus_cell);
2798
2798
 
2799
 
          if (event->state & GDK_CONTROL_MASK)
 
2799
          if (event->state & GTK_MODIFY_SELECTION_MOD_MASK)
2800
2800
            {
2801
2801
              gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
2802
2802
              gtk_tree_view_real_toggle_cursor_row (tree_view);
2803
2803
            }
2804
 
          else if (event->state & GDK_SHIFT_MASK)
 
2804
          else if (event->state & GTK_EXTEND_SELECTION_MOD_MASK)
2805
2805
            {
2806
2806
              gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
2807
2807
              gtk_tree_view_real_select_cursor_row (tree_view, FALSE);
2811
2811
              gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
2812
2812
            }
2813
2813
 
2814
 
          tree_view->priv->ctrl_pressed = FALSE;
2815
 
          tree_view->priv->shift_pressed = FALSE;
 
2814
          tree_view->priv->modify_selection_pressed = FALSE;
 
2815
          tree_view->priv->extend_selection_pressed = FALSE;
2816
2816
        }
2817
2817
 
2818
2818
      /* the treeview may have been scrolled because of _set_cursor,
2844
2844
              tree_view->priv->rubber_band_y = event->y + tree_view->priv->dy;
2845
2845
              tree_view->priv->rubber_band_status = RUBBER_BAND_MAYBE_START;
2846
2846
 
2847
 
              if ((event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
2848
 
                tree_view->priv->rubber_band_ctrl = TRUE;
2849
 
              if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
2850
 
                tree_view->priv->rubber_band_shift = TRUE;
 
2847
              if ((event->state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
 
2848
                tree_view->priv->rubber_band_modify = TRUE;
 
2849
              if ((event->state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
 
2850
                tree_view->priv->rubber_band_extend = TRUE;
2851
2851
            }
2852
2852
        }
2853
2853
 
3805
3805
 
3806
3806
  /* Clear status variables */
3807
3807
  tree_view->priv->rubber_band_status = RUBBER_BAND_OFF;
3808
 
  tree_view->priv->rubber_band_shift = 0;
3809
 
  tree_view->priv->rubber_band_ctrl = 0;
 
3808
  tree_view->priv->rubber_band_extend = FALSE;
 
3809
  tree_view->priv->rubber_band_modify = FALSE;
3810
3810
 
3811
3811
  tree_view->priv->rubber_band_start_node = NULL;
3812
3812
  tree_view->priv->rubber_band_start_tree = NULL;
3851
3851
 
3852
3852
      if (select)
3853
3853
        {
3854
 
          if (tree_view->priv->rubber_band_shift)
3855
 
            GTK_RBNODE_SET_FLAG (start_node, GTK_RBNODE_IS_SELECTED);
3856
 
          else if (tree_view->priv->rubber_band_ctrl)
 
3854
          if (tree_view->priv->rubber_band_extend)
 
3855
            GTK_RBNODE_SET_FLAG (start_node, GTK_RBNODE_IS_SELECTED);
 
3856
          else if (tree_view->priv->rubber_band_modify)
3857
3857
            {
3858
3858
              /* Toggle the selection state */
3859
3859
              if (GTK_RBNODE_FLAG_SET (start_node, GTK_RBNODE_IS_SELECTED))
3867
3867
      else
3868
3868
        {
3869
3869
          /* Mirror the above */
3870
 
          if (tree_view->priv->rubber_band_shift)
 
3870
          if (tree_view->priv->rubber_band_extend)
3871
3871
            GTK_RBNODE_UNSET_FLAG (start_node, GTK_RBNODE_IS_SELECTED);
3872
 
          else if (tree_view->priv->rubber_band_ctrl)
 
3872
          else if (tree_view->priv->rubber_band_modify)
3873
3873
            {
3874
3874
              /* Toggle the selection state */
3875
3875
              if (GTK_RBNODE_FLAG_SET (start_node, GTK_RBNODE_IS_SELECTED))
8217
8217
 
8218
8218
  if (gtk_get_current_event_state (&state))
8219
8219
    {
8220
 
      if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
8221
 
        tree_view->priv->ctrl_pressed = TRUE;
8222
 
      if ((state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
8223
 
        tree_view->priv->shift_pressed = TRUE;
 
8220
      if ((state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
 
8221
        tree_view->priv->modify_selection_pressed = TRUE;
 
8222
      if ((state & GTK_EXTEND_SELECTION_MOD_MASK) == GTK_EXTEND_SELECTION_MOD_MASK)
 
8223
        tree_view->priv->extend_selection_pressed = TRUE;
8224
8224
    }
8225
8225
  /* else we assume not pressed */
8226
8226
 
8244
8244
      g_assert_not_reached ();
8245
8245
    }
8246
8246
 
8247
 
  tree_view->priv->ctrl_pressed = FALSE;
8248
 
  tree_view->priv->shift_pressed = FALSE;
 
8247
  tree_view->priv->modify_selection_pressed = FALSE;
 
8248
  tree_view->priv->extend_selection_pressed = FALSE;
8249
8249
 
8250
8250
  return TRUE;
8251
8251
}
9713
9713
 
9714
9714
  if (selection_count == 0
9715
9715
      && tree_view->priv->selection->type != GTK_SELECTION_NONE
9716
 
      && !tree_view->priv->ctrl_pressed
 
9716
      && !tree_view->priv->modify_selection_pressed
9717
9717
      && selectable)
9718
9718
    {
9719
9719
      /* Don't move the cursor, but just select the current node */
9782
9782
    {
9783
9783
      gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
9784
9784
 
9785
 
      if (!tree_view->priv->shift_pressed)
 
9785
      if (!tree_view->priv->extend_selection_pressed)
9786
9786
        {
9787
9787
          if (! gtk_widget_keynav_failed (GTK_WIDGET (tree_view),
9788
9788
                                          count < 0 ?
10134
10134
      return FALSE;
10135
10135
    }
10136
10136
 
10137
 
  if (!tree_view->priv->shift_pressed && start_editing &&
 
10137
  if (!tree_view->priv->extend_selection_pressed && start_editing &&
10138
10138
      tree_view->priv->focus_column)
10139
10139
    {
10140
10140
      if (gtk_tree_view_start_editing (tree_view, cursor_path))
10144
10144
        }
10145
10145
    }
10146
10146
 
10147
 
  if (tree_view->priv->ctrl_pressed)
 
10147
  if (tree_view->priv->modify_selection_pressed)
10148
10148
    mode |= GTK_TREE_SELECT_MODE_TOGGLE;
10149
 
  if (tree_view->priv->shift_pressed)
 
10149
  if (tree_view->priv->extend_selection_pressed)
10150
10150
    mode |= GTK_TREE_SELECT_MODE_EXTEND;
10151
10151
 
10152
10152
  _gtk_tree_selection_internal_select_node (tree_view->priv->selection,
10170
10170
  gtk_widget_grab_focus (GTK_WIDGET (tree_view));
10171
10171
  _gtk_tree_view_queue_draw_node (tree_view, cursor_tree, cursor_node, NULL);
10172
10172
 
10173
 
  if (!tree_view->priv->shift_pressed)
 
10173
  if (!tree_view->priv->extend_selection_pressed)
10174
10174
    gtk_tree_view_row_activated (tree_view, cursor_path,
10175
10175
                                 tree_view->priv->focus_column);
10176
10176
    
10308
10308
 
10309
10309
      if (gtk_get_current_event_state (&state))
10310
10310
        {
10311
 
          if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
10312
 
            tree_view->priv->ctrl_pressed = TRUE;
 
10311
          if ((state & GTK_MODIFY_SELECTION_MOD_MASK) == GTK_MODIFY_SELECTION_MOD_MASK)
 
10312
            tree_view->priv->modify_selection_pressed = TRUE;
10313
10313
        }
10314
10314
 
10315
10315
      gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, FALSE);
10319
10319
      gtk_tree_view_queue_draw_path (tree_view, cursor_path, NULL);
10320
10320
      gtk_tree_path_free (cursor_path);
10321
10321
 
10322
 
      tree_view->priv->ctrl_pressed = FALSE;
 
10322
      tree_view->priv->modify_selection_pressed = FALSE;
10323
10323
 
10324
10324
      return TRUE;
10325
10325
    }
10765
10765
      tree_view->priv->scroll_to_path = NULL;
10766
10766
    }
10767
10767
 
 
10768
  if (tree_view->priv->rubber_band_status)
 
10769
    gtk_tree_view_stop_rubber_band (tree_view);
 
10770
 
10768
10771
  if (tree_view->priv->model)
10769
10772
    {
10770
10773
      GList *tmplist = tree_view->priv->columns;
12602
12605
      GtkRBTree *new_tree = NULL;
12603
12606
      GtkRBNode *new_node = NULL;
12604
12607
 
12605
 
      if (clear_and_select && !tree_view->priv->ctrl_pressed)
 
12608
      if (clear_and_select && !tree_view->priv->modify_selection_pressed)
12606
12609
        {
12607
12610
          GtkTreeSelectMode mode = 0;
12608
12611
 
12609
 
          if (tree_view->priv->ctrl_pressed)
 
12612
          if (tree_view->priv->modify_selection_pressed)
12610
12613
            mode |= GTK_TREE_SELECT_MODE_TOGGLE;
12611
 
          if (tree_view->priv->shift_pressed)
 
12614
          if (tree_view->priv->extend_selection_pressed)
12612
12615
            mode |= GTK_TREE_SELECT_MODE_EXTEND;
12613
12616
 
12614
12617
          _gtk_tree_selection_internal_select_node (tree_view->priv->selection,
13415
13418
 * gtk_tree_view_enable_model_drag_source:
13416
13419
 * @tree_view: a #GtkTreeView
13417
13420
 * @start_button_mask: Mask of allowed buttons to start drag
13418
 
 * @targets: the table of targets that the drag will support
 
13421
 * @targets: (array length=n_targets): the table of targets that the drag will support
13419
13422
 * @n_targets: the number of items in @targets
13420
13423
 * @actions: the bitmask of possible actions for a drag from this
13421
13424
 *    widget