UI: minor change to active-default logic
authorCampbell Barton <ideasman42@gmail.com>
Wed, 27 Mar 2019 13:57:46 +0000 (00:57 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 27 Mar 2019 13:59:50 +0000 (00:59 +1100)
Don't attempt to activate default button if it's already active.

Also expand on the flags comment.

source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_handlers.c

index ec88278ec883dd89c7666689bde901a6cc3cfc25..9f189b63ad549bfa75a0e4337cf69eaac509a571 100644 (file)
@@ -193,7 +193,9 @@ enum {
        UI_BUT_IMMEDIATE       = 1 << 20,
        UI_BUT_NO_UTF8         = 1 << 21,
 
-       /** For popups, pressing return activates this button, overriding the highlighed button. */
+       /** For popups, pressing return activates this button, overriding the highlighted button.
+        * For non-popups this is just used as a display hint for the user to let them
+        * know the action which is activated when pressing return (file selector for eg). */
        UI_BUT_ACTIVE_DEFAULT = 1 << 23,
 
        /** This but is "inside" a list item (currently used to change theme colors). */
index c388ed40851f0423cd912551b5acd09e4c07b5c6..800b15bff61f8a50e86f8e34c20ec73ab3d4b749 100644 (file)
@@ -9242,7 +9242,7 @@ static int ui_handle_menu_event(
                        }
                        else if (ELEM(event->type, RETKEY, PADENTER) && event->val == KM_PRESS) {
                                uiBut *but_active = ui_region_find_first_but_test_flag(ar, UI_BUT_ACTIVE_DEFAULT, UI_HIDDEN);
-                               if (but_active != NULL) {
+                               if ((but_active != NULL) && (but_active->active == NULL)) {
                                        ui_handle_button_activate(C, ar, but_active, BUTTON_ACTIVATE);
                                        /* Get again below just incase it's disabled for eg. */
                                }