From f5beae09da90c979b0e85f5fe2472ec06477e91b Mon Sep 17 00:00:00 2001 From: JannisX11 Date: Sat, 12 Mar 2022 15:09:09 +0100 Subject: [PATCH] Fix #1331 Quad view cannot be rescaled vertically Fix #1333 Missing translation Fix #1332 Discord link protocol Improve appearance of menu search bar Smaller panel handle on top/bottom slot panels Fix issue with saving sidebar panel order Fix #1330 Color panel resizing issue --- css/general.css | 2 -- css/panels.css | 19 +++++++++---------- css/window.css | 1 + js/interface/about.js | 2 +- js/interface/interface.js | 6 +++--- js/interface/menu.js | 1 + js/interface/panels.js | 14 +++++--------- js/interface/settings.js | 6 +++--- js/texturing/color.js | 11 +++++++++-- lang/en.json | 5 +++-- 10 files changed, 35 insertions(+), 32 deletions(-) diff --git a/css/general.css b/css/general.css index fbcc70f5..43043e1f 100644 --- a/css/general.css +++ b/css/general.css @@ -596,8 +596,6 @@ .contextMenu .menu_search_bar { padding: 0; display: flex; - border: 1px solid var(--color-border); - margin: 2px; } .contextMenu .menu_search_bar input { color: inherit; diff --git a/css/panels.css b/css/panels.css index 3bc90727..694b1ab4 100644 --- a/css/panels.css +++ b/css/panels.css @@ -1,6 +1,8 @@ /*Panel*/ .panel { background-color: var(--color-ui); + display: flex; + flex-direction: column; } .panel.grow { display: flex; @@ -34,17 +36,13 @@ h3.panel_handle { display: flex; width: 100%; - height: auto; + height: 40px; margin: 0; padding: 0; font-size: inherit; background: var(--color-ui); place-content: space-between; - } - body > h3.panel_handle { - pointer-events: none; - box-shadow: 0 0 16px black; - width: auto; + align-items: center; } h3.panel_handle > label { flex: 1 1 auto; @@ -52,11 +50,13 @@ font-size: 1.1em; text-transform: uppercase; color: var(--color-subtle_text); - margin: 6px 8px; - margin-right: auto; - padding: 0px 4px; + margin-left: 8px; + padding: 0 4px; cursor: move; } + #center h3.panel_handle { + height: 32px; + } h3.panel_handle > label > span { cursor: inherit; } @@ -78,7 +78,6 @@ } h3.panel_handle > .tool.panel_control { flex: 0 0 24px; - margin-top: 4px; opacity: 0.7; cursor: pointer; } diff --git a/css/window.css b/css/window.css index 5ef0db8f..d1589963 100644 --- a/css/window.css +++ b/css/window.css @@ -32,6 +32,7 @@ --toolbar-height: 30px; position: relative; display: grid; + overflow: hidden; grid-template-columns: 332px auto 314px; grid-template-rows: var(--toolbar-height) minmax(200px, 5000px) 26px; grid-template-areas: diff --git a/js/interface/about.js b/js/interface/about.js index a7693a94..e5805fb6 100644 --- a/js/interface/about.js +++ b/js/interface/about.js @@ -55,7 +55,7 @@ BARS.defineActions(() => { - + diff --git a/js/interface/interface.js b/js/interface/interface.js index ab0645e7..84d4c99f 100644 --- a/js/interface/interface.js +++ b/js/interface/interface.js @@ -158,7 +158,7 @@ const Interface = { }, position() { this.setPosition({ - top: Interface.work_screen.offsetTop, + top: 0, bottom: 0, left: Interface.data.left_bar_width+2 }) @@ -189,7 +189,7 @@ const Interface = { }, position() { this.setPosition({ - top: Interface.work_screen.offsetTop+30, + top: 30, bottom: 0, right: Interface.data.right_bar_width-2 }) @@ -218,7 +218,7 @@ const Interface = { position() {this.setPosition({ left: Interface.left_bar_width+2, right: Interface.right_bar_width+2, - top: $('#preview').offset().top + document.getElementById('preview').clientHeight*Interface.data.quad_view_y/100 + top: Interface.preview.offsetTop + 30 + Interface.preview.clientHeight*Interface.data.quad_view_y/100 })} }), top: new ResizeLine('top', { diff --git a/js/interface/menu.js b/js/interface/menu.js index 9dad878d..373137b6 100644 --- a/js/interface/menu.js +++ b/js/interface/menu.js @@ -175,6 +175,7 @@ class Menu { let search_button = Interface.createElement('div', {}, Blockbench.getIconNode('search')); let search_bar = Interface.createElement('li', {class: 'menu_search_bar'}, [input, search_button]); menu_node.append(search_bar); + menu_node.append(Interface.createElement('li', {class: 'menu_separator'})); let object_list = []; list.forEach(function(s2, i) { diff --git a/js/interface/panels.js b/js/interface/panels.js index 8c9c3ee9..ceb2bdef 100644 --- a/js/interface/panels.js +++ b/js/interface/panels.js @@ -244,7 +244,6 @@ class Panel { this.position_data.float_position[1] = position_before[1]; } this.update(); - saveSidebarOrder() updateInterface() removeEventListeners(document, 'mousemove touchmove', drag); @@ -412,6 +411,7 @@ class Panel { } if (slot == 'left_bar' || slot == 'right_bar') { + let change_panel_order = !!ref_panel; if (!ref_panel && Interface.data[slot].includes(this.id)) { let panels = Interface.data[slot].filter(id => Panels[id] && Panels[id].slot == slot || id == this.id); let index = panels.indexOf(this.id); @@ -430,8 +430,10 @@ class Panel { } else { $(ref_panel.node).after(this.node); } - Interface.data[slot].remove(this.id); - Interface.data[slot].splice(Interface.data[slot].indexOf(ref_panel.id) + (before ? 0 : 1), 0, this.id); + if (change_panel_order) { + Interface.data[slot].remove(this.id); + Interface.data[slot].splice(Interface.data[slot].indexOf(ref_panel.id) + (before ? 0 : 1), 0, this.id); + } } else { document.getElementById(slot).append(this.node); Interface.data[slot].safePush(this.id); @@ -470,7 +472,6 @@ class Panel { if (this.onResize) { this.onResize() } - saveSidebarOrder() updateInterface() } return this; @@ -575,7 +576,6 @@ function updateInterfacePanels() { $('.quad_canvas_wrapper.qcw_y').css('height', Interface.data.quad_view_y+'%') $('.quad_canvas_wrapper:not(.qcw_x)').css('width', (100-Interface.data.quad_view_x)+'%') $('.quad_canvas_wrapper:not(.qcw_y)').css('height', (100-Interface.data.quad_view_y)+'%') - //$('#timeline').css('height', Interface.data.timeline_height+'px') for (var key in Interface.Resizers) { var resizer = Interface.Resizers[key] resizer.update() @@ -601,10 +601,6 @@ function setActivePanel(panel) { Prop.active_panel = panel } -function saveSidebarOrder() { - localStorage.setItem('interface_data', JSON.stringify(Interface.data)) -} - function setupMobilePanelSelector() { if (Blockbench.isMobile) { Interface.PanelSelectorVue = new Vue({ diff --git a/js/interface/settings.js b/js/interface/settings.js index c208c60d..c9ee60a5 100644 --- a/js/interface/settings.js +++ b/js/interface/settings.js @@ -316,9 +316,9 @@ const Settings = { new Setting('export_empty_groups', {category: 'export', value: true}); new Setting('export_groups', {category: 'export', value: true}); new Setting('obj_face_export_mode', {category: 'export', value: 'both', type: 'select', options: { - both: 'settings.obj_face_export_mode.both', - tris: 'settings.obj_face_export_mode.tris', - quads: 'settings.obj_face_export_mode.quads', + both: tl('settings.obj_face_export_mode.both'), + tris: tl('settings.obj_face_export_mode.tris'), + quads: tl('settings.obj_face_export_mode.quads'), }}); new Setting('animation_sample_rate',{category: 'export', value: 24, type: 'number'}); new Setting('sketchfab_token', {category: 'export', value: '', type: 'password'}); diff --git a/js/texturing/color.js b/js/texturing/color.js index 99039f61..07bd69cb 100644 --- a/js/texturing/color.js +++ b/js/texturing/color.js @@ -74,7 +74,13 @@ Interface.definePanels(() => { $('#main_colorpicker').spectrum('reflow'); Interface.Panels.color.vue.width = 0; Vue.nextTick(() => { - Interface.Panels.color.vue.width = this.width + let disp_before = this.vue.$refs.square_picker.style.display; + console.log(disp_before) + this.vue.$refs.square_picker.style.display = 'none'; + console.log(this.height, this.vue.$el.clientHeight, this.handle.clientHeight) + let max = Math.min(460, (this.height - this.vue.$el.clientHeight - this.handle.clientHeight) * (this.vue.picker_type == 'box' ? 1.265 : 1)); + Interface.Panels.color.vue.width = Math.clamp(this.width, 100, max); + this.vue.$refs.square_picker.style.display = disp_before; }) }, component: { @@ -101,6 +107,7 @@ Interface.definePanels(() => { methods: { togglePickerType() { settings.color_wheel.set(!settings.color_wheel.value); + Panels.color.onResize(); }, sort(event) { var item = this.palette.splice(event.oldIndex, 1)[0]; @@ -178,7 +185,7 @@ Interface.definePanels(() => {
-
+
diff --git a/lang/en.json b/lang/en.json index d1d1f2f6..5d65bc6c 100644 --- a/lang/en.json +++ b/lang/en.json @@ -540,7 +540,7 @@ "layout.color.ui": "UI", "layout.color.ui.desc": "Main interface color", "layout.color.bright_ui": "Bright UI", - "layout.color.bright_ui.desc": "Context menues and tooltips", + "layout.color.bright_ui.desc": "Context menus and tooltips", "layout.color.button": "Button", "layout.color.button.desc": "Buttons and switches", "layout.color.selected": "Selected", @@ -993,6 +993,8 @@ "action.add_group.desc": "Adds a new group or bone", "action.group_elements": "Group Elements", "action.group_elements.desc": "Wrap selected elements into a new group", + "action.resolve_group": "Resolve Group", + "action.resolve_group.desc": "Resolve the group while retaining its children in the same place", "action.outliner_toggle": "Toggle More Options", "action.outliner_toggle.desc": "Toggles switches for more options in the outliner", "action.cube_counter": "Model Statistics", @@ -1399,7 +1401,6 @@ "menu.texture_mesh.texture_name": "Texture Name...", "menu.group.sort": "Sort", - "menu.group.resolve": "Resolve", "menu.palette.load.default": "Default", "menu.palette.load.empty": "Blank",