From 56db8cadd004c6a49d1004f2a01d2e9c2f83a676 Mon Sep 17 00:00:00 2001 From: JeffR Date: Sat, 3 Jan 2026 02:45:14 -0600 Subject: [PATCH 1/2] Adjusts the setup of the AB preview buttons so we initialize the fields in the new block rather than risking the button being asleep while trying to set bitmaps. --- .../assetBrowser/scripts/assetBrowser.tscript | 95 ++++++++----------- 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript index 2406e4263..81c2deb0d 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript @@ -686,22 +686,7 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName ) %tooltip = %assetName; %textBottomPad = 20; - - %previewButton = new GuiIconButtonCtrl() - { - class = "AssetBrowserPreviewButton"; - useMouseEvents = true; - iconLocation = "Center"; - sizeIconToButton = true; - makeIconSquare = true; - textLocation = "Bottom"; - extent = %previewSize.x SPC %previewSize.y + %textBottomPad; - buttonType = "RadioButton"; - buttonMargin = "0 -10"; - profile = ToolsGuiDefaultIconBtnProfile; - assetBrowser = %this; - }; - + %previewScaleSize = %this-->previewSlider.getValue(); if(%previewScaleSize $= "") @@ -710,29 +695,6 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName ) %this-->previewSlider.setValue(1); } - if(%previewScaleSize == 0 || startsWith(%this.dirHandler.currentAddress, "Creator")) - { - %previewButton.iconLocation = "Left"; - %previewButton.textLocation = "Right"; - %previewButton.setextent(160,34); - %previewButton.buttonMargin = "8 8"; - %previewButton.textMargin = "6"; - - %this.previewListMode = true; - } - else - { - %size = %previewSize.x * %previewScaleSize; - %previewButton.setextent(%size,%size + %textBottomPad); - - %this.previewListMode = false; - } - - //%previewButton.extent = %previewSize.x + %previewBounds SPC %previewSize.y + %previewBounds + 24; - %previewButton.assetName = %assetName; - %previewButton.moduleName = %moduleName; - %previewButton.assetType = %assetType; - if(%this.selectMode) { %doubleClickCommand = %this @ ".selectAsset( "@ %this @ ".selectedAsset );"; @@ -754,22 +716,49 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName ) if(%this.previewData.doubleClickCommand !$= "") %doubleClickCommand = %this.previewData.doubleClickCommand; + + %previewButton = new GuiIconButtonCtrl() + { + class = "AssetBrowserPreviewButton"; + useMouseEvents = true; + iconLocation = "Center"; + sizeIconToButton = true; + makeIconSquare = true; + textLocation = "Bottom"; + extent = %previewSize.x SPC %previewSize.y + %textBottomPad; + buttonType = "RadioButton"; + buttonMargin = "0 -10"; + profile = ToolsGuiDefaultIconBtnProfile; + tooltip = %this.previewData.tooltip; + assetBrowser = %this; + assetName = %assetName; + moduleName = %moduleName; + assetType = %assetType; + bitmapAsset = %this.previewData.previewImage; + Command = %this @ ".updateSelection( $ThisControl.assetName, $ThisControl.moduleName );"; + altCommand = %doubleClickCommand; + text = %this.previewData.assetName; + originalAssetName = %this.previewData.assetName; + }; - %previewButton.assetName = %assetName; - %previewButton.moduleName = %moduleName; - %previewButton.assetType = %assetType; - %previewButton.assetBrowser = %this; + if(%previewScaleSize == 0 || startsWith(%this.dirHandler.currentAddress, "Creator")) + { + %previewButton.iconLocation = "Left"; + %previewButton.textLocation = "Right"; + %previewButton.setextent(160,34); + %previewButton.buttonMargin = "8 8"; + %previewButton.textMargin = "6"; + + %this.previewListMode = true; + } + else + { + %size = %previewSize.x * %previewScaleSize; + %previewButton.setextent(%size,%size + %textBottomPad); + + %this.previewListMode = false; + } - %previewButton.setBitmap(%this.previewData.previewImage); - - %previewButton.profile = "AssetBrowserPreview" @ %previewButton.assetType; - %previewButton.tooltip = %this.previewData.tooltip; - %previewButton.Command = %this @ ".updateSelection( $ThisControl.assetName, $ThisControl.moduleName );"; - %previewButton.altCommand = %doubleClickCommand; - - %previewButton.text = %this.previewData.assetName; - %previewButton.text.originalAssetName = %this.previewData.assetName; - // add to the gui control array %this-->assetList.add(%previewButton); From 322d3bb0934f4fb8ef30d620a2a23cd56d23dc7f Mon Sep 17 00:00:00 2001 From: JeffR Date: Wed, 7 Jan 2026 17:57:53 -0600 Subject: [PATCH 2/2] Allows setBitmap calls on IconButtons to set the bitmap data even if the control isn't awake to avoid issues of a set call being 'skipped' --- Engine/source/gui/buttons/guiIconButtonCtrl.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Engine/source/gui/buttons/guiIconButtonCtrl.cpp b/Engine/source/gui/buttons/guiIconButtonCtrl.cpp index 9c0cd7517..10f84ba28 100644 --- a/Engine/source/gui/buttons/guiIconButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiIconButtonCtrl.cpp @@ -202,11 +202,10 @@ bool GuiIconButtonCtrl::resize(const Point2I &newPosition, const Point2I &newExt void GuiIconButtonCtrl::setBitmap(const char *name) { + _setBitmap(name); if(!isAwake()) return; - _setBitmap(name); - // So that extent is recalculated if autoSize is set. resize( getPosition(), getExtent() );