diff options
| author | Joe <rbo@gmx.us> | 2024-01-09 20:20:20 +0100 | 
|---|---|---|
| committer | Joe <rbo@gmx.us> | 2024-01-09 20:20:20 +0100 | 
| commit | 1b348ade03ecf708c13a37f353ac1533f7c0d747 (patch) | |
| tree | 6b824ba4eb790cba11e8c45813b696a0cfca8ccd | |
| parent | folding visually (diff) | |
| download | hardflip-1b348ade03ecf708c13a37f353ac1533f7c0d747.tar.gz hardflip-1b348ade03ecf708c13a37f353ac1533f7c0d747.tar.bz2 hardflip-1b348ade03ecf708c13a37f353ac1533f7c0d747.tar.xz hardflip-1b348ade03ecf708c13a37f353ac1533f7c0d747.tar.zst hardflip-1b348ade03ecf708c13a37f353ac1533f7c0d747.zip  | |
folding functionally
| -rw-r--r-- | c_ldirs.go | 9 | ||||
| -rw-r--r-- | c_lhosts.go | 11 | ||||
| -rw-r--r-- | c_litems.go | 55 | ||||
| -rw-r--r-- | i_ui.go | 9 | 
4 files changed, 43 insertions, 41 deletions
@@ -116,12 +116,3 @@ func (dir *DirsNode) count_hosts() int {  	}  	return dir.lhost.last.ID + 1  } - -func (dir *DirsNode) folded_parents() bool { -	for ptr := dir.Parent; ptr.Parent != nil; ptr = ptr.Parent { -		if ptr.Folded == true { -			return true -		} -	} -	return false -} diff --git a/c_lhosts.go b/c_lhosts.go index 80fbdbc..691625f 100644 --- a/c_lhosts.go +++ b/c_lhosts.go @@ -43,7 +43,7 @@   * POSSIBILITY OF SUCH DAMAGE.   *   * hardflip: src/c_lhosts.go - * Tue Jan 09 12:07:53 2024 + * Tue Jan 09 12:59:11 2024   * Joe   *   * the hosts linked list @@ -166,12 +166,3 @@ func (host *HostNode) protocol_str() string {  	default: return ""  	}  } - -func (host *HostNode) folded_parents() bool { -	for ptr := host.Parent; ptr.Parent != nil; ptr = ptr.Parent { -		if ptr.Folded == true { -			return true -		} -	} -	return false -} diff --git a/c_litems.go b/c_litems.go index c5e93ff..6b64e8c 100644 --- a/c_litems.go +++ b/c_litems.go @@ -147,32 +147,51 @@ func (item *ItemsNode) is_dir() bool {  }  func (litems *ItemsList) inc(jump int) { -	item := litems.curr -	if item == nil { +	new_item := litems.curr + +	if new_item == nil || jump == 0 {  		return -	} -	if jump == 0 { -		litems.curr = item  	} else if jump == 1 { -		if item.next != nil { -			litems.curr = item.next +		if new_item.next != nil { +			new_item = new_item.next  		} -		litems.curr = item  	} else if jump == -1 { -		if item.prev != nil { -			litems.curr = item.prev +		if new_item.prev != nil { +			new_item = new_item.prev  		} -		litems.curr = item -	} -	new_item := item -	if jump > 0 { -		for i := 0; new_item.next != nil && i < jump; i++ { +	} else { +		for i := 0; jump > +1 && new_item.next != nil && i < jump; i++ {  			new_item = new_item.next  		} -		litems.curr = new_item +		for i := 0; jump < -1 && new_item.prev != nil && i > jump; i-- { +			new_item = new_item.prev +		}  	} -	for i := 0; new_item.prev != nil && i > jump; i-- { -		new_item = new_item.prev +	for new_item.folded_parents() == true && +		new_item.next != nil && +		new_item.prev != nil { +		if jump > 0 { +			new_item = new_item.next +		} else { +			new_item = new_item.prev +		}  	}  	litems.curr = new_item +	// FIX: still will select the last +} + +func (item *ItemsNode) folded_parents() bool { +	var ptr *DirsNode + +	if item.is_dir() == false { +		ptr = item.Host.Parent +	} else { +		ptr = item.Dirs.Parent +	} +	for ; ptr.Parent != nil; ptr = ptr.Parent { +		if ptr.Folded == true { +			return true +		} +	} +	return false  } @@ -283,9 +283,10 @@ func i_host_panel(ui HardUI, icons bool, litems *ItemsList) {  	line := 1  	ptr := litems.draw_start  	for ptr = ptr; ptr != nil && line < ui.dim[H] - 2; ptr = ptr.next { -		if ptr.is_dir() == false && -		   ptr.Host.folded_parents() == false && -		   ptr.Host != nil  { +		if ptr.folded_parents() == true { +			continue +		} +		if ptr.is_dir() == false && ptr.Host != nil  {  			i_host_panel_host(ui,  				icons,  				ptr.Host.Parent.Depth, @@ -293,7 +294,7 @@ func i_host_panel(ui HardUI, icons bool, litems *ItemsList) {  				litems.curr.Host,  				line)  			line++ -		} else if ptr.Dirs != nil && ptr.Dirs.folded_parents() == false { +		} else if ptr.Dirs != nil {  			i_host_panel_dirs(ui, icons,  				ptr.Dirs,  				litems.curr.Dirs,  | 
