Page MenuHomePhabricator

DICOM Browser loads data twice
Closed, ResolvedPublic

Event Timeline

Happens only on double-clicking the entry in the 'Series' table. Through 'View' button, the file is loaded only once.

The Qt call

QAbstractItemView::mouseDoubleClickEvent(QMouseEvent*)

already appears twice, leading to a call chain

cktDICOMTableView::doubleClicked
ctkDICOMTableManager::seriesDoubleClicked
QmitkDicomExternalDataWidget::OnViewButtonClicked

::SignalDicomToDataManager

QmitKDicomBrowser::OnViewButtonAddToDataManager

::AddSeriesToDataManagerEvent

causing the data to be added twice to the datamanager.

So the remaining question is: who is responsible for the 'double' call.

It is not the double click itself, for testing I just changed the event type to a single click directly in ctkDICOMTableView and the behaviour remained the same.

Does not occur in 2014.03.00, does occur in the testing installer version 3b304c (from Oct 21 ).

Currently I have no further ideas how to investigate it further, maybe the qteventloop could provide more information about the registered listener/sender and reveal the one who did register twice ( if this is the reason ).

Reseting status and returning bug to default assignee.

The connection in ctkDICOMTableView in line#128

QObject::connect(this->tblDicomDatabaseView, SIGNAL(doubleClicked(const QModelIndex&)), q, SIGNAL(doubleClicked(QModelIndex)));

is registered twice.

Changing the connection to

QObject::connect(this->tblDicomDatabaseView, SIGNAL(doubleClicked(const QModelIndex&)), q, SIGNAL(doubleClicked(QModelIndex)), Qt::UniqueConnection);

solves the problem.

I'm not sure if this is a CTK bug or if the encapsulation of CTK in MITK leads to the doubled registration.

(In reply to Nils Lichtenberg from comment #5)

The connection in ctkDICOMTableView in line#128

QObject::connect(this->tblDicomDatabaseView, SIGNAL(doubleClicked(const
QModelIndex&)), q, SIGNAL(doubleClicked(QModelIndex)));

is registered twice.

Changing the connection to

QObject::connect(this->tblDicomDatabaseView, SIGNAL(doubleClicked(const
QModelIndex&)), q, SIGNAL(doubleClicked(QModelIndex)), Qt::UniqueConnection);

solves the problem.

I'm not sure if this is a CTK bug or if the encapsulation of CTK in MITK
leads to the doubled registration.

It seems that all connections in ctkDICOMTableViewPrivate::setUpTableView() are registered twice.

@Andi: Is this bug fixed with our latest CTK update?

User fetzer has pushed new remote branch:

bug-18391-duplicate-data-load-dicom-browser

[39e018]: Merge branch 'bug-18391-duplicate-data-load-dicom-browser'

Merged commits:

2015-04-16 14:57:54 Andreas Fetzer [fed0ff]
Updated CTK version to a custom release version which contains the
DICOMBrowser fix. The according branch can be downloaded from:
https://github.com/AndreasFetzer/CTK/tree/mitk-2105-03-fixes


2015-04-13 13:08:16 Andreas Fetzer [a05403]
Merge branch 'master' of mitk.org:MITK


2015-04-09 14:20:45 Andreas Fetzer [a63104]
Merge remote-tracking branch 'origin/bug-18567-2dMorphologicalOperations'


2014-12-19 13:36:19 Jonas Cordes [dec4f1]
add combo box for plane selection


2014-12-19 10:18:44 Jonas Cordes [b253c4]
add plane selection checkboxes


2014-12-19 10:18:12 Jonas Cordes [fb5839]
use the new added method


2014-12-19 10:17:39 Jonas Cordes [9482ef]
add method to create a structuring element using the current UI configuration


2014-12-19 10:16:11 Jonas Cordes [ccbecf]
code style


2014-12-19 10:15:52 Jonas Cordes [bd9b03]
use new methods and enum entries


2014-12-19 10:12:43 Jonas Cordes [57ce9a]
add new entries to StructuringElementTypes enum, add method for s. element creation
+ Ball = 7,
+ Ball_Axial = 1,
+ Ball_Sagital = 2,
+ Ball_Coronal = 4,
+ Cross = 56,
+ Cross_Axial = 8,
+ Cross_Sagital = 16,
+ Cross_Coronal = 32