Panels Redesign #41261

Closed
opened 2014-07-31 05:20:08 +02:00 by Blake Stacks · 32 comments

##Creation approved by Jonathan Williamson##

Blender has a flexible panel system that allows for quick rearrangement of the UI.

Problems

Any flexible system has its problems, and Blender is no exception

  • Design does not promote its features
  • Header functions to minimize, not drag
  • Dragging is controlled by a small widget
  • Panels aren't distinctly separated from background
  • Panels blend into each other as well as the background
  • Despite underlying organization, seems disorganized

Positives

  • Very uncluttered
  • Sleek appearance
  • Simple

Proposal

Hopefully combine the best of both worlds

Draw the panels with a header and body background by default, rather than a divider

  • Keep the current default as an option (just not the default option), for older users who like it the way it is

Increase the drag area to the nearly all of the header (minus the collapse icon, of course)

Working Concept

Diff (widget-on-enter code from @JulianEisel): Wed_07-30-2014_22.13.51.03.diff
Theme (to make the panels pop!): panels_ftw.xml
{F100599}blender_dyn_drag_new_panel.gif

Goals

  • Maintain the uncluttered aspect of the original panels
  • Improve drag functionality and clarity
  • Design an aesthetically 'clean' interface
  • Put Blender's Interface a step in the right direction! {icon smile-o}

Examples

Most of these have well-defined headers and body sections, so It seems apparent it is the way to go.
Some were pulled from my last patch comments, so I don't know if they're the artists dream situation, just examples...

@PawelLyczkowski-1

mockup02_06_nodesc.png

@Venomgfx

blender_ui_drag_widget_gone_padding.png

@Psy-Fi

Panel_Boxes.png

@blakenator

(current attached diff/xml theme)

Thanks to @JulianEisel for the code help for the diff!

**##Creation approved by Jonathan Williamson##** Blender has a flexible panel system that allows for quick rearrangement of the UI. ## Problems Any flexible system has its problems, and Blender is no exception - Design does not promote its features - Header functions to minimize, not drag - Dragging is controlled by a small widget - Panels aren't distinctly separated from background - Panels blend into each other as well as the background - Despite underlying organization, seems disorganized ## Positives - Very uncluttered - Sleek appearance - Simple # Proposal Hopefully combine the best of both worlds # Draw the panels with a header and body background by default, rather than a divider - Keep the current default as an option (just not the default option), for older users who like it the way it is # Increase the drag area to the nearly all of the header (minus the collapse icon, of course) # Working Concept Diff (widget-on-enter code from @JulianEisel): [Wed_07-30-2014_22.13.51.03.diff](https://archive.blender.org/developer/F100603/Wed_07-30-2014_22.13.51.03.diff) Theme (to make the panels pop!): [panels_ftw.xml](https://archive.blender.org/developer/F100604/panels_ftw.xml) {[F100599](https://archive.blender.org/developer/F100599/2014-07-30_22_05_57-Blender.png)}![blender_dyn_drag_new_panel.gif](https://archive.blender.org/developer/F100601/blender_dyn_drag_new_panel.gif) # Goals - Maintain the uncluttered aspect of the original panels - Improve drag functionality and clarity - Design an aesthetically 'clean' interface - Put Blender's Interface a step in the right direction! {icon smile-o} # Examples Most of these have well-defined headers and body sections, so It seems apparent it is the way to go. Some were pulled from my last patch comments, so I don't know if they're the artists dream situation, just examples... ## @PawelLyczkowski-1 ![mockup02_06_nodesc.png](https://archive.blender.org/developer/F100591/mockup02_06_nodesc.png) ## @Venomgfx ![blender_ui_drag_widget_gone_padding.png](https://archive.blender.org/developer/F100587/blender_ui_drag_widget_gone_padding.png) ## @Psy-Fi ![Panel_Boxes.png](https://archive.blender.org/developer/F100589/Panel_Boxes.png) ## @blakenator (current attached diff/xml theme) Thanks to @JulianEisel for the code help for the diff!
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author
Added subscribers: @blakenator, @JonathanWilliamson, @AndrewPrice, @PawelLyczkowski-1, @JulianEisel, @pablovazquez, @billrey

Added subscriber: @lowercase

Added subscriber: @lowercase
looks like we're running in circles here ;) http://lists.blender.org/pipermail/bf-blender-cvs/2011-January/033472.html
Member

Another example:

panels_ui_4_res.png panels_ui_3_res.png This uses a bit of a different approach but integrates nicely into the rest of Blender's GUI.

The drag area vs the panel open/close area

I think best would be to leave most space of the panel header for the open/close interaction as this is a much more common operation than reordering panels. However we could still increase the size of the drag area a bit and add a mouse hover feedback to the icons.


@blakenator, btw you don't need to add a xml-theme, you can also change theme values in init_userdef_do_versions(void) (source/blender/editors/interface/resources.c), which is another inevitable file for UI coding

### Another example: ![panels_ui_4_res.png](https://archive.blender.org/developer/F100832/panels_ui_4_res.png) ![panels_ui_3_res.png](https://archive.blender.org/developer/F100829/panels_ui_3_res.png) This uses a bit of a different approach but integrates nicely into the rest of Blender's GUI. ### The drag area vs the panel open/close area I think best would be to leave most space of the panel header for the open/close interaction as this is a much more common operation than reordering panels. However we could still increase the size of the drag area a bit and add a mouse hover feedback to the icons. ___ @blakenator, btw you don't need to add a xml-theme, you can also change theme values in `init_userdef_do_versions(void)` (source/blender/editors/interface/resources.c), which is another inevitable file for UI coding
Author

@JulianEisel, how do you do the corner-rounding?

Here's an updated example diff, Thu_07-31-2014_21.52.22.40.diff, no xml now. I don't know if it's the right way to do it, but it's a stab.
Also, the collapsing is a more used part of the ui, but I think the idea behind the panels should be more focused on their singularity and portability. Their portability is more difficult to emphasize in other ways than the clear triangle icon of the collapse functionality. I do agree that the minimize area should be increased, but of how much I am not sure.

@JulianEisel, how do you do the corner-rounding? Here's an updated example diff, [Thu_07-31-2014_21.52.22.40.diff](https://archive.blender.org/developer/F100847/Thu_07-31-2014_21.52.22.40.diff), no xml now. I don't know if it's the right way to do it, but it's a stab. Also, the collapsing is a more used part of the ui, but I think the idea behind the panels should be more focused on their singularity and portability. Their portability is more difficult to emphasize in other ways than the clear triangle icon of the collapse functionality. I do agree that the minimize area should be increased, but of how much I am not sure.

Added subscriber: @wevon-2

Added subscriber: @wevon-2

more exemples
mockup_widgets_example.jpg

more exemples ![mockup_widgets_example.jpg](https://archive.blender.org/developer/F100911/mockup_widgets_example.jpg)
Author

@wevon-2 I think unless the whole UI team agrees, we should keep the blender style, but your concept would be cool looking!

Here's the updated prototype:bevel_panel_default.png Fri_08-01-2014_20.45.34.42.diff

IMO it still seems a bit cluttered. Anyone have any ideas? Even bad ideas are better than no ideas!

@wevon-2 I think unless the whole UI team agrees, we should keep the blender style, but your concept would be cool looking! Here's the updated prototype:![bevel_panel_default.png](https://archive.blender.org/developer/F101029/bevel_panel_default.png) [Fri_08-01-2014_20.45.34.42.diff](https://archive.blender.org/developer/F101032/Fri_08-01-2014_20.45.34.42.diff) IMO it still seems a bit cluttered. Anyone have any ideas? Even bad ideas are better than no ideas!
Author

I have an idea. How about dividing the header between the collapse icon and the text? While I'm not too fond of the cluttering effect, it would delineate the different functions much better than what we have currently.

I have an idea. How about dividing the header between the collapse icon and the text? While I'm not too fond of the cluttering effect, it would delineate the different functions much better than what we have currently.
Author

Accidentally pushed post too early :P
Here's a mockup:panel_split_collapse_header.png

Or maybe conversely with the drag icon...

Accidentally pushed post too early :P Here's a mockup:![panel_split_collapse_header.png](https://archive.blender.org/developer/F101275/panel_split_collapse_header.png) Or maybe conversely with the drag icon...

Personally, I prefer the previous version

Personally, I prefer the previous version

Just a suggestion for all of these mockups. Try to simplify the panel down to it's bare components and determine precisely how it works, what does what, and so on before ever touching the actual design. It's very easy to get caught up in UI design and forget about the key functionality :)

In this case, before a design can be finalized, we need solid proposals for how the panel functionality changes (if at all), particularly with regards to the open/close arrow, the header, and the drag widget.

A good practice in UI design is to explicitly keep all design out of it until the functionality is determined. This is where you'll see a lot of professional UI designers only working in pen and pencil for the first stages. When polished design elements are added we often become biased towards or against the design and can longer evaluate the functionality well.

Just a suggestion for all of these mockups. Try to simplify the panel down to it's bare components and determine precisely how it works, what does what, and so on before ever touching the actual design. It's very easy to get caught up in UI design and forget about the key functionality :) In this case, before a design can be finalized, we need solid proposals for how the panel functionality changes (if at all), particularly with regards to the open/close arrow, the header, and the drag widget. A good practice in UI design is to explicitly keep all design out of it until the functionality is determined. This is where you'll see a lot of professional UI designers only working in pen and pencil for the first stages. When polished design elements are added we often become biased towards or against the design and can longer evaluate the functionality well.
Member

Added subscriber: @liquidape

Added subscriber: @liquidape

Added subscriber: @WarrenBahler

Added subscriber: @WarrenBahler

Added subscriber: @ionarn

Added subscriber: @ionarn

Hey,

I just want to throw in some ideas for the general design we could think about.
My main idea is to better distinguish the panels from each other and to simplify the the whole interface like shown in design proposals from other users.

I would like to hear some opinions of you. Maybe some ideas can be merged or some other ideas develop during discussions.

Blender_UI-Proposal_Bright_Rab03.png Bright version

Blender_UI-Proposal_Dark_Rab02.png Dark version

Hey, I just want to throw in some ideas for the general design we could think about. My main idea is to better distinguish the panels from each other and to simplify the the whole interface like shown in design proposals from other users. I would like to hear some opinions of you. Maybe some ideas can be merged or some other ideas develop during discussions. ![Blender_UI-Proposal_Bright_Rab03.png](https://archive.blender.org/developer/F102301/Blender_UI-Proposal_Bright_Rab03.png) Bright version ![Blender_UI-Proposal_Dark_Rab02.png](https://archive.blender.org/developer/F102302/Blender_UI-Proposal_Dark_Rab02.png) Dark version

Added subscriber: @michaelknubben

Added subscriber: @michaelknubben
Author

@ionarn I think those would play very nicely with @venomgfx's widget redesign, but IMO it still needs some indicator that it can be dragged. I have taken the last week to think about this issue, and have come up with this idea (many similarities to yours):
2014-08-10_16_17_06-New_Project_Fluidui.com.png
And some not pinned:
2014-08-10_16_17_06-New_Project_Fluidui.com.png
(Pay no attention to the colors in the mockup, those are just for emphasis)
Notes:

  • This design places the functions by most used (most used function first):
  • Collapsing (whose click area extends to the end of the text)
  • Dragging

Pinning

  • The dot on the right would be the pin area (should still have the pin icon, not a circle, when pinned, this is just a pre-vis).
  • Pinning should be more thoroughly implemented in the UI to provide
  • improved consistency in the interface
  • improved functionality
  • The drag widget would hide when the mouse is not in the header

What do you think?

@ionarn I think those would play very nicely with @venomgfx's widget redesign, but IMO it still needs some indicator that it can be dragged. I have taken the last week to think about this issue, and have come up with this idea (many similarities to yours): ![2014-08-10_16_17_06-New_Project_Fluidui.com.png](https://archive.blender.org/developer/F102338/2014-08-10_16_17_06-New_Project_Fluidui.com.png) And some not pinned: ![2014-08-10_16_17_06-New_Project_Fluidui.com.png](https://archive.blender.org/developer/F102340/2014-08-10_16_17_06-New_Project_Fluidui.com.png) (Pay no attention to the colors in the mockup, those are just for emphasis) **Notes:** - This design places the functions by most used (most used function first): - Collapsing (whose click area extends to the end of the text) - Dragging # Pinning - The dot on the right would be the pin area (should still have the pin icon, not a circle, when pinned, this is just a pre-vis). - Pinning should be more thoroughly implemented in the UI to provide - improved consistency in the interface - improved functionality - The drag widget would hide when the mouse is not in the header What do you think?

@ionarn , I really like the clean look of your mockup, but @JonathanWilliamson has requested that design specific discussion be kept for later; could be as part of #38037

@blakenator , some thoughts on your suggestions:
I'm not sure about the drag area following the text for two reasons:

  1. the text can actually run off the area border when the panels are in a narrow format- thus leaving no drag area

2.the drag-able area would change from panel to panel, making it confusing when rearranging multiple panels.I would rather just see a consistent drag area- perhaps the two areas could be assigned by dynamic percentage(like 60% toggle / 40 percent drag).

Also there was a pretty strong consensus against adding the pin icon to the toolbar panels, mainly for the reason that the amount of use it gets doesn't justify the clutter it brings to the interface.It ended up in the drop down menu , which I think is a good compromise.

@ionarn , I really like the clean look of your mockup, but @JonathanWilliamson has requested that design specific discussion be kept for later; could be as part of #38037 @blakenator , some thoughts on your suggestions: I'm not sure about the drag area following the text for two reasons: 1. the text can actually run off the area border when the panels are in a narrow format- thus leaving no drag area 2.the drag-able area would change from panel to panel, making it confusing when rearranging multiple panels.I would rather just see a consistent drag area- perhaps the two areas could be assigned by dynamic percentage(like 60% toggle / 40 percent drag). Also there was a pretty strong consensus against adding the pin icon to the toolbar panels, mainly for the reason that the amount of use it gets doesn't justify the clutter it brings to the interface.It ended up in the drop down menu , which I think is a good compromise.
Author

@WarrenBahler, now that you've said that, I agree that the pin icons take up excess space, but they should still be implemented similarly across all panels.
Also, the percentage would still lead to an overflow issue when the region is too small in the same circumstance as before. We could clamp the width of the drag panel to a minimum though, and that would lead to a never-disappearing interface...

@WarrenBahler, now that you've said that, I agree that the pin icons take up excess space, but they should still be implemented similarly across all panels. Also, the percentage would still lead to an overflow issue when the region is too small in the same circumstance as before. We could clamp the width of the drag panel to a minimum though, and that would lead to a never-disappearing interface...

Also, the percentage would still lead to an overflow issue when the region is too small

not if it scaled dynamically with the exposed panel width - I have no idea if this is possible though

Untitled.png

also I'm not sure what a pinning a panel does in a normal (non tabbed)context like the properties editor; stay on top?

the right click menu could be utilized to expose some other "hidden" commands as well, like "Collapse all ", and "Expand all": currently except in the toolbar its just an empty menu.

>Also, the percentage would still lead to an overflow issue when the region is too small not if it scaled dynamically with the exposed panel width - I have no idea if this is possible though ![Untitled.png](https://archive.blender.org/developer/F102677/Untitled.png) also I'm not sure what a pinning a panel does in a normal (non tabbed)context like the properties editor; stay on top? the right click menu could be utilized to expose some other "hidden" commands as well, like "Collapse all ", and "Expand all": currently except in the toolbar its just an empty menu.
Author

@WarrenBahler, what do you think about just adding a minimum size, because even with the percentage (which can easily be done btw), we can have extreme situations where you end up with just one or two dots.

We could make the dots align to the right of the panel and go left, with the width dynamically changing with a set minimum like this (blue highlighted one):
2014-08-13_12_53_07-New_Project_Fluidui.com.png
My concern with this design is that it is off balance in the sense of having a large icon on the left and none on the right; we are an art program, so we should still follow the rules of art. :P

Also, in essence, the properties panel already has tabs, they just look different.To answer you question: yes, panels would stay on top.

@WarrenBahler, what do you think about just adding a minimum size, because even with the percentage (which can easily be done btw), we can have extreme situations where you end up with just one or two dots. We could make the dots align to the right of the panel and go left, with the width dynamically changing with a set minimum like this (blue highlighted one): ![2014-08-13_12_53_07-New_Project_Fluidui.com.png](https://archive.blender.org/developer/F103003/2014-08-13_12_53_07-New_Project_Fluidui.com.png) My concern with this design is that it is off balance in the sense of having a large icon on the left and none on the right; we are an art program, so we should still follow the rules of art. :P Also, in essence, the properties panel already has tabs, they just look different.To answer you question: yes, panels would stay on top.
Author

Wow, again I pushed submit too early...
@WarrenBahler I do agree with your 'hidden' functions statement though.

Wow, again I pushed submit too early... @WarrenBahler I do agree with your 'hidden' functions statement though.

Now I see what you mean,what I had in mind was just a static sized widget which would overlay the text when necessary, like in the example; but would represent the larger drag area. exactly like the toggle icon represents the entire toggle area.This keeps things cleaner, but there would be no visual division between the two target areas.

Now I see what you mean,what I had in mind was just a static sized widget which would overlay the text when necessary, like in the example; but would represent the larger drag area. exactly like the toggle icon represents the entire toggle area.This keeps things cleaner, but there would be no visual division between the two target areas.
Author

I just realized this: any indicator splitting the panel header would have run-off problems if the text overlaps the drag area; how would you separate two overlapping areas?

Maybe the solution lies in truncating the text with ellipsis...

I just realized this: any indicator splitting the panel header would have run-off problems if the text overlaps the drag area; how would you separate two overlapping areas? Maybe the solution lies in truncating the text with ellipsis...
Author

The text would already be unreadable after a certain point, and this is pretty much the standard in other applications anyway, so this way we could keep a constant spacing between the drag area and collapse area.
2014-08-15_22_11_00-New_Project_Fluidui.com.png
If we do it right, the space itself could be the divisor. Or, on the mouse entering the header, we could highlight the drag area slightly:
2014-08-15_22_15_55-New_Project_Fluidui.com.png

I personally like the combination better, and if we take the middle (mean, average) color between the header and body, we could get just the right amount of emphasis.

The text would already be unreadable after a certain point, and this is pretty much the standard in other applications anyway, so this way we could keep a constant spacing between the drag area and collapse area. ![2014-08-15_22_11_00-New_Project_Fluidui.com.png](https://archive.blender.org/developer/F104216/2014-08-15_22_11_00-New_Project_Fluidui.com.png) If we do it right, the space itself could be the divisor. Or, on the mouse entering the header, we could highlight the drag area slightly: ![2014-08-15_22_15_55-New_Project_Fluidui.com.png](https://archive.blender.org/developer/F104222/2014-08-15_22_15_55-New_Project_Fluidui.com.png) I personally like the combination better, and if we take the middle (mean, average) color between the header and body, we could get just the right amount of emphasis.

Personally I think the text really shouldn't have anything to do with the functionality, it's just a label. The respective drag and toggle areas should be independent of text, because of the obvious reasons that you just pointed out - the areas would change size depending on the length of the text.

I think a simple right aligned widget like in the task example is the cleanest and simplest way to communicate the drag area, but increasing the area some would make it easier to grab.

Personally I think the text really shouldn't have anything to do with the functionality, it's just a label. The respective drag and toggle areas should be independent of text, because of the obvious reasons that you just pointed out - the areas would change size depending on the length of the text. I think a simple right aligned widget like in the task example is the cleanest and simplest way to communicate the drag area, but increasing the area some would make it easier to grab.

Added subscriber: @mdesilvey

Added subscriber: @mdesilvey

Added subscriber: @brecht

Added subscriber: @brecht

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
Brecht Van Lommel self-assigned this 2018-10-31 11:24:31 +01:00

Archiving old task, outdated by new theme and properties layout in 2.8.

Archiving old task, outdated by new theme and properties layout in 2.8.
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
11 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#41261
No description provided.