mirror of
				https://gitlab.gnome.org/julianschacher/top-bar-organizer.git
				synced 2025-10-27 15:19:09 +00:00 
			
		
		
		
	Fix: Fix incorrect ordering
There was an issue where, when you started Gnome Shell, the icons weren't corrently ordered. It seems that this issue was caused by a combination of the following two things: 1. When determining the insertion index in `determineInsertionIndex` (in `getPositionAndBoxOverwrite` in `_overwritePanelAddToPanelBox`) the `boxOrder` got set to `boxOrders.something`, which doesn't make much sense considering that the `index` was determined by using `resolvedBoxOrders.something`. So set `boxOrder` to `resolvedBoxOrders.something` instead, to obtain an `insertionIndex`, which makes sense. 2. Ordering the `right` panel box from right to left (in `_orderTopBarItems`) seemed to cause issues (, which are probably caused by the indices not making sense with the children box counts at insertion time). Therefore and also because the regular (left-to-right) ordering seems to work just fine even for the case described in the comment (, which provides the reason for right-to-left ordering,) just use regular ordering for all boxes. Fixing these two things may also fix other incorrect ordering behaviour at other times.
This commit is contained in:
		
							parent
							
								
									0eee0e8ef9
								
							
						
					
					
						commit
						689a8107e2
					
				| @ -248,21 +248,21 @@ class Extension { | ||||
| 
 | ||||
|             if (indices.left !== -1) { | ||||
|                 return { | ||||
|                     position: determineInsertionIndex(indices.left, this._boxOrderCreator.createRestrictedValidBoxOrder("left"), boxOrders.left), | ||||
|                     position: determineInsertionIndex(indices.left, this._boxOrderCreator.createRestrictedValidBoxOrder("left"), resolvedBoxOrders.left), | ||||
|                     box: "left" | ||||
|                 }; | ||||
|             } | ||||
| 
 | ||||
|             if (indices.center !== -1) { | ||||
|                 return { | ||||
|                     position: determineInsertionIndex(indices.center, this._boxOrderCreator.createRestrictedValidBoxOrder("center"), boxOrders.center), | ||||
|                     position: determineInsertionIndex(indices.center, this._boxOrderCreator.createRestrictedValidBoxOrder("center"), resolvedBoxOrders.center), | ||||
|                     box: "center" | ||||
|                 }; | ||||
|             } | ||||
| 
 | ||||
|             if (indices.right !== -1) { | ||||
|                 return { | ||||
|                     position: determineInsertionIndex(indices.right, this._boxOrderCreator.createRestrictedValidBoxOrder("right"), boxOrders.right), | ||||
|                     position: determineInsertionIndex(indices.right, this._boxOrderCreator.createRestrictedValidBoxOrder("right"), resolvedBoxOrders.right), | ||||
|                     box: "right" | ||||
|                 }; | ||||
|             } | ||||
| @ -407,41 +407,13 @@ class Extension { | ||||
| 
 | ||||
|         /// Go through the items (or rather their roles) of the validBoxOrder
 | ||||
|         /// and order the panelBox accordingly.
 | ||||
|         // Declare panelBoxChildCount here, because we might need it later.
 | ||||
|         let panelBoxChildCount; | ||||
|         switch (box) { | ||||
|             // If the left or center box is the target box, order form left to
 | ||||
|             // right.
 | ||||
|             case "left": | ||||
|             case "center": | ||||
|                 for (let i = 0; i < validBoxOrder.length; i++) { | ||||
|                     const role = validBoxOrder[i]; | ||||
|                     // Get the indicator container associated with the current
 | ||||
|                     // role.
 | ||||
|                     const associatedIndicatorContainer = Main.panel.statusArea[role].container; | ||||
|         for (let i = 0; i < validBoxOrder.length; i++) { | ||||
|             const role = validBoxOrder[i]; | ||||
|             // Get the indicator container associated with the current role.
 | ||||
|             const associatedIndicatorContainer = Main.panel.statusArea[role].container; | ||||
| 
 | ||||
|                     associatedIndicatorContainer.get_parent().remove_child(associatedIndicatorContainer); | ||||
|                     panelBox.insert_child_at_index(associatedIndicatorContainer, i); | ||||
|                 } | ||||
|                 break; | ||||
|             // If the right box is the target box, order from right to left.
 | ||||
|             // The order direction is important for the case, where the box
 | ||||
|             // order got set to a box order, which doesn't include all the roles
 | ||||
|             // to cover all items of the respective box.
 | ||||
|             // This could happen, when the box order gets set to a permutation
 | ||||
|             // of an outdated box order.
 | ||||
|             case "right": | ||||
|                 panelBoxChildCount = Math.max(panelBox.get_children().length, validBoxOrder.length); | ||||
|                 for (let i = 0; i < validBoxOrder.length; i++) { | ||||
|                     const role = validBoxOrder[validBoxOrder.length - 1 - i]; | ||||
|                     // Get the indicator container associated with the current
 | ||||
|                     // role.
 | ||||
|                     const associatedIndicatorContainer = Main.panel.statusArea[role].container; | ||||
| 
 | ||||
|                     associatedIndicatorContainer.get_parent().remove_child(associatedIndicatorContainer); | ||||
|                     panelBox.insert_child_at_index(associatedIndicatorContainer, panelBoxChildCount - 1 -i); | ||||
|                 } | ||||
|                 break; | ||||
|             associatedIndicatorContainer.get_parent().remove_child(associatedIndicatorContainer); | ||||
|             panelBox.insert_child_at_index(associatedIndicatorContainer, i); | ||||
|         } | ||||
|         // To handle the case, where the box order got set to a permutation
 | ||||
|         // of an outdated box order, it would be wise, if the caller updated the
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user