~ubuntu-branches/ubuntu/lucid/brasero/lucid-updates

« back to all changes in this revision

Viewing changes to src/eggtreemultidnd.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2010-06-24 11:22:46 UTC
  • mfrom: (1.3.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20100624112246-s5ubbf8tafqkir0m
Tags: 2.30.2-0ubuntu1
* New upstream release
  - Lot's of memleak fixes
  - Fixed a runtime warning related to cancelling tracker searches
  - Crash in brasero_data_project_node_removed at
    brasero-data-project.c:1163
  - brasero crashed with SIGSEGV in brasero_data_project_remove_node()
    (LP: #561319)
  - Fix a few runtime warnings with the Cover Editor
  - Text in cover editor does not show up automatically (LP: #469459)
  - Removed use of deprecated flags
  - Use accessor functions instead direct access (use GSEAL GnomeGoal)
  - Fix a bug in the layout on first start (side pane was hidden and
    remained so until the user moved it)
  - Save printer settings for cover printing
  - Write the contents of the GtkTextBuffer displayed line by displayed
    line which should improve the layout
  - "Write to Disc" button sensitivity regression
  - Fix flaw in mask that led libburn plugin not to work (not to be picked
    up actually) in some circumstances
  - Fails to burn ANY audio project
  - Move columns doesn't work (LP: #581759)
  - Brasero does not correctly handle double clicking on column separators
    (LP: #581885)
  - Bad info when burning, high CPU usage and slow burn
  - Change the priority for cdrdao and raised the one of cdda2wav plugin
  - brasero crashed with SIGSEGV in
    brasero_mmc3_get_performa nce_wrt_spd_desc() (LP: #564766)
  - brasero crashed with SIGSEGV in brasero_scsi_command_issue_sync()
    (LP: #444832)
  - Do not check for symlinks on cdda2wav so the plugin can use icedax.
  - Brasero's failure with some file names (LP: #380643)
  - Pressing create audio cd does nothing
  - Empty project not available
  - can't actually save error logs
  - doesn't handle incorrect temp dirs properly
  - Fix multi DND in GtkFileChooser
  - Displays "starting to record" during whole burn process
  - Fix wrong report of speed with both cdrecord and wodim
  - Disk project doesn't save the disk title (LP: #587924)
  - Brasero reports outdated cdrtools on cdrtools-3.00 (LP: #592075)
  - misc bug fixes
  - Updated Translations
* Removed upstream patches:
  - debian/patches/90_git_audio_project_creation.patch,
    debian/patches/91_git_audio_project_creation.patch,
    debian/patches/92_git_audio_cd_recording.patch,
    debian/patches/93_git_new_caps_function_definition.patch
* debian/patches/99_autoconf.patch:
  - refreshed

Show diffs side-by-side

added added

removed removed

Lines of Context:
349
349
  return TRUE;
350
350
}
351
351
 
 
352
static void
 
353
_treeview_destroyed (GtkWidget *widget,
 
354
                     gpointer user_data)
 
355
{
 
356
        gboolean *called = user_data;
 
357
        *called = TRUE;
 
358
        g_object_ref (widget);
 
359
}
 
360
 
352
361
static gboolean
353
362
egg_tree_multi_drag_button_press_event (GtkWidget      *widget,
354
363
                                        GdkEventButton *event,
395
404
  if (path && gtk_tree_selection_path_is_selected (selection, path))
396
405
    {
397
406
      GList *iter;
 
407
      gulong sig_id;
398
408
      GList *selected;
 
409
      gboolean called = FALSE;
399
410
      GtkWidgetClass *widget_klass;
400
411
 
401
412
      /* The call to ::button_press_event will unselect all selected rows so
403
414
       * again. */
404
415
      selected = gtk_tree_selection_get_selected_rows (selection, NULL);
405
416
 
 
417
      /* In some rare cases (like for a GtkFileChooserDialog when the user
 
418
       * double-clicks a row) "destroy" is called during ::button_press_event
 
419
       * calls which makes widget and selection invalid afterwards.
 
420
       * Note: it seems that a call to "destroy" makes all signals invalid as
 
421
       * well so do not disconnect */
 
422
      sig_id = g_signal_connect (widget,
 
423
                                 "destroy",
 
424
                                 G_CALLBACK (_treeview_destroyed),
 
425
                                 &called);
 
426
 
406
427
      widget_klass = GTK_WIDGET_GET_CLASS (tree_view);
407
428
      widget_klass->button_press_event (widget, event);
408
429
 
409
 
      for (iter = selected; iter; iter = iter->next) {
410
 
        gtk_tree_selection_select_path (selection, iter->data);
411
 
        gtk_tree_path_free (iter->data);
 
430
      if (!called)
 
431
        g_signal_handler_disconnect (widget, sig_id);
 
432
 
 
433
      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
 
434
      if (selection) {
 
435
              for (iter = selected; iter; iter = iter->next) {
 
436
                gtk_tree_selection_select_path (selection, iter->data);
 
437
                gtk_tree_path_free (iter->data);
 
438
              }
 
439
              g_list_free (selected);
412
440
      }
413
 
      g_list_free (selected);
414
441
 
415
442
      priv_data->pressed_button = event->button;
416
443
      priv_data->x = event->x;