[Digikam-devel] extragear/graphics/digikam/digikam

Marcel Wiesweg marcel.wiesweg at gmx.de
Mon Sep 25 13:10:21 BST 2006


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 at 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