43 |
43 |
44 CSwtTree::CSwtTree(MSwtDisplay& aDisplay, TSwtPeer aPeer, |
44 CSwtTree::CSwtTree(MSwtDisplay& aDisplay, TSwtPeer aPeer, |
45 MSwtComposite& aParent, TInt aStyle, TBool aVisibility, TBool aDimmed) |
45 MSwtComposite& aParent, TInt aStyle, TBool aVisibility, TBool aDimmed) |
46 : CSwtComposite(aDisplay, aPeer, &aParent, aStyle, aVisibility, aDimmed) |
46 : CSwtComposite(aDisplay, aPeer, &aParent, aStyle, aVisibility, aDimmed) |
47 , iItemHeightValid(EFalse) |
47 , iItemHeightValid(EFalse) |
|
48 , iPointerRevertExpandNeeded(EFalse) |
|
49 , iPointerRevertCollapseNeeded(EFalse) |
|
50 , iRevertedItem(KAknTreeIIDNone) |
48 { |
51 { |
49 } |
52 } |
50 |
53 |
51 void CSwtTree::ConstructL() |
54 void CSwtTree::ConstructL() |
52 { |
55 { |
407 } |
410 } |
408 #endif //RD_JAVA_ADVANCED_TACTILE_FEEDBACK |
411 #endif //RD_JAVA_ADVANCED_TACTILE_FEEDBACK |
409 |
412 |
410 iLastFocusedItem = iTree->FocusedItem(); |
413 iLastFocusedItem = iTree->FocusedItem(); |
411 CSwtComposite::HandlePointerEventL(aPointerEvent); |
414 CSwtComposite::HandlePointerEventL(aPointerEvent); |
|
415 |
|
416 // Expanding node as part of pointer event reverting |
|
417 if (iPointerRevertExpandNeeded) |
|
418 { |
|
419 iTree->ExpandNode(iRevertedItem, ETrue); |
|
420 iPointerRevertExpandNeeded = EFalse; |
|
421 } |
|
422 |
|
423 // Collapsing node as part of pointer event reverting |
|
424 if (iPointerRevertCollapseNeeded) |
|
425 { |
|
426 iTree->CollapseNode(iRevertedItem, ETrue); |
|
427 iPointerRevertCollapseNeeded = EFalse; |
|
428 } |
412 |
429 |
413 #ifdef RD_JAVA_ADVANCED_TACTILE_FEEDBACK |
430 #ifdef RD_JAVA_ADVANCED_TACTILE_FEEDBACK |
414 if (feedback) |
431 if (feedback) |
415 { |
432 { |
416 //Restore native feedback. |
433 //Restore native feedback. |
811 // EItemSelected is never sent for nodes, hence the manual marking |
828 // EItemSelected is never sent for nodes, hence the manual marking |
812 switch (aEvent) |
829 switch (aEvent) |
813 { |
830 { |
814 case MAknTreeListObserver::ENodeExpanded: |
831 case MAknTreeListObserver::ENodeExpanded: |
815 { |
832 { |
816 TInt count = iTree->ChildCount(aItem); |
833 /* |
817 if (count > 0) |
834 * Pointer reverting has to be done after HandlePointerEvent. So here |
818 { |
835 * just setting attributes and actual reverting is done in |
819 TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventExpand, aItem)); |
836 * CSwtTree::HandlePointerEventL |
820 } |
837 * In case of reverting event, Java will not get any notifications. |
821 if (IsMarkable()) |
838 */ |
822 { |
839 if (iDisplay.RevertPointerEvent() && !iPointerRevertExpandNeeded) |
823 if (count == 0) |
840 { |
824 { |
841 iPointerRevertCollapseNeeded = ETrue; |
825 iTree->SetMarked(aItem, ETrue, ETrue); |
842 iRevertedItem = aItem; |
826 } |
|
827 } |
843 } |
828 else |
844 else |
829 { |
845 { |
830 TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventDefaultSelection, aItem)); |
846 TInt count = iTree->ChildCount(aItem); |
|
847 if (count > 0) |
|
848 { |
|
849 TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventExpand, aItem)); |
|
850 } |
|
851 if (IsMarkable()) |
|
852 { |
|
853 if (count == 0) |
|
854 { |
|
855 iTree->SetMarked(aItem, ETrue, ETrue); |
|
856 } |
|
857 } |
|
858 else |
|
859 { |
|
860 TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventDefaultSelection, aItem)); |
|
861 } |
831 } |
862 } |
832 break; |
863 break; |
833 } |
864 } |
834 case MAknTreeListObserver::ENodeCollapsed: |
865 case MAknTreeListObserver::ENodeCollapsed: |
835 { |
866 { |
836 TInt count = iTree->ChildCount(aItem); |
867 /* |
837 if (count > 0) |
868 * Pointer reverting has to be done after HandlePointerEvent. So here |
838 { |
869 * just setting attributes and actual reverting is done in |
839 TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventCollapse, aItem)); |
870 * CSwtTree::HandlePointerEventL |
840 } |
871 * In case of reverting event, Java will not get any notifications. |
841 if (IsMarkable()) |
872 */ |
842 { |
873 if (iDisplay.RevertPointerEvent() && !iPointerRevertCollapseNeeded) |
843 if (count == 0) |
874 { |
844 { |
875 iPointerRevertExpandNeeded = ETrue; |
845 iTree->SetMarked(aItem, EFalse, ETrue); |
876 iRevertedItem = aItem; |
|
877 } |
|
878 else |
|
879 { |
|
880 TInt count = iTree->ChildCount(aItem); |
|
881 if (count > 0) |
|
882 { |
|
883 TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventCollapse, aItem)); |
|
884 } |
|
885 if (IsMarkable()) |
|
886 { |
|
887 if (count == 0) |
|
888 { |
|
889 iTree->SetMarked(aItem, EFalse, ETrue); |
|
890 } |
846 } |
891 } |
847 } |
892 } |
848 break; |
893 break; |
849 } |
894 } |
850 case MAknTreeListObserver::EItemFocused: |
895 case MAknTreeListObserver::EItemFocused: |