[Bf-blender-cvs] [e5f49598b03] temp-tab_drag_drop: Merge branch 'blender2.8' into temp-tab_drag_drop

Severin noreply at git.blender.org
Sat Jun 30 21:12:47 CEST 2018


Commit: e5f49598b037ef8476efd458d060d3db348b9b60
Author: Severin
Date:   Sat Jun 30 21:12:19 2018 +0200
Branches: temp-tab_drag_drop
https://developer.blender.org/rBe5f49598b037ef8476efd458d060d3db348b9b60

Merge branch 'blender2.8' into temp-tab_drag_drop

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



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

diff --cc source/blender/editors/include/UI_interface.h
index 3efd04ee701,dcfb1ac3219..7fef72b7484
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@@ -74,7 -75,7 +75,8 @@@ struct wmDrag
  struct wmEvent;
  struct wmManipulator;
  struct wmMsgBus;
 +struct uiButtonGroup;
+ struct wmKeyMap;
  
  typedef struct uiBut uiBut;
  typedef struct uiBlock uiBlock;
diff --cc source/blender/editors/interface/interface.c
index b8e80f40b58,834abc84c0d..3eb8f3d6bb5
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@@ -3237,13 -3292,9 +3292,13 @@@ static uiBut *ui_def_but
  	}
  
  	BLI_addtail(&block->buttons, but);
- 	
+ 
 -	if (block->curlayout)
 +	if (block->curlayout) {
  		ui_layout_add_but(block->curlayout, but);
 +	}
 +	if (block->current_group) {
 +		but->group = block->current_group;
 +	}
  
  #ifdef WITH_PYTHON
  	/* if the 'UI_OT_editsource' is running, extract the source info from the button  */
@@@ -4736,6 -4768,4 +4791,5 @@@ void UI_exit(void
  {
  	ui_resources_free();
  	ui_but_clipboard_free();
 +	ui_exit_button_group_types();
  }
- 
diff --cc source/blender/editors/interface/interface_intern.h
index 66d9033ba99,04e9e2b18b4..23a7718ead0
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@@ -314,10 -314,9 +314,10 @@@ struct uiBut 
  	float *editvec;
  	void *editcoba;
  	void *editcumap;
- 	
+ 
  	/* pointer back */
  	uiBlock *block;
 +	uiButtonGroup *group;
  };
  
  typedef struct uiButTab {
@@@ -794,14 -789,9 +791,16 @@@ void ui_resources_free(void)
  void ui_layout_add_but(uiLayout *layout, uiBut *but);
  void ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop);
  void ui_layout_list_set_labels_active(uiLayout *layout);
+ /* menu callback */
+ void ui_item_paneltype_func(struct bContext *C, struct uiLayout *layout, void *arg_pt);
  
 +/* interface_templates.c */
 +struct uiButtonGroupType *UI_BGT_sortable_id_tabs(void);
 +
 +/* interface_init_exit.c */
 +void ui_init_button_group_types(void);
 +void ui_exit_button_group_types(void);
 +
  /* interface_align.c */
  bool ui_but_can_align(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
  void ui_block_align_calc(uiBlock *block, const ARegion *region);
diff --cc source/blender/editors/screen/screen_ops.c
index 6f422a39584,ad64018929c..2776bd98a43
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@@ -1098,10 -1132,9 +1132,10 @@@ static int area_dupli_invoke(bContext *
  
  	WM_window_set_active_workspace(newwin, workspace);
  	/* allocs new screen and adds to newly created window, using window size */
- 	layout_new = ED_workspace_layout_add(workspace, newwin, BKE_workspace_layout_name_get(layout_old));
+ 	layout_new = ED_workspace_layout_add(bmain, workspace, newwin, BKE_workspace_layout_name_get(layout_old));
  	newsc = BKE_workspace_layout_screen_get(layout_new);
  	WM_window_set_active_layout(newwin, workspace, layout_new);
 +	ED_screen_global_areas_create(newwin);
  
  	/* copy area to new screen */
  	ED_area_data_copy((ScrArea *)newsc->areabase.first, sa, true);
diff --cc source/blender/windowmanager/WM_api.h
index d4e0ed8ee65,f294e95e05c..389eb2a4d71
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@@ -68,10 -69,8 +69,9 @@@ struct ImageFormatData
  struct ARegion;
  struct ScrArea;
  struct Main;
- struct bToolDef;
  struct ViewLayer;
  struct GPUViewport;
 +struct uiButtonGroupType;
  
  #ifdef WITH_INPUT_NDOF
  struct wmNDOFMotionData;
diff --cc source/blender/windowmanager/intern/wm_dragdrop.c
index 83484c5601b,16ed51cbd80..4c79f901f53
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.c
@@@ -156,12 -145,11 +156,12 @@@ wmDrag *WM_event_start_drag(struct bCon
  {
  	wmWindowManager *wm = CTX_wm_manager(C);
  	wmDrag *drag = MEM_callocN(sizeof(struct wmDrag), "new drag");
- 	
+ 
  	/* keep track of future multitouch drag too, add a mousepointer id or so */
  	/* if multiple drags are added, they're drawn as list */
- 	
+ 
  	BLI_addtail(&wm->drags, drag);
 +	drag->init_region = CTX_wm_region(C);
  	drag->flags = flags;
  	drag->icon = icon;
  	drag->type = type;
@@@ -349,8 -312,7 +349,8 @@@ void wm_drags_draw(bContext *C, wmWindo
  	wmDrag *drag;
  	const int winsize_y = WM_window_pixels_y(win);
  	int cursorx, cursory, x, y;
 +	char drag_name[UI_MAX_NAME_STR];
- 	
+ 
  	cursorx = win->eventstate->x;
  	cursory = win->eventstate->y;
  	if (rect) {
@@@ -406,9 -366,9 +406,9 @@@
  		}
  		else {
  			const unsigned char col[] = {255, 255, 255, 255};
 -			UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag), col);
 +			UI_fontstyle_draw_simple(fstyle, x, y, drag_name, col);
  		}
- 		
+ 
  		/* operator name with roundbox */
  		if (drag->opname[0]) {
  			if (drag->imb) {
@@@ -429,14 -389,14 +429,14 @@@
  					y = (cursory - iconsize) - padding;
  				}
  			}
- 			
+ 
  			if (rect) {
 -				int w =  UI_fontstyle_string_width(fstyle, wm_drag_name(drag));
 +				int w =  UI_fontstyle_string_width(fstyle, drag_name);
  				drag_rect_minmax(rect, x, y, x + w, y + iconsize);
  			}
- 			else 
+ 			else
  				wm_drop_operator_draw(drag->opname, x, y);
- 			
+ 
  		}
  	}
  	glDisable(GL_BLEND);
diff --cc source/blender/windowmanager/intern/wm_event_system.c
index 1112eb0670e,fcc297b308a..e2399b7c3f2
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@@ -2298,31 -2344,20 +2344,34 @@@ static int wm_handlers_do_intern(bConte
  						if (event->custom == EVT_DATA_DRAGDROP) {
  							ListBase *lb = (ListBase *)event->customdata;
  							wmDrag *drag;
- 							
+ 
  							for (drag = lb->first; drag; drag = drag->next) {
 -								if (drop->poll(C, drag, event)) {
 -									drop->copy(drag, drop);
 +								if (!drop->poll || drop->poll(C, drag, event)) {
 +									if (drop->copy) {
 +										drop->copy(drag, drop);
 +									}
- 									
+ 
+ 									/* free the drags before calling operator */
+ 									WM_drag_free_list(lb);
+ 
  									event->customdata = NULL;
  									event->custom = 0;
- 									
+ 
 -									WM_operator_name_call_ptr(C, drop->ot, drop->opcontext, drop->ptr);
 +									if (drop->ot) {
 +										/* free the drags before calling operator */
 +										WM_drag_free_list(lb);
 +
 +										WM_operator_name_call_ptr(C, drop->ot, drop->opcontext, drop->ptr);
 +									}
 +									else if (drop->drop_handler) {
 +										drop->drop_handler(drag, event);
 +										WM_drag_free_list(lb);
 +									}
 +									else {
 +										BLI_assert(0);
 +									}
  									action |= WM_HANDLER_BREAK;
- 									
+ 
  									/* XXX fileread case */
  									if (CTX_wm_window(C) == NULL)
  										return action;
diff --cc source/blender/windowmanager/intern/wm_window.c
index 2444f88c1e9,43231855162..ae351076e1f
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@@ -300,9 -288,8 +288,9 @@@ wmWindow *wm_window_copy(bContext *C, w
  
  	win_dst->scene = scene;
  	WM_window_set_active_workspace(win_dst, workspace);
- 	layout_new = duplicate_layout ? ED_workspace_layout_duplicate(workspace, layout_old, win_dst) : layout_old;
+ 	layout_new = duplicate_layout ? ED_workspace_layout_duplicate(bmain, workspace, layout_old, win_dst) : layout_old;
  	WM_window_set_active_layout(win_dst, workspace, layout_new);
 +	ED_screen_global_areas_create(win_dst);
  
  	*win_dst->stereo3d_format = *win_src->stereo3d_format;



More information about the Bf-blender-cvs mailing list