The previous design is rather old and has a couple of problems: * Scalability: The current solution of adding little icon buttons next to the data-block name field doesn't scale well. It only works if there's a small number of operations. We need to be able to place more items there for better data-block management. Especially with the introduction of library overrides. * Discoverability: It's not obvious what some of the icons do. They appear and disappear, but it's not obvious why some are available at times and others not. * Unclear Status: Currently their library status (linked, indirectly linked, broken link, library override) isn't really clear. * Unusual behavior: Some of the icon buttons allow Shift or Ctrl clicking to invoke alternative behaviors. This is not a usual pattern in Blender. This patch does the following changes: * Adds a menu to the right of the name button to access all kinds of operations (create, delete, unlink, user management, library overrides, etc). * Make good use of the "disabled hint" for tooltips, to explain why buttons are disabled. The UI team wants to establish this as a good practise. * Use superimposed icons for duplicate and unlink, rather than extra buttons (uses less space, looks less distracting and is a nice + consistent design language). * Remove fake user and user count button, they are available from the menu now. * Support tooltips for superimposed icons (committed mouse hover feedback to master already). * Slightly increase size of the name button - it was already a bit small before, and the move from real buttons to superimposed icons reduces usable space for the name itself. * More clearly differentiate between duplicate and creating a new data-block. The latter is only available in the menu. * Display library status icon on the left (linked, missing library, overridden, asset) * Disables "Make Single User" button - in review we weren't sure if there are good use-cases for it, so better to see if we can remove it. Note that I do expect some aspects of this design to change still. I think some changes are problematic, but others disagreed. I will open a feedback thread on devtalk to see what others think. Differential Revision: https://developer.blender.org/D8554 Reviewed by: Bastien Montagne Design discussed and agreed on with the UI team, also see T79959.
97 lines
4.0 KiB
C++
97 lines
4.0 KiB
C++
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2008 Blender Foundation.
|
|
* All rights reserved.
|
|
*/
|
|
|
|
/** \file
|
|
* \ingroup edrend
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
struct ScrArea;
|
|
struct bContext;
|
|
struct wmOperatorType;
|
|
|
|
/* render_shading.c */
|
|
void OBJECT_OT_material_slot_add(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_remove(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_assign(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_select(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_deselect(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_copy(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_move(struct wmOperatorType *ot);
|
|
void OBJECT_OT_material_slot_remove_unused(struct wmOperatorType *ot);
|
|
|
|
void MATERIAL_OT_new(struct wmOperatorType *ot);
|
|
void MATERIAL_OT_duplicate(struct wmOperatorType *ot);
|
|
void TEXTURE_OT_new(struct wmOperatorType *ot);
|
|
void TEXTURE_OT_duplicate(struct wmOperatorType *ot);
|
|
void WORLD_OT_new(struct wmOperatorType *ot);
|
|
void WORLD_OT_duplicate(struct wmOperatorType *ot);
|
|
|
|
void MATERIAL_OT_copy(struct wmOperatorType *ot);
|
|
void MATERIAL_OT_paste(struct wmOperatorType *ot);
|
|
|
|
void SCENE_OT_view_layer_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_view_layer_remove(struct wmOperatorType *ot);
|
|
void SCENE_OT_view_layer_add_aov(struct wmOperatorType *ot);
|
|
void SCENE_OT_view_layer_remove_aov(struct wmOperatorType *ot);
|
|
|
|
void SCENE_OT_light_cache_bake(struct wmOperatorType *ot);
|
|
void SCENE_OT_light_cache_free(struct wmOperatorType *ot);
|
|
|
|
void SCENE_OT_render_view_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_render_view_remove(struct wmOperatorType *ot);
|
|
|
|
#ifdef WITH_FREESTYLE
|
|
void SCENE_OT_freestyle_module_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_module_remove(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_module_move(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_lineset_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_lineset_copy(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_lineset_paste(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_lineset_remove(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_lineset_move(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_linestyle_new(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_color_modifier_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_alpha_modifier_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_thickness_modifier_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_geometry_modifier_add(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_modifier_remove(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_modifier_move(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_modifier_copy(struct wmOperatorType *ot);
|
|
void SCENE_OT_freestyle_stroke_material_create(struct wmOperatorType *ot);
|
|
#endif
|
|
|
|
void TEXTURE_OT_slot_copy(struct wmOperatorType *ot);
|
|
void TEXTURE_OT_slot_paste(struct wmOperatorType *ot);
|
|
void TEXTURE_OT_slot_move(struct wmOperatorType *ot);
|
|
|
|
/* render_internal.c */
|
|
void RENDER_OT_render(struct wmOperatorType *ot);
|
|
void RENDER_OT_shutter_curve_preset(struct wmOperatorType *ot);
|
|
|
|
/* render_view.c */
|
|
struct ScrArea *render_view_open(struct bContext *C, int mx, int my, struct ReportList *reports);
|
|
|
|
void RENDER_OT_view_show(struct wmOperatorType *ot);
|
|
void RENDER_OT_view_cancel(struct wmOperatorType *ot);
|
|
|
|
/* render_opengl.c */
|
|
void RENDER_OT_opengl(struct wmOperatorType *ot);
|