Added scaling

torsten.philipp [04-01-18 - 20:36]
Added scaling
Filename
TaosGroupTools/Defaults.lua
TaosGroupTools/communication/Communicator.lua
TaosGroupTools/i18n/de.lua
TaosGroupTools/i18n/en.lua
TaosGroupTools/i18n/fr.lua
TaosGroupTools/logic/SettingsHandler.lua
TaosGroupTools/ui/SettingsWindow.lua
TaosGroupTools/ui/VirtualControls.xml
TaosGroupTools/ui/groupultimate/CompactSwimlaneList.lua
TaosGroupTools/ui/groupultimate/CompactSwimlaneList.xml
TaosGroupTools/ui/groupultimate/SwimlaneList.lua
TaosGroupTools/ui/groupultimate/SwimlaneList.xml
diff --git a/TaosGroupTools/Defaults.lua b/TaosGroupTools/Defaults.lua
index 6ac4d14..139f5d8 100644
--- a/TaosGroupTools/Defaults.lua
+++ b/TaosGroupTools/Defaults.lua
@@ -26,6 +26,7 @@ TGT_DEFAULTS =
     -- Lane settings
     ["IsSortingActive"]          = false,
     ["Swimlanes"]                = 6,
+    ["SwimlaneScaling"]          = 1.0,
     ["StaticUltimateID"]         =
     {
         ["Default"] = 29861,
diff --git a/TaosGroupTools/communication/Communicator.lua b/TaosGroupTools/communication/Communicator.lua
index e37a4f0..9cffa77 100644
--- a/TaosGroupTools/communication/Communicator.lua
+++ b/TaosGroupTools/communication/Communicator.lua
@@ -237,26 +237,26 @@ function TGT_Communicator.SendFakePings()
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group2", ultimateGroups[1].GroupAbilityPing, 100)
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group3", ultimateGroups[1].GroupAbilityPing, math.random(90, 100))
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group4", ultimateGroups[1].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group5", ultimateGroups[1].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group5", ultimateGroups[6].GroupAbilityPing, math.random(90, 100))
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group6", ultimateGroups[6].GroupAbilityPing, math.random(90, 100))
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group7", ultimateGroups[6].GroupAbilityPing, 100)
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group8", ultimateGroups[6].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group9", ultimateGroups[6].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group10", ultimateGroups[6].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group11", ultimateGroups[1].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group12", ultimateGroups[6].GroupAbilityPing, 100)
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group13", ultimateGroups[16].GroupAbilityPing, 100)
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group14", ultimateGroups[16].GroupAbilityPing, 100)
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group15", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group16", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group17", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group18", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group9", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group10", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group11", ultimateGroups[16].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group12", ultimateGroups[16].GroupAbilityPing, 100)
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group13", ultimateGroups[28].GroupAbilityPing, 100)
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group14", ultimateGroups[28].GroupAbilityPing, 100)
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group15", ultimateGroups[28].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group16", ultimateGroups[28].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group17", ultimateGroups[13].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group18", ultimateGroups[13].GroupAbilityPing, math.random(90, 100))
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group19", ultimateGroups[13].GroupAbilityPing, 100)
     CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group20", ultimateGroups[13].GroupAbilityPing, 100)
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group21", ultimateGroups[13].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group22", ultimateGroups[13].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group23", ultimateGroups[13].GroupAbilityPing, math.random(90, 100))
-    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group24", ultimateGroups[13].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group21", ultimateGroups[29].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group22", ultimateGroups[29].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group23", ultimateGroups[29].GroupAbilityPing, math.random(90, 100))
+    CALLBACK_MANAGER:FireCallbacks(TGT_MAP_PING_CHANGED, "group24", ultimateGroups[29].GroupAbilityPing, math.random(90, 100))
 end

 --[[
diff --git a/TaosGroupTools/i18n/de.lua b/TaosGroupTools/i18n/de.lua
index cae28ed..cc555cf 100644
--- a/TaosGroupTools/i18n/de.lua
+++ b/TaosGroupTools/i18n/de.lua
@@ -21,6 +21,8 @@ local strings = {
     TGT_OPTIONS_SWIMLANES_TOOLTIP =      "Wähle den gewünschten Wert für sichtbare Schwimmbahnen aus. 1-6 Schwimmbahnen möglich.",
     TGT_OPTIONS_VISIBLE_OFF_LABEL =      "Gruppengröße auswählen.",
     TGT_OPTIONS_VISIBLE_OFF_TOOLTIP =    "Wähle den gewünschten Wert ab welcher Gruppengröße das UI angezeigt werden soll.",
+    TGT_OPTIONS_SWIMLANE_SCALE_LABEL =   "Skalierung auswählen.",
+    TGT_OPTIONS_SWIMLANE_SCALE_TOOLTIP = "Wähle den gewünschten Skalierungswert, um die Schwimbahn-Listen zu skalieren. Standard ist 1.",
     TGT_DESCRIPTIONS_NEGATE =            "Magienegation Ultimates der Zauberer Klasse",
     TGT_DESCRIPTIONS_ATRO =              "Atronach Ultimates der Zauberer Klasse",
     TGT_DESCRIPTIONS_OVER =              "Überladung Ultimates der Zauberer Klasse",
diff --git a/TaosGroupTools/i18n/en.lua b/TaosGroupTools/i18n/en.lua
index 1467b6c..78c2fc1 100644
--- a/TaosGroupTools/i18n/en.lua
+++ b/TaosGroupTools/i18n/en.lua
@@ -21,6 +21,8 @@ local strings = {
     TGT_OPTIONS_SWIMLANES_TOOLTIP =      "Choose your value for visible swimlanes. 1-6 swimlanes are possible.",
     TGT_OPTIONS_VISIBLE_OFF_LABEL =      "Select Group size.",
     TGT_OPTIONS_VISIBLE_OFF_TOOLTIP =    "Choose your value of group size for visibility of UI.",
+    TGT_OPTIONS_SWIMLANE_SCALE_LABEL =   "Choose scaling.",
+    TGT_OPTIONS_SWIMLANE_SCALE_TOOLTIP = "Choose your scaling value to set up the scaling of Swimlane-Lists. Default is 1.",
     TGT_DESCRIPTIONS_NEGATE =            "Negate ultimates from Sorcerer class",
     TGT_DESCRIPTIONS_ATRO =              "Atronach ultimates from Sorcerer class",
     TGT_DESCRIPTIONS_OVER =              "Overload ultimates from Sorcerer class",
diff --git a/TaosGroupTools/i18n/fr.lua b/TaosGroupTools/i18n/fr.lua
index ed1cfa2..c7f82de 100644
--- a/TaosGroupTools/i18n/fr.lua
+++ b/TaosGroupTools/i18n/fr.lua
@@ -21,6 +21,8 @@ local strings = {
     TGT_OPTIONS_SWIMLANES_TOOLTIP =      "Choose your value for visible swimlanes. 1-6 swimlanes are possible.",
     TGT_OPTIONS_VISIBLE_OFF_LABEL =      "Select Group size.",
     TGT_OPTIONS_VISIBLE_OFF_TOOLTIP =    "Choose your value of group size for visibility of UI.",
+    TGT_OPTIONS_SWIMLANE_SCALE_LABEL =   "Choose scaling.",
+    TGT_OPTIONS_SWIMLANE_SCALE_TOOLTIP = "Choose your scaling value to set up the scaling of Swimlane-Lists. Default is 1.",
     TGT_DESCRIPTIONS_NEGATE =            "Negate ultimates from Sorcerer class",
     TGT_DESCRIPTIONS_ATRO =              "Atronach ultimates from Sorcerer class",
     TGT_DESCRIPTIONS_OVER =              "Overload ultimates from Sorcerer class",
diff --git a/TaosGroupTools/logic/SettingsHandler.lua b/TaosGroupTools/logic/SettingsHandler.lua
index c16d9d8..0ce7444 100644
--- a/TaosGroupTools/logic/SettingsHandler.lua
+++ b/TaosGroupTools/logic/SettingsHandler.lua
@@ -14,6 +14,7 @@ TGT_VISIBLE_OFFSET_CHANGED = "TGT-VisibleOffsetChanged"
 TGT_STATIC_ULTIMATE_ID_CHANGED = "TGT-StaticUltimateIDChanged"
 TGT_SWIMLANE_ULTIMATE_GROUP_ID_CHANGED = "TGT-SwimlaneUltimateGroupIdChanged"
 TGT_SWIMLANES_CHANGED = "TGT-SwimlanesChanged"
+TGT_SWIMLANE_SCALING_CHANGED = "TGT-SwimlaneScalingChanged"

 --[[
 	Local variables
@@ -118,7 +119,7 @@ function TGT_SettingsHandler.SetSwimlanesSettings(swimlanes)
 end

 --[[
-	Sets MovableSettings and fires TGT-MovableChanged callbacks
+	Sets MovableSettings and fires TGT_MOVABLE_CHANGED callbacks
 ]]--
 function TGT_SettingsHandler.SetMovableSettings(movable)
     if (LOG_ACTIVE) then
@@ -132,6 +133,20 @@ function TGT_SettingsHandler.SetMovableSettings(movable)
 end

 --[[
+	Sets SwimlaneScalingSettings and fires TGT_SWIMLANE_SCALING_CHANGED callbacks
+]]--
+function TGT_SettingsHandler.SetSwimlaneScalingSettings(scaling)
+    if (LOG_ACTIVE) then
+        _logger:logTrace("TGT_SettingsHandler.SetMovableSettings")
+        _logger:logDebug("scaling", scaling)
+    end
+
+    TGT_SettingsHandler.SavedVariables.SwimlaneScaling = scaling
+
+    CALLBACK_MANAGER:FireCallbacks(TGT_SWIMLANE_SCALING_CHANGED, scaling)
+end
+
+--[[
 	Sets OnlyAvaSettings and fires TGT_IS_ZONE_CHANGED callbacks
 ]]--
 function TGT_SettingsHandler.SetOnlyAvaSettings(onlyAva)
diff --git a/TaosGroupTools/ui/SettingsWindow.lua b/TaosGroupTools/ui/SettingsWindow.lua
index d68578f..7f98b35 100644
--- a/TaosGroupTools/ui/SettingsWindow.lua
+++ b/TaosGroupTools/ui/SettingsWindow.lua
@@ -120,6 +120,24 @@ function TGT_SettingsWindow.AddGroupUltimateOptions()
                         end,
                     default     = TGT_DEFAULTS.Swimlanes,
                 },
+                -- Scaling Swimlanes
+                {   type        = "slider",
+                    name        = GetString(TGT_OPTIONS_SWIMLANE_SCALE_LABEL),
+                    tooltip     = GetString(TGT_OPTIONS_SWIMLANE_SCALE_TOOLTIP),
+                    min         = 0.1,
+                    max         = 2.0,
+                    step        = 0.1,
+                    decimals    = 1,
+                    getFunc =
+                        function()
+                            return TGT_SettingsHandler.SavedVariables.SwimlaneScaling
+                        end,
+                    setFunc =
+                        function(value)
+                            TGT_SettingsHandler.SetSwimlaneScalingSettings(value)
+                        end,
+                    default     = TGT_DEFAULTS.SwimlaneScaling,
+                },
             },
         },
 	}
diff --git a/TaosGroupTools/ui/VirtualControls.xml b/TaosGroupTools/ui/VirtualControls.xml
index e8bab60..ba99ba2 100644
--- a/TaosGroupTools/ui/VirtualControls.xml
+++ b/TaosGroupTools/ui/VirtualControls.xml
@@ -133,13 +133,13 @@
           </Controls>
         </Control>
         <Label name="$(parent)UltimateLabel" inherits="SwimlaneListHeaderLabel" text="NEGATE">
-					<Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="28" offsetY="3"/>
+					<Anchor point="LEFT" relativeTo="$(parent)SelectorButtonControl" relativePoint="RIGHT" offsetX="3" />
 				</Label>
       </Controls>
     </Control>

     <Control name="GroupUltimateSwimlane" virtual="true">
-      <Dimensions x="100" y="300"/>
+      <Dimensions x="100" y="25"/>
       <Controls>
         <Control name="$(parent)Header" inherits="GroupUltimateSwimlaneHeader">
           <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="0" offsetY="0"/>
@@ -207,7 +207,7 @@
     </Control>

     <Control name="CompactGroupUltimateSwimlane" virtual="true">
-      <Dimensions x="50" y="150"/>
+      <Dimensions x="50" y="50"/>
       <Controls>
         <Control name="$(parent)Header" inherits="CompactGroupUltimateSwimlaneHeader">
           <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="0" offsetY="0"/>
diff --git a/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.lua b/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.lua
index b0cc7de..bf1112b 100644
--- a/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.lua
+++ b/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.lua
@@ -247,6 +247,18 @@ function TGT_CompactSwimlaneList.ClearPlayersFromSwimlane(swimlane)
 end

 --[[
+	SetControlScale sets the Scale in UI elements
+]]--
+function TGT_CompactSwimlaneList.SetControlScale(scale)
+    if (LOG_ACTIVE) then
+        _logger:logTrace("TGT_CompactSwimlaneList.SetControlScale")
+        _logger:logDebug("scale", scale)
+    end
+
+    _control:SetScale(scale)
+end
+
+--[[
 	SetControlMovable sets the Movable and MouseEnabled flag in UI elements
 ]]--
 function TGT_CompactSwimlaneList.SetControlMovable(isMovable)
@@ -355,6 +367,7 @@ function TGT_CompactSwimlaneList.SetControlActive()
             TGT_CompactSwimlaneList.SetControlMovable(TGT_SettingsHandler.SavedVariables.Movable)
             TGT_CompactSwimlaneList.RestorePosition(TGT_SettingsHandler.SavedVariables.PosX, TGT_SettingsHandler.SavedVariables.PosY)
             TGT_CompactSwimlaneList.SetSwimlanesVisible(TGT_SettingsHandler.SavedVariables.Swimlanes)
+            TGT_CompactSwimlaneList.SetControlScale(TGT_SettingsHandler.SavedVariables.SwimlaneScaling)

             -- Start timeout timer
 	        EVENT_MANAGER:RegisterForUpdate(TGT_CompactSwimlaneList.Name, REFRESHRATE, TGT_CompactSwimlaneList.RefreshList)
@@ -366,6 +379,7 @@ function TGT_CompactSwimlaneList.SetControlActive()
             CALLBACK_MANAGER:RegisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, TGT_CompactSwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:RegisterCallback(TGT_VISIBLE_OFFSET_CHANGED, TGT_CompactSwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:RegisterCallback(TGT_SWIMLANES_CHANGED, TGT_CompactSwimlaneList.SetSwimlanesVisible)
+            CALLBACK_MANAGER:RegisterCallback(TGT_SWIMLANE_SCALING_CHANGED, TGT_CompactSwimlaneList.SetControlScale)
         else
             if (LOG_ACTIVE) then _logger:logDebug("TGT_CompactSwimlaneList.SetControlActive UnregisterCallbacks") end

@@ -379,6 +393,7 @@ function TGT_CompactSwimlaneList.SetControlActive()
             CALLBACK_MANAGER:UnregisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, TGT_CompactSwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:UnregisterCallback(TGT_VISIBLE_OFFSET_CHANGED, TGT_CompactSwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:UnregisterCallback(TGT_SWIMLANES_CHANGED, TGT_CompactSwimlaneList.SetSwimlanesVisible)
+            CALLBACK_MANAGER:UnregisterCallback(TGT_SWIMLANE_SCALING_CHANGED, TGT_CompactSwimlaneList.SetControlScale)
         end
     else
         if (LOG_ACTIVE) then _logger:logDebug("_isActive == isActive; State not changed, do not update") end
@@ -498,11 +513,9 @@ function TGT_CompactSwimlaneList.CreateCompactSwimlaneListRows(swimlaneControl)
 		    row:SetHidden(true) -- initial not visible

 		    if (i == 1) then
-                row:SetAnchor(TOPLEFT, swimlaneControl, TOPLEFT, 0, 50)
-            elseif (i == 5) then -- Fix pixelbug, Why the hell ZOS?!
-                row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, 0)
+                row:SetAnchor(TOPLEFT, swimlaneControl, BOTTOMLEFT, 0, 1)
             else
-				row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, -1)
+				row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, 1)
 			end

 		    lastRow = row
diff --git a/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.xml b/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.xml
index 4213f67..67bf3b1 100644
--- a/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.xml
+++ b/TaosGroupTools/ui/groupultimate/CompactSwimlaneList.xml
@@ -12,27 +12,27 @@
         </Control>

         <Control name="$(parent)Swimlane1" inherits="CompactGroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="0" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" />
         </Control>

         <Control name="$(parent)Swimlane2" inherits="CompactGroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="52" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane1" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane3" inherits="CompactGroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="104" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane2" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane4" inherits="CompactGroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="156" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane3" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane5" inherits="CompactGroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="208" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane4" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane6" inherits="CompactGroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="260" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane5" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>
 		  </Controls>
 	  </TopLevelControl>
diff --git a/TaosGroupTools/ui/groupultimate/SwimlaneList.lua b/TaosGroupTools/ui/groupultimate/SwimlaneList.lua
index 2d9696a..9cab5ef 100644
--- a/TaosGroupTools/ui/groupultimate/SwimlaneList.lua
+++ b/TaosGroupTools/ui/groupultimate/SwimlaneList.lua
@@ -246,6 +246,18 @@ function TGT_SwimlaneList.ClearPlayersFromSwimlane(swimlane)
 end

 --[[
+	SetControlScale sets the Scale in UI elements
+]]--
+function TGT_SwimlaneList.SetControlScale(scale)
+    if (LOG_ACTIVE) then
+        _logger:logTrace("TGT_SwimlaneList.SetControlScale")
+        _logger:logDebug("scale", scale)
+    end
+
+    _control:SetScale(scale)
+end
+
+--[[
 	SetControlMovable sets the Movable and MouseEnabled flag in UI elements
 ]]--
 function TGT_SwimlaneList.SetControlMovable(isMovable)
@@ -354,6 +366,7 @@ function TGT_SwimlaneList.SetControlActive()
             TGT_SwimlaneList.SetControlMovable(TGT_SettingsHandler.SavedVariables.Movable)
             TGT_SwimlaneList.RestorePosition(TGT_SettingsHandler.SavedVariables.PosX, TGT_SettingsHandler.SavedVariables.PosY)
             TGT_SwimlaneList.SetSwimlanesVisible(TGT_SettingsHandler.SavedVariables.Swimlanes)
+            TGT_SwimlaneList.SetControlScale(TGT_SettingsHandler.SavedVariables.SwimlaneScaling)

             -- Start timeout timer
 	        EVENT_MANAGER:RegisterForUpdate(TGT_SwimlaneList.Name, REFRESHRATE, TGT_SwimlaneList.RefreshList)
@@ -365,6 +378,7 @@ function TGT_SwimlaneList.SetControlActive()
             CALLBACK_MANAGER:RegisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, TGT_SwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:RegisterCallback(TGT_VISIBLE_OFFSET_CHANGED, TGT_SwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:RegisterCallback(TGT_SWIMLANES_CHANGED, TGT_SwimlaneList.SetSwimlanesVisible)
+            CALLBACK_MANAGER:RegisterCallback(TGT_SWIMLANE_SCALING_CHANGED, TGT_SwimlaneList.SetControlScale)
         else
             if (LOG_ACTIVE) then _logger:logDebug("TGT_SwimlaneList.SetControlActive UnregisterCallbacks") end

@@ -378,6 +392,7 @@ function TGT_SwimlaneList.SetControlActive()
             CALLBACK_MANAGER:UnregisterCallback(TAO_HUD_HIDDEN_STATE_CHANGED, TGT_SwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:UnregisterCallback(TGT_VISIBLE_OFFSET_CHANGED, TGT_SwimlaneList.SetControlHidden)
             CALLBACK_MANAGER:UnregisterCallback(TGT_SWIMLANES_CHANGED, TGT_SwimlaneList.SetSwimlanesVisible)
+            CALLBACK_MANAGER:UnregisterCallback(TGT_SWIMLANE_SCALING_CHANGED, TGT_SwimlaneList.SetControlScale)
         end
     else
         if (LOG_ACTIVE) then _logger:logDebug("_isActive == isActive; State not changed, do not update") end
@@ -502,11 +517,9 @@ function TGT_SwimlaneList.CreateSwimlaneListRows(swimlaneControl)
 		    row:SetHidden(true) -- initial not visible

 		    if (i == 1) then
-                row:SetAnchor(TOPLEFT, swimlaneControl, TOPLEFT, 0, 25)
-            elseif (i == 5) then -- Fix pixelbug, Why the hell ZOS?!
-                row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, 0)
+                row:SetAnchor(TOPLEFT, swimlaneControl, BOTTOMLEFT, -1, 1)
             else
-				row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, -1)
+				row:SetAnchor(TOPLEFT, lastRow, BOTTOMLEFT, 0, 1)
 			end

 		    lastRow = row
diff --git a/TaosGroupTools/ui/groupultimate/SwimlaneList.xml b/TaosGroupTools/ui/groupultimate/SwimlaneList.xml
index eb05385..da5bf66 100644
--- a/TaosGroupTools/ui/groupultimate/SwimlaneList.xml
+++ b/TaosGroupTools/ui/groupultimate/SwimlaneList.xml
@@ -12,27 +12,27 @@
         </Control>

         <Control name="$(parent)Swimlane1" inherits="GroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="0" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" />
         </Control>

         <Control name="$(parent)Swimlane2" inherits="GroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="102" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane1" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane3" inherits="GroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="204" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane2" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane4" inherits="GroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="306" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane3" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane5" inherits="GroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="408" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane4" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>

         <Control name="$(parent)Swimlane6" inherits="GroupUltimateSwimlane">
-          <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="510" offsetY="0"/>
+          <Anchor point="TOPLEFT" relativeTo="$(parent)Swimlane5" relativePoint="TOPRIGHT" offsetX="2" />
         </Control>
 		  </Controls>
 	  </TopLevelControl>