﻿id	summary	reporter	owner	description	type	status	milestone	component	version	severity	resolution	keywords	cc
3585	pb _GUICtrlTreeView_Sort not sorting level 1 treeview -- With Solution	gilles@…	Jpm	"with deep tree, _GUICtrlTreeView_Sort does not sort it.

Proposed solution : for detail see post 

[https://www.autoitscript.com/forum/topic/192179-solution-proposed-pb-_guictrltreeview_sort-not-sorting-level-1-treeview/]


Solution 
{{{
; #FUNCTION# ====================================================================================================================
; Author ........: Gary Frost (gafrost)
; Modified.......: mlipok, guinness, gillesg
; Ths time optimized ===============================================================================================================================
Func _GUICtrlTreeView_Sort3($hWnd)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)

    Local $iItemCount = _GUICtrlTreeView_GetCount($hWnd)
    If $iItemCount Then
        Local $aTreeView[$iItemCount], $i=0
        ; get only A child at each level
        Local $hHandle = _GUICtrlTreeView_GetFirstItem($hWnd)
        $aTreeView[1]=$hHandle
        $aTreeView[0]=2
        __GUICtrlTreeView_SortGetFirstChild($hWnd, $hHandle, $aTreeView )
        redim $aTreeView[$aTreeView[0]]
        $aTreeView[0]=0

        ConsoleWrite(_ArrayToString($aTreeView,@CRLF)&@CRLF)
        for $i =0 to UBound($aTreeView) -1
            _SendMessage($hWnd, $TVM_SORTCHILDREN, 0, $aTreeView[$i], 0, ""wparam"", ""handle"") ; Sort the items in root
        NExt
    EndIf

EndFunc   ;==>_GUICtrlTreeView_Sort3

func __GUICtrlTreeView_SortGetFirstChild($hWnd, $hItem, byref $aTreeView)
    Local $hChild = _GUICtrlTreeView_GetFirstChild($hWnd, $hItem)
    if $hChild <> 0 then
        $aTreeView[$aTreeView[0] ]= $hChild
        $aTreeView[0]+=1
        __GUICtrlTreeView_SortGetFirstChild($hWnd,$hChild,$aTreeView)
    EndIf
    local $hNext = _GUICtrlTreeView_GetNextSibling($hWnd, $hItem)
    if $hNext <> 0 then __GUICtrlTreeView_SortGetFirstChild($hWnd,$hnext,$aTreeView)

EndFunc

}}}

Hope it help
"	Bug	closed	3.3.15.1	AutoIt	3.3.14.2	None	Fixed	GUICtrlTreeView_Sort	
