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
diff options
context:
space:
mode:
authorJulian Eisel <eiseljulian@gmail.com>2020-01-28 17:08:26 +0300
committerJulian Eisel <eiseljulian@gmail.com>2020-01-28 19:02:10 +0300
commita5790b26563c216dce262586369fdca1061b4850 (patch)
treeb54b80fa02606e11f702f0cfecbbc025481483a4 /source/blender/editors/interface/interface_handlers.c
parentba01ea3f8bee7ea18e2bda07872668ab57d27ca6 (diff)
Fix T63999: Filepath property won't open filebrowser from a popover
To issues caused this: * The code to launch the filebrowser from a button didn't respect popup menus stored in context * There was actually no popup menu region stored in context for this case. Doing so *may* introduce other issues, but the way I did things already fixes all issues I've found.
Diffstat (limited to 'source/blender/editors/interface/interface_handlers.c')
-rw-r--r--source/blender/editors/interface/interface_handlers.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index d3ffdd5386f..ad245353479 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -10599,15 +10599,11 @@ static void ui_region_handler_remove(bContext *C, void *UNUSED(userdata))
* number sliding, text editing, or when a menu block is open */
static int ui_handler_region_menu(bContext *C, const wmEvent *event, void *UNUSED(userdata))
{
- ARegion *ar;
+ ARegion *menu_region = CTX_wm_menu(C);
+ ARegion *ar = menu_region ? menu_region : CTX_wm_region(C);
uiBut *but;
int retval = WM_UI_HANDLER_CONTINUE;
- ar = CTX_wm_menu(C);
- if (!ar) {
- ar = CTX_wm_region(C);
- }
-
but = ui_region_find_active_but(ar);
if (but) {
@@ -10670,9 +10666,18 @@ static int ui_handler_region_menu(bContext *C, const wmEvent *event, void *UNUSE
ui_blocks_set_tooltips(ar, true);
}
+ if (but && but->active && but->active->menu) {
+ /* Set correct context menu-region. The handling button above breaks if we set the region
+ * first, so only set it for executing the after-funcs. */
+ CTX_wm_menu_set(C, but->active->menu->region);
+ }
+
/* delayed apply callbacks */
ui_apply_but_funcs_after(C);
+ /* Reset to previous context region. */
+ CTX_wm_menu_set(C, menu_region);
+
/* Don't handle double-click events,
* these will be converted into regular clicks which we handle. */
if (retval == WM_UI_HANDLER_CONTINUE) {