From 81ef1aae5fc5a9390c45d80879cd37a0166a173f Mon Sep 17 00:00:00 2001
From: Imbris <hank.aa7@gmail.com>
Date: Sat, 27 Jul 2019 15:26:31 -0400
Subject: [PATCH] Ui scaling interface tweaks

---
 assets/voxygen/element/nothing.png    | Bin 156 -> 0 bytes
 voxygen/src/hud/img_ids.rs            |   3 +-
 voxygen/src/hud/mod.rs                |  15 +---
 voxygen/src/hud/settings_window.rs    | 111 +++++++++++++-------------
 voxygen/src/menu/char_selection/ui.rs |   6 +-
 voxygen/src/menu/main/ui.rs           |   6 +-
 6 files changed, 68 insertions(+), 73 deletions(-)
 delete mode 100644 assets/voxygen/element/nothing.png

diff --git a/assets/voxygen/element/nothing.png b/assets/voxygen/element/nothing.png
deleted file mode 100644
index 8a9c70dba21f299db6c57cb58e2b88ed682f3591..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 156
zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaMs(j9#r85lP9
zbN@+X1@buyJR*x382Ao@Fyrz36)8YLi4xa{lHmNblJdl&REC1Y%)Ao4ywnl}6Foyc
qv%h|vFMw)zJzX3_B*K#ufB?v4Wnk<wehg$VFnGH9xvX<aXaWFZG9`Tg

diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs
index 87d295f0fb..4996363eb9 100644
--- a/voxygen/src/hud/img_ids.rs
+++ b/voxygen/src/hud/img_ids.rs
@@ -145,7 +145,6 @@ image_ids! {
         <ImageGraphic>
 
         charwindow_gradient:"voxygen/element/misc_bg/charwindow.png",
-        nothing: "voxygen/element/nothing.png",
 
         // Spell Book Window
         spellbook_icon: "voxygen/element/icons/spellbook.png",
@@ -196,6 +195,6 @@ image_ids! {
         social_icon: "voxygen/element/icons/social.png",
 
         <BlankGraphic>
-        blank: (),
+        nothing: (),
     }
 }
diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs
index 66f1bd28dd..455e51bab3 100644
--- a/voxygen/src/hud/mod.rs
+++ b/voxygen/src/hud/mod.rs
@@ -123,7 +123,7 @@ pub struct DebugInfo {
     pub ping_ms: f64,
     pub coordinates: Option<comp::Pos>,
 }
-//#[derive(Serialize, Deserialize)]
+
 pub enum Event {
     SendMessage(String),
     AdjustMousePan(u32),
@@ -167,8 +167,6 @@ pub struct Show {
     open_windows: Windows,
     map: bool,
     inventory_test_button: bool,
-    rel_to_win: bool,
-    absolute: bool,
     mini_map: bool,
     ingame: bool,
     settings_tab: SettingsTab,
@@ -320,8 +318,6 @@ impl Hud {
                 settings_tab: SettingsTab::Interface,
                 want_grab: true,
                 ingame: true,
-                rel_to_win: true,
-                absolute: false,
             },
             to_focus: None,
             force_ungrab: false,
@@ -638,13 +634,8 @@ impl Hud {
 
         // Settings
         if let Windows::Settings = self.show.open_windows {
-            for event in SettingsWindow::new(
-                &global_state,
-                &self.show,
-                &self.imgs,
-                &self.fonts,               
-            )
-            .set(self.ids.settings_window, ui_widgets)
+            for event in SettingsWindow::new(&global_state, &self.show, &self.imgs, &self.fonts)
+                .set(self.ids.settings_window, ui_widgets)
             {
                 match event {
                     settings_window::Event::ToggleHelp => self.show.toggle_help(),
diff --git a/voxygen/src/hud/settings_window.rs b/voxygen/src/hud/settings_window.rs
index 48c1e55e45..07d5b96980 100644
--- a/voxygen/src/hud/settings_window.rs
+++ b/voxygen/src/hud/settings_window.rs
@@ -29,7 +29,6 @@ widget_ids! {
         show_help_label,
         ui_scale_label,
         ui_scale_slider,
-        ui_scale_slider_2,
         ui_scale_button,
         ui_scale_value,
         relative_to_win_button,
@@ -108,7 +107,7 @@ impl<'a> SettingsWindow<'a> {
         global_state: &'a GlobalState,
         show: &'a Show,
         imgs: &'a Imgs,
-        fonts: &'a Fonts,        
+        fonts: &'a Fonts,
     ) -> Self {
         Self {
             global_state,
@@ -322,29 +321,31 @@ impl<'a> Widget for SettingsWindow<'a> {
                 .font_size(18)
                 .font_id(self.fonts.opensans)
                 .color(TEXT_COLOR)
-                .set(state.ids.ui_scale_label, ui);            
+                .set(state.ids.ui_scale_label, ui);
 
             // Relative Scaling Button
-
-            if Button::image(match ui_scale {
-                ScaleMode::Absolute(_) => self.imgs.check,
-                ScaleMode::RelativeToWindow(_) => self.imgs.check_checked,
-                ScaleMode::DpiFactor => self.imgs.check_checked,
-            })
-            .w_h(288.0 / 24.0, 288.0 / 24.0)
-            .down_from(state.ids.ui_scale_label, 20.0)
-            .hover_image(match ui_scale {
-                ScaleMode::Absolute(_) => self.imgs.check_mo,
-                ScaleMode::RelativeToWindow(_) => self.imgs.check_checked,
-                ScaleMode::DpiFactor => self.imgs.check_checked,
-            })
-            .press_image(match ui_scale {
-                ScaleMode::Absolute(_) => self.imgs.check_press,
-                ScaleMode::RelativeToWindow(_) => self.imgs.check_checked,
-                ScaleMode::DpiFactor => self.imgs.check_checked,
-            })
-            .set(state.ids.relative_to_win_button, ui)
-            .was_clicked()
+            let (check_img, check_mo_img, check_press_img, relative_selected) = match ui_scale {
+                ScaleMode::RelativeToWindow(_) => (
+                    self.imgs.check_checked,
+                    self.imgs.check_checked,
+                    self.imgs.check_checked,
+                    true,
+                ),
+                ScaleMode::Absolute(_) | ScaleMode::DpiFactor => (
+                    self.imgs.check,
+                    self.imgs.check_mo,
+                    self.imgs.check_press,
+                    false,
+                ),
+            };
+            if Button::image(check_img)
+                .w_h(288.0 / 24.0, 288.0 / 24.0)
+                .down_from(state.ids.ui_scale_label, 20.0)
+                .hover_image(check_mo_img)
+                .press_image(check_press_img)
+                .set(state.ids.relative_to_win_button, ui)
+                .was_clicked()
+                && !relative_selected
             {
                 events.push(Event::UiScale(ScaleChange::ToRelative));
             }
@@ -358,26 +359,28 @@ impl<'a> Widget for SettingsWindow<'a> {
                 .set(state.ids.relative_to_win_text, ui);
 
             // Absolute Scaling Button
-
-            if Button::image(match ui_scale {
-                ScaleMode::Absolute(_) => self.imgs.check_checked,
-                ScaleMode::RelativeToWindow(_) => self.imgs.check,
-                ScaleMode::DpiFactor => self.imgs.check,
-            })
-            .w_h(288.0 / 24.0, 288.0 / 24.0)
-            .down_from(state.ids.relative_to_win_button, 20.0)
-            .hover_image(match ui_scale {
-                ScaleMode::Absolute(_) => self.imgs.check_checked,
-                ScaleMode::RelativeToWindow(_) => self.imgs.check_mo,
-                ScaleMode::DpiFactor => self.imgs.check_mo,
-            })
-            .press_image(match ui_scale {
-                ScaleMode::Absolute(_) => self.imgs.check_checked,
-                ScaleMode::RelativeToWindow(_) => self.imgs.check_press,
-                ScaleMode::DpiFactor => self.imgs.check_press,
-            })
-            .set(state.ids.absolute_scale_button, ui)
-            .was_clicked()
+            let (check_img, check_mo_img, check_press_img, absolute_selected) = match ui_scale {
+                ScaleMode::Absolute(_) => (
+                    self.imgs.check_checked,
+                    self.imgs.check_checked,
+                    self.imgs.check_checked,
+                    true,
+                ),
+                ScaleMode::RelativeToWindow(_) | ScaleMode::DpiFactor => (
+                    self.imgs.check,
+                    self.imgs.check_mo,
+                    self.imgs.check_press,
+                    false,
+                ),
+            };
+            if Button::image(check_img)
+                .w_h(288.0 / 24.0, 288.0 / 24.0)
+                .down_from(state.ids.relative_to_win_button, 20.0)
+                .hover_image(check_mo_img)
+                .press_image(check_press_img)
+                .set(state.ids.absolute_scale_button, ui)
+                .was_clicked()
+                && !absolute_selected
             {
                 events.push(Event::UiScale(ScaleChange::ToAbsolute));
             }
@@ -409,23 +412,21 @@ impl<'a> Widget for SettingsWindow<'a> {
                     events.push(Event::UiScale(ScaleChange::Adjust(2.0f64.powf(new_val))));
                 }
                 Text::new(&format!("{:.2}", scale))
-                    .up_from(state.ids.ch_transp_value, 75.0)                                   
+                    .up_from(state.ids.ch_transp_value, 75.0)
                     .font_size(14)
                     .font_id(self.fonts.opensans)
                     .color(TEXT_COLOR)
                     .set(state.ids.ui_scale_value, ui);
             } else {
-                if let Some(_val) =
-                    ImageSlider::continuous(5.0, 0.0, 10.0, self.imgs.nothing, self.imgs.slider)
-                        .w_h(210.0, 22.0)
-                        .right_from(state.ids.absolute_scale_text, 10.0)
-                        .track_breadth(12.0)
-                        .slider_length(10.0)
-                        .track_color(Color::Rgba(1.0, 1.0, 1.0, 0.2))
-                        .slider_color(Color::Rgba(1.0, 1.0, 1.0, 0.2))
-                        .pad_track((5.0, 5.0))
-                        .set(state.ids.ui_scale_slider_2, ui)
-                {}
+                ImageSlider::continuous(0.0, 0.0, 1.0, self.imgs.nothing, self.imgs.slider)
+                    .w_h(208.0, 22.0)
+                    .right_from(state.ids.absolute_scale_text, 10.0)
+                    .track_breadth(12.0)
+                    .slider_length(10.0)
+                    .track_color(Color::Rgba(1.0, 1.0, 1.0, 0.2))
+                    .slider_color(Color::Rgba(1.0, 1.0, 1.0, 0.2))
+                    .pad_track((5.0, 5.0))
+                    .set(state.ids.ui_scale_slider, ui);
             }
 
             // Crosshair Options
diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs
index 10170cafd5..8594187df5 100644
--- a/voxygen/src/menu/char_selection/ui.rs
+++ b/voxygen/src/menu/char_selection/ui.rs
@@ -2,7 +2,7 @@ use crate::{
     render::{Consts, Globals, Renderer},
     ui::{
         self,
-        img_ids::{ImageGraphic, VoxelGraphic},
+        img_ids::{BlankGraphic, ImageGraphic, VoxelGraphic},
         ImageSlider, Ui,
     },
     GlobalState,
@@ -180,7 +180,9 @@ image_ids! {
         icon_border_mo: "voxygen/element/buttons/border_mo.png",
         icon_border_press: "voxygen/element/buttons/border_press.png",
         icon_border_pressed: "voxygen/element/buttons/border_pressed.png",
-        nothing: "voxygen/element/nothing.png",
+
+        <BlankGraphic>
+        nothing: (),
     }
 }
 
diff --git a/voxygen/src/menu/main/ui.rs b/voxygen/src/menu/main/ui.rs
index 2921873e3c..3527ed7bdd 100644
--- a/voxygen/src/menu/main/ui.rs
+++ b/voxygen/src/menu/main/ui.rs
@@ -2,7 +2,7 @@ use crate::{
     render::Renderer,
     ui::{
         self,
-        img_ids::{ImageGraphic, VoxelGraphic},
+        img_ids::{BlankGraphic, ImageGraphic, VoxelGraphic},
         Ui,
     },
     GlobalState,
@@ -70,7 +70,9 @@ image_ids! {
         <ImageGraphic>
         bg: "voxygen/background/bg_main.png",
         error_frame: "voxygen/element/frames/window_2.png",
-        nothing: "voxygen/element/nothing.png",
+
+        <BlankGraphic>
+        nothing: (),
     }
 
 }