Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-10-16Property Search: Reset panel expansion when exiting searchHans Goudey
This patch implements panel expansion saving and resetting for property search. While search is active, the panel expansion is based on whether or not it has a search result. When the search finishes, the panel expansion returns to its state before the search started. However, any panels interacted with during the search won't reset their expansion. This requires adding a new runtime flag for panels to store whether to use search result status as expansion. It also requires better handling for animation when panel expansion changes with another new runtime flag. `UI_panel_is_closed` gets the search-dependent expansion, but it is intentionally not used to access expansion in every case-- sometimes it's necessary to use `PNL_CLOSED` directly. Differential Revision: https://developer.blender.org/D8984
2020-10-15Cleanup: Animation, simplify channel selection codeSybren A. Stüvel
Split up `ANIM_deselect_anim_channels()` into `ANIM_anim_channels_select_set()` and `ANIM_anim_channels_select_toggle()`. `ANIM_anim_channels_select_set()` is equivalent to the old `ANIM_deselect_anim_channels(..., false, ACHANNEL_SETFLAG_xxx)`. `ANIM_anim_channels_select_toggle()` is equivalent to the old `ANIM_deselect_anim_channels(..., true, ACHANNEL_SETFLAG_ADD)`. `ANIM_deselect_anim_channels(..., true, ACHANNEL_SETFLAG_CLEAR)` was also called once. The `true` parameter suggested the "toggle" behaviour was intended, but the `ACHANNEL_SETFLAG_CLEAR` argument prevented any toggling. This is now replaced with `ANIM_anim_channels_select_set(ac, ACHANNEL_SETFLAG_CLEAR)` to make this explicit. No functional changes, just a cleanup in order to better understand how the selection works.
2020-10-13Property Search: Find results in all tabsHans Goudey
This patch enables property search for all tabs in the property editor. To make interaction faster, if the editor's current tab doesn't have a result, the current tab changes to the next tab that has a match. This patch implements basic code that only searches panels. While we could run the existing "single tab" property search for every tab, that would also do everything else related to the layout pass, which would be less efficient, and maybe more complicated to maintain. The search match status for every current tab of the property editor is stored in a runtime bitfield and them displayed later by dimming icons in the tab selector panel to the left. Using `BLI_bitmap` properly in the runtime struct required moving it to `buttons_intern.h` and adding a small API to access the search filter instead. To make sure the editor isn't influenced by anything that happens while building the layout for other tabs, most of the context is duplicated and the new search is run in the duplicated editor. Note that the tool settings tab works slightly different than the other tabs, so I've disabled searching it for this commit. That would be a relatively simple improvement, but would just require a bit of refactoring of existing code. Differential Revision: https://developer.blender.org/D8859
2020-10-13UI: Add highlight arguments to tab buttonsHans Goudey
This adds arguments to `uiLayout.prop_tabs_enum` and the C equivalent (`uiItemTabsEnumR_prop`) to gray out tabs based on a boolean array. For property search in multiple tabs, we need a way to show which tabs have a search result, but we still need to show which tab is active. Differential Revision: https://developer.blender.org/D8858
2020-10-12UI: Remove Hard-coded Default Font SizeHarley Acheson
Default text output routines (which do not specify a size) will now use Text Style point size. Differential Revision: https://developer.blender.org/D9107 Reviewed by Brecht Van Lommel
2020-10-10Cleanup: use C comments for descriptive textCampbell Barton
Follow our code style guide by using C-comments for text descriptions.
2020-10-07Fix T76595: Indicate the Active Keyframe in Graph EditorHans Goudey
In the graph editor there is a panel that says "Active Keyframe" for numerically editing a keyframe's values, but in the code there is no concept of the "active keyframe." Since this is a useful concept to have for some other features anyway, this commit adds an active keyframe index value to FCurves. It also displays it with a theme color for the active vertex (which didn't exist before) if the FCurve is active. The active keyframe in the graph editor is treated similarly to the active vertex in the 3D view. It is the keyframe most recently selected with a single click, and it is always selected. For now, the only real functional change is that the active keyframe appears in white and it should be more predictable which keyframe is being edited in the sidebar panel. Differential Revision: https://developer.blender.org/D7737
2020-10-05Cleanup: Use short for properties editor tab listHans Goudey
Because the active context is stored as a short in DNA it's better to use short in the code surrounding it. Also adjusted a comment that reflected an incorrect assumption.
2020-10-03Property Search: Set panel expansion when tab changesHans Goudey
This commit makes the panel expansion set based on the search results when the active tab in the properties editor changes. The multi-tab search patch (D8859) actually doesn't handle this because it uses a different code path. This feature uncovered a subtle but fairly significant issue with the implementation of property search (More details in T81113). Basically, the search needed multiple redraws to properly display the expansion of panels based on the search results. Because there is no animation of panel expansion when switching tabs, the problem was exposed only now. With this commit, hiding of "search only" buttons and panel size calculation happens in a single final step of the panel layout pass. The "search only" layout root flag is removed. Instead every button inside a panel header is in a single "uiButtonGroup" marked with a specific "in header" flag, an idea which could be generalized in the future. Differential Revision: https://developer.blender.org/D9006
2020-10-02Fix T81345: part four, fix handling of IDProperties in edit armature undo.Bastien Montagne
Specific armature editing undo code would duplicate and store a list of editbones. However, those are not linked to main data storage and should therefore never affect ID usercounting.
2020-10-02Cleanup: Move `EditBone` structure definition from `ED` to `BKE` area.Bastien Montagne
Access to this structure will be needed in BKE's armature code.
2020-10-02Fix userpref.blend using version from startup.blendCampbell Barton
Version patching userpref.blend wasn't using the correct version, causing settings not to be properly updated. This seems the likely cause of T70196 and similar bugs.
2020-09-30Cleanup: Remove unused View2D variables and functionHans Goudey
It looks like this code was left over from tabbed panels in the properties editor. It wasn't used anywhere except for in one line of the horizontally-aligned panel code that was recently removed. Differential Revision: https://developer.blender.org/D8651
2020-09-30Cleanup: sort struct declarationsCampbell Barton
2020-09-30Cleanup: Make function privateHans Goudey
The "UI_panel_set_expand_from_list_data" doesn't need to be in the public API since it's just called every time an instanced panel is added. This commit just sets the expansion automatically and adjusts some naming to account for the moved function.
2020-09-28Fix T79275: Missing redraw for pinned active tool settings panelsDavid Friedli
In the 3D view sidebar, the active tool settings panel can be pinned to other categories, and in those other categories it doesn't redraw when the active tool changes. This commit checks for pinned panels from the "Tool" category when checking whether to redraw. Note that the relatively expensive string comparison is only done for currently visible pinned panels. Differential Revision: https://developer.blender.org/D9012
2020-09-24Cleanup: Remove unused functionHans Goudey
2020-09-24Cleanup: Remove unecessary storage of search filter in uiBlockHans Goudey
Since the search is applied all in one phase, there is no need to store a reference to the search filter in every uiBlock. Instead just pass it as an argument to UI_block_apply_search_filter.
2020-09-23Fix outliner collection icon in light themeNathan Craddock
Ensure the theme colors are used for the collection icon when there are no color tags present, otherwise it draws completely black.
2020-09-21Cleanup: move some paint helpers to ED_ 'namespace'.Bastien Montagne
Those two functions had `BKE_` prefix, were defined in BKE headers, but implemented in ED code, yuck. Moved everything to ED area for now, since those do not look fondamental enough to belong to BKE, and none of their usages requires it currently.
2020-09-20Fix T80945: Build modifier not updating after outliner copyNathan Craddock
Build modifiers linked or copied to objects from the outliner would not animate until the file was saved and reopened due to a missing depsgraph relations tag.
2020-09-18Cleanup: use 'UI_icon_*' prefix for icons APICampbell Barton
- UI_collection_color_icon_get -> UI_icon_color_from_collection - UI_idcode_icon_get -> UI_icon_from_idcode - UI_library_icon_get -> UI_icon_from_library - UI_mode_icon_get -> UI_icon_from_object_mode - UI_rnaptr_icon_get -> UI_icon_from_rnaptr - UI_alert_image -> UI_icon_alert_imbuf_get - UI_preview_render_size -> UI_icon_preview_to_render_size - UI_id_icon_render -> UI_icon_render_id
2020-09-16Cleanup: spellingCampbell Barton
2020-09-16Modifiers: Add link and copy functionsNathan Craddock
Adds functions to copy a modifier between objects, and an ED_ level function for linking modifiers between objects. This will be used in outliner modifier drag and drop. These functions support both regular and grease pencil modifiers. Differential Revision: https://developer.blender.org/D8642
2020-09-16Constraints: Add link and copy functionsNathan Craddock
Add functions to copy a single constraint between objects or between bones, and another function to link constraints. This is in preparation for constraint drag and drop in the outliner. Differential Revision: https://developer.blender.org/D8642
2020-09-16Cleanup: Extract editor function from constraint_move_to_index_execNathan Craddock
No functional changes. Move the constraint reordering logic into an ED_ level function to be used by outliner constraint drag and drop. Differential Revision: https://developer.blender.org/D8642
2020-09-16GPencil: Add link and copy functions for shaderfxNathan Craddock
Adds two functions: one to copy a shaderfx between two gpencil objects, and another to link all shaderfx between two gpencil objects. Added in preparation for outliner shaderfx drag and drop. Differential Revision: https://developer.blender.org/D8642
2020-09-15Collections: Add color taggingNathan Craddock
This adds color tagging to collections. There are 8 color options which are themable in the user preferences, with an additional option for no color tag by default. This adds a new filled collection icon and 8 colored variants of the icon that can be themed in the user preferences. In this commit the only interface to setting the color tags is through Python, and there is nowhere in the interface where the collections are shown colored. Setting and viewing the color tags from the outliner will follow. Manifest Task: https://developer.blender.org/T77777 Differential Revision: https://developer.blender.org/D8622
2020-09-15UI: Single tab property searchHans Goudey
This adds a search bar to the properties editor. The full search for every tab isn't included in this patch, but the interaction with panels, searching behavior, UI, region level, and DNA changes are included here. The block-level search works by iterating over the block's button groups and checking whether they match the search. If they do, they are tagged with a flag, and the block's panel is tagged too. For every update (text edit), the panel's expansion is set to whether the panel has a result or not. The search also checks for matching strings inside enums and in panel labels. One complication to this that isn't immediately apparent is that closed panel's subpanels have to be searched too. This adds some complexity to the area-level panel layout code. Possible Future Improvements: - Use the new fuzzy search in BLI - Reset panels to their expansion before the search started if the user escape out of the text box. - Open all child panels of a panel with expansion. Differential Revision: https://developer.blender.org/D8856
2020-09-15Cleanup: Remove unneeded parameterNathan Craddock
A parameter was added during development, but it was not needed and was never removed. No functional changes.
2020-09-15UI: Add `icon_only` argument to operator_enumNathan Craddock
Add an option to only draw icons for operator_enum menus. This is used for drawing inline icon buttons in the outliner context menu for collection color tagging. Part of T77408 Differential Revision: https://developer.blender.org/D8880
2020-09-14Fix T80704: bpy.ops.transform.rotate() ignores orient_typeGermano Cavalcante
Remove the condition preventing orientation from being obtained out of the 3d View context. Also pass the `ob` and `obedit` arguments obtained from the caller.
2020-09-14Cleanup: Use 'r_' prefix for return valueGermano Cavalcante
Make it obvious which values are written to.
2020-09-12Fix T70255: Setting file browser bookmark from Python crashesCampbell Barton
Support setting bookmarks even when the file browser isn't the active space.
2020-09-10Outliner: Move mode toggling to left columnNathan Craddock
Add a column of icons in the left gutter of the outliner for controlling the interaction modes of objects. When an object is in a mode other than object mode, the mode icon will draw to the left of that object. Any other objects that are valid to be added or swapped into the mode are drawn with a dot to the left of the object. Clicking the dot to the left of an object will swap that object with the current active object in the interaction mode. For edit and pose modes, ctrl clicking the dot will add that object to the current mode. Clicking the mode icon next to the active object removes it and all other objects from the current mode. The behavior is nearly identical to the previous edit/pose mode toggling by selecting the mesh and armature datablocks, with additional support for all interaction modes. Currently two undo steps are pushed to prevent an assert. Part of T77408 Manifest Task: https://developer.blender.org/T68498 Differential Revision: https://developer.blender.org/D8641
2020-09-09Geometry: add Attributes panel for PointCloud and HairBrecht Van Lommel
There is a list of attributes, along with operators to add and remove attributes. For adding, there are a few standard attributes that can be added quickly, as well as a popup to create a custom attribute. Ref T76659 Differential Revision: https://developer.blender.org/D8636
2020-09-09Refactor getting constraintsPhilipp Oeser
This is the refactoring part of D8805 (should be no functional changes). - exposes pose-related part of former 'get_constraints()' from interface_templates.c to new ED_object_pose_constraint_list - rename ED_object_constraint_list_from_context --> ED_object_constraint_active_list Also clarify comments on both of these. ref T80464 ref https://developer.blender.org/D8805
2020-09-09Cleanup: use bool instead of intJacques Lucke
2020-09-07Cleanup: remove redundant scene argument in BKE_object_addCampbell Barton
2020-09-07Fix OBJECT_OT_data_instance_add creating empty data-blocksCampbell Barton
ED_object_add_type creates empty object data, add ED_object_add_type_with_obdata which can take existing object data.
2020-09-05Cleanup: clang-formatCampbell Barton
2020-09-04UI Code Quality: Use derived struct for number buttonsJulian Eisel
For the man rationale behind this design, see 49f088e2d093. Further, this removes users of uiBut.a1/uiBut.a2, which is a very ugly design choice (hard to reason about). Note that I had to do rather ugly, specific exceptions for the number buttons in `ui_def_but_rna()`. But once all users of a1/a2 are removed, this special handling shouldn't be needed anymore. I also had to move a sanity check out of the button definition. It's now moved into a new debug only sanity checking function executed when finishing the layout definition (block end).
2020-09-04Cleanup: Clang-Tidy readability-inconsistent-declaration-parameter-name fixSebastian Parborg
No functional changes
2020-09-04Cleanup: fix compiler warnings for MSVCBrecht Van Lommel
2020-09-03Cleanup: Add/use function to disable buttons with a disabled hintJulian Eisel
We do this in a couple of places, so it's worth having the logic wrapped into a function. Also, the only way to set the disabled hint for a button from outside of `interface/` was through `UI_block_lock_set()`/`UI_block_lock_clear()`, for which the usage isn't obvious when you just try to disable a single button.
2020-09-03Sculpt: Face Set Extract OperatorPablo Dobarro
This implements a Face Set Extract operator, which is similar to mask extract. This operator uses a picker to select and Face Set in the mesh and extract the geometry directly to a new object. Reviewed By: sergey Differential Revision: https://developer.blender.org/D8599
2020-09-03Fix T63125: Gpencil: bones cannot be selected in weightpaint modePhilipp Oeser
Some underlying functionality was not ready for greasepencil: - BKE_modifiers_get_virtual_modifierlist (now introduce dedicated BKE_gpencil_modifiers_get_virtual_modifierlist) - BKE_modifiers_is_deformed_by_armature - checks in drawing code - checks in (pose) selection code A couple of changes to make this work: - `eGpencilModifierType_Armature` has to be respected (not only `eModifierType_Armature`) - `OB_MODE_WEIGHT_GPENCIL` has to be respected (not only `OB_MODE_WEIGHT_PAINT`) -- (now use new `OB_MODE_ALL_WEIGHT_PAINT`) - `gpencil_weightmode_toggle_exec` now shares functionality from `wpaint_mode_toggle_exec` -- moved to new `ED_object_posemode_set_for_weight_paint` This patch will also set the context member "weight_paint_object" for greasepencil (otherwise some appropriate pose operators wont work when in weightpaint mode) Reviewed By: campbellbarton Maniphest Tasks: T63125 Differential Revision: https://developer.blender.org/D8483
2020-09-02UI: Use instanced panel custom data instead of list indexHans Goudey
For modifier shortcuts we added a "custom_data" field to panels. This commit uses the same system for accessing the list data that corresponds to each panel. This way the context is only used once and the modifier for each panel can be accessed more easily later. This ends up being mostly a cleanup commit with a few small changes in interface_panel.c. The large changes in the UI functions are due to the fact that the panel custom data is now passed around as a single pointer instead of being created again for every panel. The list_index variable in Panel.runtime is removed as it's now unnecessary. Differential Revision: https://developer.blender.org/D8559
2020-09-02Cleanup: use bool instead of int in various placesJacques Lucke
2020-09-02UI: add back Layout.introspectCampbell Barton
Add back this function, removed 2e14b7fb9770b. Useful for checking operators used in menus.