"File Open" dialogue enumerates Windows junction points #23261

Closed
opened 2010-08-10 18:47:52 +02:00 by Andrew McDonald · 12 comments

%%%The "File -> Open" (and Save As, Import etc.) dialogue boxes in Blender 2.53 Beta display too many items. They're enumerating folder junctions in addition to normal folders. This can cause user confusion in the dialogue. See attached screenshot.

Such junctions are only intended for backwards compatibility with older programs, because Microsoft has moved the user subfolder locations over time - Pictures, Music etc. used to be in My Documents, but aren't any more. They've also been renamed, hence "AppData" and "Application Data" both appearing. They're only supposed to be used when a (naughty) program has hard-coded a path instead of using SHGetFolderPath or similar, and I don't think are intended for display to the user.

Discovered using Blender 2.53 Beta, x64 package, on Windows 7 Ultimate x64.%%%

%%%The "File -> Open" (and Save As, Import etc.) dialogue boxes in Blender 2.53 Beta display too many items. They're enumerating folder junctions in addition to normal folders. This can cause user confusion in the dialogue. See attached screenshot. Such junctions are only intended for backwards compatibility with older programs, because Microsoft has moved the user subfolder locations over time - Pictures, Music etc. used to be in My Documents, but aren't any more. They've also been renamed, hence "AppData" and "Application Data" both appearing. They're only supposed to be used when a (naughty) program has hard-coded a path instead of using SHGetFolderPath or similar, and I don't think are intended for display to the user. Discovered using Blender 2.53 Beta, x64 package, on Windows 7 Ultimate x64.%%%

Changed status to: 'Open'

Changed status to: 'Open'

%%%assigning to Nathan%%%

%%%assigning to Nathan%%%

%%%Is not a bug, it's a feature.

I want see all folders,
if I enable display hidden folders blender should
display hidden folders (junctions) too ?

Mayby blender should read from registry settings (for folders)
and display hidden/system folders if user it want ???%%%

%%%Is not a bug, it's a feature. I want see all folders, if I enable display hidden folders blender should display hidden folders (junctions) too ? Mayby blender should read from registry settings (for folders) and display hidden/system folders if user it want ???%%%

%%%The problem here seems to be that we support hiding Unix style .files, but don't check for hidden file flags on Windows. Would be a useful feature to add, but not considering this a bug, the tooltip mentions it's specifically for . files now.%%%

%%%The problem here seems to be that we support hiding Unix style .files, but don't check for hidden file flags on Windows. Would be a useful feature to add, but not considering this a bug, the tooltip mentions it's specifically for . files now.%%%

%%%No, isn't to do with "hidden" items. Junctions are not hidden folders. They're fake paths designed for redirecting old badly-written apps which reference hard-coded directory names.

http://support.microsoft.com/kb/930128

For instance, both "Application Data" and "AppData" are present in the Blender box. Hidden files were indeed set hidden in the Explorer box in my shot; but if they weren't you still wouldn't see Application Data. You would only see it if you show hidden files and if you set Windows to display Hidden/System items ("protected operating system files" in Folder Options). Even doing this is of no practical use in this dialogue box, because they're just shortcuts to elsewhere.

The fact that the dialogue checks for hidden files by looking for the period is also a bug IMO, because it's not how Windows tags things "hidden". But again, that's completely separate from this - hidden files and junction points are completely separate ideas. But at least the tooltip does say this (although "hidden dot files" will mean absolutely nothing to the average Windows user.)%%%

%%%No, isn't to do with "hidden" items. Junctions are not hidden folders. They're fake paths designed for redirecting old badly-written apps which reference hard-coded directory names. http://support.microsoft.com/kb/930128 For instance, both "Application Data" and "AppData" are present in the Blender box. Hidden files were indeed set hidden in the Explorer box in my shot; but if they weren't you still wouldn't see Application Data. You would only see it if you show hidden files *and* if you set Windows to display Hidden/System items ("protected operating system files" in Folder Options). Even doing this is of no practical use in this dialogue box, because they're just shortcuts to elsewhere. The fact that the dialogue checks for hidden files by looking for the period is also a bug IMO, because it's not how Windows tags things "hidden". But again, that's completely separate from this - hidden files and junction points are completely separate ideas. But at least the tooltip does say this (although "hidden dot files" will mean absolutely nothing to the average Windows user.)%%%

%%%To me it seems that these junction points are just like symlinks, and set to hidden by default. They should not necessarily be hidden because they are junction points, as I understand it you can create junction points for other reasons too, just as you might create symlinks on other filesystems.%%%

%%%To me it seems that these junction points are just like symlinks, and set to hidden by default. They should not necessarily be hidden because they are junction points, as I understand it you can create junction points for other reasons too, just as you might create symlinks on other filesystems.%%%

%%%That's true; advanced users might create them. But on Windows, a "shortcut" is overwhelmingly used for that instead. For instance, there's no way to create junctions through the Windows UI.

Playing with _findfirst (MSVC runtime) and FindFirstFile (Win32 runtime), it seems they both enumerate junctions as well as hidden/system items regardless of the user's current setting. It's up to the app to filter them as needed. Those particular junctions I brought up are only invisible most of the time because they're both "hidden" and "system" (user-created junctions presumably wouldn't be.)

So probably it should be as Mariusz suggests: check the current Windows user settings and filter as appropriate. Then the behaviour would match standard Win32 dialogue boxes as used in other programs. (Side rants: I wish Blender would just standard OS dialogue boxese here!) I'm not sure how you query those Windows settings though :-)%%%

%%%That's true; advanced users might create them. But on Windows, a "shortcut" is overwhelmingly used for that instead. For instance, there's no way to create junctions through the Windows UI. Playing with _findfirst (MSVC runtime) and FindFirstFile (Win32 runtime), it seems they both enumerate junctions as well as hidden/system items regardless of the user's current setting. It's up to the app to filter them as needed. Those particular junctions I brought up are only invisible most of the time because they're both "hidden" and "system" (user-created junctions presumably wouldn't be.) So probably it should be as Mariusz suggests: check the current Windows user settings and filter as appropriate. Then the behaviour would match standard Win32 dialogue boxes as used in other programs. (Side rants: I wish Blender would just standard OS dialogue boxese here!) I'm not sure how you query those Windows settings though :-)%%%

%%%If you want create junction in exlorer.exe shell
you shoud use "Link shell extension"

http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

I think user should have option

  • use standard windows/linux dialog
  • or use blender dialog

In windows is very simple use standard explorer listview to display icons
%%%

%%%If you want create junction in exlorer.exe shell you shoud use "Link shell extension" http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html I think user should have option - use standard windows/linux dialog - or use blender dialog In windows is very simple use standard explorer listview to display icons %%%
Member

%%%These junction points also show always in Explorer. These junctions have never worked on my Windows 7 machines :/ Always throw some error message. For me both Explorer and Blender filebrowser show the same things - I haven't changed explorer settings other than always showing extensions. I wasn't aware junction could be hidden too (and don't know yet where, either).

Anyway, I'll try looking into this, although I'm inclined in leaving current behaviour as is.%%%

%%%These junction points also show always in Explorer. These junctions have never worked on my Windows 7 machines :/ Always throw some error message. For me both Explorer and Blender filebrowser show the same things - I haven't changed explorer settings other than always showing extensions. I wasn't aware junction could be hidden too (and don't know yet where, either). Anyway, I'll try looking into this, although I'm inclined in leaving current behaviour as is.%%%

%%%I think they should not be completely hidden, but there should be some kind of information that they are not actual folders. This could be made through showing them with colored text, for example black text is normal folder, blue is hidden folder, orange is junction. So you could check "show hidden" "show junctions", but you could also know which folders are what type...

(By the way, these Junctions don´t work on my pc, i just get error messages.)%%%

%%%I think they should not be completely hidden, but there should be some kind of information that they are not actual folders. This could be made through showing them with colored text, for example black text is normal folder, blue is hidden folder, orange is junction. So you could check "show hidden" "show junctions", but you could also know which folders are what type... (By the way, these Junctions don´t work on my pc, i just get error messages.)%%%
Member

%%%Moving to our todo list on wiki: http://wiki.blender.org/index.php/Dev:2.5/Source/Development/Todo/Simple_Todos#Filebrowser%%%

%%%Moving to our todo list on wiki: http://wiki.blender.org/index.php/Dev:2.5/Source/Development/Todo/Simple_Todos#Filebrowser%%%
Member

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#23261
No description provided.