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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to