[Digikam-devel] [Bug 132841] tag filtering works only a the second click on the tag filter list

Gilles Caulier caulier.gilles at free.fr
Mon Sep 25 15:35:31 BST 2006


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=132841         
caulier.gilles free fr changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From caulier.gilles free fr  2006-09-25 16:35 -------
SVN commit 588239 by mwiesweg:

Fix two subtle but annoying bugs in TagFilterView:

- all items are CheckBoxControllers.
  Children-less controller items will enter the NoChange state after first click,
  so a second click is necessary to make the filter take effect.
  Set state to On directly in this case
- draw the checkbox three pixels to the right, as expected by Qt

CCMAIL: digikam-devel kde org


 M  +1 -1      folderitem.cpp  
 M  +10 -0     tagfilterview.cpp  


--- trunk/extragear/graphics/digikam/digikam/folderitem.cpp #588238:588239
 @ -199,7 +199,7  @
         (type() == QCheckListItem::CheckBoxController))
     {
         int boxsize = fv->style().pixelMetric(QStyle::PM_CheckListButtonSize, fv); 
-        int x = 0;
+        int x = 3;
         int y = (height() - boxsize)/2 + margin;
         r += boxsize + 4;
 
--- trunk/extragear/graphics/digikam/digikam/tagfilterview.cpp #588238:588239
 @ -97,6 +97,16  @
     {
         QCheckListItem::stateChange(val);
 
+        // All TagFilterViewItems are CheckBoxControllers. If they have no children,
+        // they should be of type CheckBox, but that is not possible with our way of adding items.
+        // When clicked, children-less items first change to the NoChange state, and a second
+        // click is necessary to set them to On and make the filter take effect.
+        // So set them to On if the condition is met.
+        if (!firstChild() && state() == NoChange)
+        {
+            setState(On);
+        }
+
         ((TagFilterView*)listView())->triggerChange();
     }



More information about the Digikam-devel mailing list