[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