[Extension] Dialog Cascader for Ruby extension dialogs

[Extension] Dialog Cascader for Ruby extension dialogs

v 1.0.0

Purpose: Brings together extension dialogs scattered on multiple screens or possibly lost offscreen. May be a benefit to users with notebook docks or who move their machine between locations with differing display setups.

Will not work on native web-based dialogs such as 3D Warehouse, Extension Manager, etc. (These windows are hidden from the API.)

NOTE: SketchUp 2024 has may have had some fixes that can natively detect lost dialogs and move them back onto an active display. This extension is meant for older versions that do not have this fix or possibly as a complement for when the native fix might fail.

Localized for SketchUp supported languages (and nl & uk.)


Adds a menu item to the Window menu.

Provides a toolbar with a button: cascader_toolbar

  • single-click: cascades any open Ruby dialogs
  • double-click: shows About dialog

About_dialog_FHD_thin


Tested on MS Windows platform. Version 2024, 2023, 2022, 2021, & 2017.

I tried to write this so it might possibly even load under Ruby 1.8 for versions prior to SU2014.
But no guarantees for such old versions. (I do not have a machine ready that can run these old versions and I’m not really interested in trying to test for them.)

8 Likes

This is great Dan, thanks!

We get support requests about this issue multiple times per week - I think it is still an issue on SU2024. I will be pointing my users towards this useful utility.

What exactly did they ‘fix’ on SU2024 because I have had reports of this still happening.

The release notes bullet item(s) were rather vague. Some of the dialog positioning fixes I think were treated as development regressions so are not listed in the public release notes. The item stated:

  • Fixed an issue where UI::HtmlDialog can be set off screen and disappear.

What I myself noticed was that the native dialog windows (incl. web-based) seemed to move back onscreen quite well.

I said this in the question thread you started. In that thread, Josh admitted vaguely “work was done in that area”.

But then, what about UI::WebDialog windows? Dynamic Components and its Generate Report still use these class window interfaces. Also many commonly used extensions still have not migrated to the newer UI::HtmlDialog class windows.


Anyway, it was the complaints by @medeek and yourself that prompted me to cobble up this extension, especially for older SketchUp versions that would not be receiving any native fixes.

I myself also needed it, as in testing I’ve had to switch the main (primary) display back and forth several times. (This confuses SketchUp especially when the dialog window position coordinates are negative values.)


I also tested it on SU2017 which used to keep window metric settings in the Windows registry. It is not possible to store a negative DWORD value in the registry. So, I set the positions to enormous values way outside the virtual desktop bounds. SU2017 natively moved the dialog windows back onto the screen, but strangely did not seem to update the registry with the new values.

The takeaway could be that SU2017 on MS Windows and earlier may not have the disappearing window problems that necessitate this extension. (shrug)

I’ve edited the opening post and crossed out has and inserted may have … had fixes, … etc.

1 Like

This will be a very valuable resource for many SketchUp users, once again thank-you Dan.

1 Like

It is a simple idea really, but not an original one by me.

Right-click your Windows taskbar and you’ll notice there is a Cascade Windows command.
And most Multiple Document Interface applications have a document window cascade command.

SketchUp on the Mac may itself have one on its Window menu. Ie …

Sketchup.send_action('arrangeInFront:')

… may be the “Macish” send action for it. But this may only cascade the document (model) windows.

1 Like

Now there may be a caveat. An extension dialog could within its JavaScript periodically test its own position and change it via a call to the Ruby side. So, an extension could possibly become confused as to where it should be and might fight against the cascade positioning.

1 Like