[Bf-blender-cvs] [f0815b1322d] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Thu Jun 7 16:46:20 CEST 2018


Commit: f0815b1322dc4f04dd949fd92049a99479e5f61d
Author: Campbell Barton
Date:   Thu Jun 7 16:45:10 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBf0815b1322dc4f04dd949fd92049a99479e5f61d

Merge branch 'master' into blender2.8

===================================================================



===================================================================

diff --cc source/blender/windowmanager/WM_api.h
index 21e050e8e14,75b2cfffd03..267aa448dc3
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@@ -142,7 -104,10 +142,7 @@@ enum 
  struct wmWindow	*WM_window_open(struct bContext *C, const struct rcti *rect);
  struct wmWindow *WM_window_open_temp(struct bContext *C, int x, int y, int sizex, int sizey, int type);
  void             WM_window_set_dpi(wmWindow *win);
- 			
+ 
 -			/* returns true if draw method is triple buffer */
 -bool		WM_is_draw_triple(struct wmWindow *win);
 -
  bool		WM_stereo3d_enabled(struct wmWindow *win, bool only_fullscreen_test);
  
  
diff --cc source/blender/windowmanager/WM_types.h
index 81018348ca0,298c5184ced..856694276a9
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@@ -211,14 -199,15 +211,14 @@@ typedef enum eOperatorPropTags 
  
  typedef struct wmNotifier {
  	struct wmNotifier *next, *prev;
- 	
+ 
  	struct wmWindowManager *wm;
  	struct wmWindow *window;
- 	
+ 
 -	int swinid;			/* can't rely on this, notifiers can be added without context, swinid of 0 */
  	unsigned int category, data, subtype, action;
- 	
+ 
  	void *reference;
- 	
+ 
  } wmNotifier;
  
  
diff --cc source/blender/windowmanager/intern/wm.c
index 9100e47d820,98d9edb9f94..6a42bf26a97
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@@ -372,10 -359,10 +372,10 @@@ void WM_keymap_init(bContext *C
  		wm->addonconf = WM_keyconfig_new(wm, "Blender Addon");
  	if (!wm->userconf)
  		wm->userconf = WM_keyconfig_new(wm, "Blender User");
- 	
+ 
  	/* initialize only after python init is done, for keymaps that
  	 * use python operators */
 -	if (CTX_py_init_get(C) && (wm->initialized & WM_INIT_KEYMAP) == 0) {
 +	if (CTX_py_init_get(C) && (wm->initialized & WM_KEYMAP_IS_INITIALIZED) == 0) {
  		/* create default key config, only initialize once,
  		 * it's persistent across sessions */
  		if (!(wm->defaultconf->flag & KEYCONF_INIT_DEFAULT)) {
@@@ -487,10 -467,11 +487,10 @@@ void wm_close_and_free(bContext *C, wmW
  		wm_autosave_timer_ended(wm);
  
  	while ((win = BLI_pophead(&wm->windows))) {
 -		win->screen = NULL; /* prevent draw clear to use screen */
 -		wm_draw_window_clear(win);
 +		WM_window_set_active_workspace(win, NULL); /* prevent draw clear to use screen */
  		wm_window_free(C, wm, win);
  	}
- 	
+ 
  	while ((op = BLI_pophead(&wm->operators))) {
  		WM_operator_free(op);
  	}
diff --cc source/blender/windowmanager/intern/wm_cursors.c
index 67b04662154,6aef38a320b..f13dac9cb4c
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@@ -41,8 -41,7 +41,8 @@@
  #include "BLI_sys_types.h"
  
  #include "DNA_listBase.h"
- #include "DNA_userdef_types.h" 
+ #include "DNA_userdef_types.h"
 +#include "DNA_workspace_types.h"
  
  #include "BKE_context.h"
  #include "BKE_global.h"
diff --cc source/blender/windowmanager/intern/wm_dragdrop.c
index 319ce99f700,7a5e3e90166..16ed51cbd80
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.c
@@@ -365,10 -361,10 +365,10 @@@ void wm_drags_draw(bContext *C, wmWindo
  			drag_rect_minmax(rect, x, y, x + w, y + iconsize);
  		}
  		else {
 -			glColor4ub(255, 255, 255, 255);
 -			UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag));
 +			const unsigned char col[] = {255, 255, 255, 255};
 +			UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag), col);
  		}
- 		
+ 
  		/* operator name with roundbox */
  		if (drag->opname[0]) {
  			if (drag->imb) {
diff --cc source/blender/windowmanager/intern/wm_draw.c
index 3ce64926a95,b9f44a00df7..df958f35e91
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@@ -801,12 -967,16 +801,12 @@@ void wm_draw_update(bContext *C
  			continue;
  		}
  #endif
 -		if (win->drawmethod != U.wmdrawmethod) {
 -			wm_draw_window_clear(win);
 -			win->drawmethod = U.wmdrawmethod;
 -		}
  
  		if (wm_draw_update_test_window(win)) {
 -			bScreen *screen = win->screen;
 +			bScreen *screen = WM_window_get_active_screen(win);
  
  			CTX_wm_window_set(C, win);
- 			
+ 
  			/* sets context window+screen */
  			wm_window_make_drawable(wm, win);
  
diff --cc source/blender/windowmanager/intern/wm_event_system.c
index 31b51fce858,7c81f836bc1..b95eb099cce
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@@ -194,12 -190,16 +194,12 @@@ void WM_event_add_notifier(const bConte
  		return;
  
  	note = MEM_callocN(sizeof(wmNotifier), "notifier");
- 	
+ 
  	note->wm = wm;
  	BLI_addtail(&note->wm->queue, note);
- 	
+ 
  	note->window = CTX_wm_window(C);
- 	
+ 
 -	ar = CTX_wm_region(C);
 -	if (ar)
 -		note->swinid = ar->swinid;
 -
  	note->category = type & NOTE_CATEGORY;
  	note->data = type & NOTE_DATA;
  	note->subtype = type & NOTE_SUBTYPE;
@@@ -357,15 -331,12 +357,15 @@@ void wm_event_do_notifiers(bContext *C
  	if (wm == NULL)
  		return;
  
 +	/* disable? - keep for now since its used for window level notifiers. */
 +#if 1
  	/* cache & catch WM level notifiers, such as frame change, scene/screen set */
  	for (win = wm->windows.first; win; win = win->next) {
 +		Scene *scene = WM_window_get_active_scene(win);
  		bool do_anim = false;
- 		
+ 
  		CTX_wm_window_set(C, win);
- 		
+ 
  		for (note = wm->queue.first; note; note = next) {
  			next = note->next;
  
@@@ -484,19 -424,9 +484,19 @@@
  				}
  			}
  		}
- 		
+ 
  		MEM_freeN(note);
  	}
 +#endif /* if 1 (postpone disabling for in favor of message-bus), eventually. */
 +
 +	/* Handle message bus. */
 +	{
 +		for (win = wm->windows.first; win; win = win->next) {
 +			CTX_wm_window_set(C, win);
 +			WM_msgbus_handle(wm->message_bus, C);
 +		}
 +		CTX_wm_window_set(C, NULL);
 +	}
  
  	wm_event_do_refresh_wm_and_depsgraph(C);
  }
@@@ -1466,12 -1355,12 +1466,12 @@@ static int wm_operator_call_internal
  					if (ar1)
  						CTX_wm_region_set(C, ar1);
  				}
- 				
+ 
 -				retval = wm_operator_invoke(C, ot, event, properties, reports, poll_only);
 +				retval = wm_operator_invoke(C, ot, event, properties, reports, poll_only, true);
- 				
+ 
  				/* set region back */
  				CTX_wm_region_set(C, ar);
- 				
+ 
  				return retval;
  			}
  			case WM_OP_EXEC_AREA:
@@@ -1503,10 -1392,10 +1503,10 @@@
  			}
  			case WM_OP_EXEC_DEFAULT:
  			case WM_OP_INVOKE_DEFAULT:
 -				return wm_operator_invoke(C, ot, event, properties, reports, poll_only);
 +				return wm_operator_invoke(C, ot, event, properties, reports, poll_only, true);
  		}
  	}
- 	
+ 
  	return 0;
  }
  
@@@ -1600,9 -1489,8 +1600,9 @@@ void wm_event_free_handler(wmEventHandl
  /* only set context when area/region is part of screen */
  static void wm_handler_op_context(bContext *C, wmEventHandler *handler, const wmEvent *event)
  {
 +	wmWindow *win = CTX_wm_window(C);
  	bScreen *screen = CTX_wm_screen(C);
- 	
+ 
  	if (screen && handler->op) {
  		if (handler->op_area == NULL)
  			CTX_wm_area_set(C, NULL);
@@@ -1975,21 -1826,9 +1975,21 @@@ static int wm_handler_operator_call(bCo
  	else {
  		wmOperatorType *ot = WM_operatortype_find(event->keymap_idname, 0);
  
 -		if (ot) {
 -			if (wm_operator_check_locked_interface(C, ot)) {
 -				retval = wm_operator_invoke(C, ot, event, properties, NULL, false);
 +		if (ot && wm_operator_check_locked_interface(C, ot)) {
 +			bool use_last_properties = true;
 +			PointerRNA tool_properties = {{0}};
 +			bool use_tool_properties = (handler->keymap_tool != NULL);
- 			
++
 +			if (use_tool_properties) {
 +				WM_toolsystem_ref_properties_init_for_keymap(handler->keymap_tool, &tool_properties, properties, ot);
 +				properties = &tool_properties;
 +				use_last_properties = false;
 +			}
 +
 +			retval = wm_operator_invoke(C, ot, event, properties, NULL, false, use_last_properties);
 +
 +			if (use_tool_properties) {
 +				WM_operator_properties_free(&tool_properties);
  			}
  		}
  	}
@@@ -2272,7 -2109,6 +2272,7 @@@ static int wm_handlers_do_intern(bConte
  							event->keymap_idname = kmi->idname;
  
  							action |= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr);
- 							
++
  							if (action & WM_HANDLER_BREAK) {
  								/* not always_pass here, it denotes removed handler */
  								CLOG_INFO(WM_LOG_HANDLERS, 2, "handled! '%s'", kmi->idname);
@@@ -2593,15 -2288,13 +2593,15 @@@ static int wm_event_inside_i(wmEvent *e
  
  static ScrArea *area_event_inside(bContext *C, const int xy[2])
  {
 +	wmWindow *win = CTX_wm_window(C);
  	bScreen *screen = CTX_wm_screen(C);
- 	
 -	ScrArea *sa;
+ 
 -	if (screen)
 -		for (sa = screen->areabase.first; sa; sa = sa->next)
 +	if (screen) {
 +		ED_screen_areas_iter(win, screen, sa) {
  			if (BLI_rcti_isect_pt_v(&sa->totrct, xy))
  				return sa;
 +		}
 +	}
  	return NULL;
  }
  
@@@ -2664,9 -2355,9 +2664,9 @@@ static void wm_event_drag_test(wmWindow
  	if (BLI_listbase_is_empty(&wm->drags)) {
  		return;
  	}
- 	
+ 
  	if (event->type == MOUSEMOVE || ISKEYMODIFIER(event->type)) {
 -		win->screen->do_draw_drag = true;
 +		screen->do_draw_drag = true;
  	}
  	else if (event->type == ESCKEY) {
  		WM_drag_free_list(&wm->drags);
@@@ -2685,10 -2376,10 +2685,10 @@@
  		event->custom = EVT_DATA_DRAGDROP;
  		event->customdata = &wm->drags;
  		event->customdatafree = 1;
- 		
+ 
  		/* clear drop icon */
 -		win->screen->do_draw_drag = true;
 +		screen->do_draw_drag = true;
- 		
+ 
  		/* restore cursor (disabled, see wm_dragdrop.c) */
  		// WM_cursor_modal_restore(win);
  	}
@@@ -2720,30 -2417,24 +2720,30 @@@ void wm_event_do_handlers(bContext *C
  
  	/* update key configuration before handling events */
  	WM_keyconfig_update(wm);
 +	WM_manipulatorconfig_update(CTX_data_main(C));
  
  	for (win = wm->windows.first; win; win = win->next) {
 +		bScreen *screen = WM_window_get_active_screen(win);
  		wmEvent *event;
  
 -		if (win->screen == NULL)
 +		/* some safty checks - these should always be set! */
 +		BLI_assert(WM_window_get_active_scene(win));
 +		BLI_assert(WM_window_get_active_screen(win));
 +		BLI_assert(WM_window_get_active_workspace(win));
 +
 +		i

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list