[Bf-blender-cvs] [0cd92a1e770] wm-drag-drop-rewrite: Merge branch 'master' into wm-drag-drop-rewrite
Julian Eisel
noreply at git.blender.org
Fri Jan 24 11:37:29 CET 2020
Commit: 0cd92a1e770c63be5c2ae5a48fd2cb924cd19936
Author: Julian Eisel
Date: Fri Jan 24 11:35:02 2020 +0100
Branches: wm-drag-drop-rewrite
https://developer.blender.org/rB0cd92a1e770c63be5c2ae5a48fd2cb924cd19936
Merge branch 'master' into wm-drag-drop-rewrite
===================================================================
===================================================================
diff --cc source/blender/editors/interface/interface_handlers.c
index 2a9edeed248,16996681695..2b97c2a1723
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@@ -7361,10 -7721,11 +7699,11 @@@ static void button_tooltip_timer_reset(
if ((U.flag & USER_TOOLTIPS) || (data->tooltip_force)) {
if (!but->block->tooltipdisabled) {
- if (!wm->drags.first) {
+ if (!wm->drag.data) {
bool is_label = UI_but_has_tooltip_label(but);
double delay = is_label ? UI_TOOLTIP_DELAY_LABEL : UI_TOOLTIP_DELAY;
- WM_tooltip_timer_init_ex(C, data->window, data->region, ui_but_tooltip_init, delay);
+ WM_tooltip_timer_init_ex(
+ C, data->window, data->area, data->region, ui_but_tooltip_init, delay);
if (is_label) {
bScreen *sc = WM_window_get_active_screen(data->window);
if (sc->tool_tip) {
diff --cc source/blender/windowmanager/WM_api.h
index 70a5074aaf9,cfdb15026fd..4a62e5b34df
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@@ -628,94 -632,24 +632,88 @@@ void WM_event_fileselect_event(struct w
void WM_operator_region_active_win_set(struct bContext *C);
- int WM_event_drag_threshold(const struct wmEvent *event);
- bool WM_event_drag_test(const struct wmEvent *event, const int prev_xy[2]);
- bool WM_event_drag_test_with_delta(const struct wmEvent *event, const int delta[2]);
-
/* drag and drop */
-struct wmDrag *WM_event_start_drag(
- struct bContext *C, int icon, int type, void *poin, double value, unsigned int flags);
-void WM_event_drag_image(struct wmDrag *, struct ImBuf *, float scale, int sx, int sy);
-void WM_drag_free(struct wmDrag *drag);
-void WM_drag_free_list(struct ListBase *lb);
-
-struct wmDropBox *WM_dropbox_add(
- ListBase *lb,
- const char *idname,
- bool (*poll)(struct bContext *, struct wmDrag *, const struct wmEvent *event, const char **),
- void (*copy)(struct wmDrag *, struct wmDropBox *));
-ListBase *WM_dropboxmap_find(const char *idname, int spaceid, int regionid);
-
-/* ID drag and drop */
-void WM_drag_add_ID(struct wmDrag *drag, struct ID *id, struct ID *from_parent);
-struct ID *WM_drag_ID(const struct wmDrag *drag, short idcode);
-struct ID *WM_drag_ID_from_event(const struct wmEvent *event, short idcode);
+struct wmDragData *WM_drag_start_id(struct bContext *C, ID *id);
+struct wmDragData *WM_drag_start_filepath(struct bContext *C, const char *filepath);
+struct wmDragData *WM_drag_start_filepaths(struct bContext *C, const char **filepaths, int amount);
+struct wmDragData *WM_drag_start_color(struct bContext *C, float color[3], bool gamma_corrected);
+struct wmDragData *WM_drag_start_value(struct bContext *C, double value);
+struct wmDragData *WM_drag_start_rna(struct bContext *C, struct PointerRNA *rna);
+struct wmDragData *WM_drag_start_name(struct bContext *C, const char *name);
+struct wmDragData *WM_drag_start_collection_children(struct bContext *C,
+ struct ListBase *collection_children);
+
+struct wmDragData *WM_drag_get_active(struct bContext *C);
+struct wmDragData *WM_drag_data_from_event(const struct wmEvent *event);
+void WM_drag_transfer_ownership_to_event(struct wmWindowManager *wm, struct wmEvent *event);
+struct wmDropTarget *WM_drag_find_current_target(struct bContext *C,
+ struct wmDragData *drag_data,
+ const struct wmEvent *event);
+
+void WM_drag_display_set_color(struct wmDragData *drag_data, float color[3]);
+void WM_drag_display_set_color_derived(struct wmDragData *drag_data);
+void WM_drag_display_set_icon(struct wmDragData *drag_data, int icon_id);
+void WM_drag_display_set_image(
+ struct wmDragData *drag_data, struct ImBuf *imb, float scale, int width, int height);
+
+void WM_drag_data_free(struct wmDragData *drag);
+void WM_drop_target_free(struct wmDropTarget *drop_target);
+void WM_drag_stop(wmWindowManager *wm);
+
+struct ID *WM_drag_query_single_id(struct wmDragData *drag_data);
+struct ID *WM_drag_query_single_id_of_type(struct wmDragData *drag_data, int idtype);
+struct Collection *WM_drag_query_single_collection(struct wmDragData *drag_data);
+struct Material *WM_drag_query_single_material(struct wmDragData *drag_data);
+struct Object *WM_drag_query_single_object(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path_of_types(struct wmDragData *drag_data, int types);
+const char *WM_drag_query_single_path_text(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path_maybe_text(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path_image(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path_movie(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path_sound(struct wmDragData *drag_data);
+const char *WM_drag_query_single_path_image_or_movie(struct wmDragData *drag_data);
+struct ListBase *WM_drag_query_collection_children(struct wmDragData *drag_data);
+bool WM_drag_query_single_color(struct wmDragData *drag_data,
+ float *r_color,
+ bool *r_gamma_corrected);
+
+typedef void (*wmDropTargetSetProps)(struct wmDragData *, struct PointerRNA *);
+
+enum DropTargetSize {
+ DROP_TARGET_SIZE_BUT,
+ DROP_TARGET_SIZE_OUTLINER_ROW,
+ DROP_TARGET_SIZE_VISIBLE_OBJECT,
+ DROP_TARGET_SIZE_REGION,
+ DROP_TARGET_SIZE_AREA,
+ DROP_TARGET_SIZE_WINDOW,
+ DROP_TARGET_SIZE_MAX,
+};
+
+void WM_drop_target_propose(struct wmDropTargetFinder *finder, struct wmDropTarget *target);
+void WM_drop_target_propose__template_1(struct wmDropTargetFinder *finder,
+ enum DropTargetSize size,
+ const char *ot_idname,
+ const char *tooltip,
+ wmDropTargetSetProps set_properties);
+void WM_drop_target_propose__template_2(struct wmDropTargetFinder *finder,
+ enum DropTargetSize size,
+ const char *ot_idname,
+ const char *tooltip,
+ wmDropTargetSetProps set_properties,
+ short context);
+
+struct wmDropTarget *WM_drop_target_new(enum DropTargetSize size,
+ char *ot_idname,
+ char *tooltip,
+ wmDropTargetSetProps set_properties,
+ short context,
+ bool free,
+ bool free_idname,
+ bool free_tooltip);
+
+void WM_drop_init_single_filepath(struct wmDragData *drag_data, struct PointerRNA *ptr);
+void WM_drop_init_single_id_name(struct wmDragData *drag_data, struct PointerRNA *ptr);
/* Set OpenGL viewport and scissor */
void wmViewport(const struct rcti *rect);
diff --cc source/blender/windowmanager/intern/wm_dragdrop.c
index 22084824996,e2462bb59b1..8138c5b6f05
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.c
@@@ -35,17 -33,16 +35,18 @@@
#include "BLT_translation.h"
#include "BLI_blenlib.h"
+#include "BLI_math_vector.h"
- #include "BIF_gl.h"
#include "BIF_glutil.h"
#include "BKE_context.h"
#include "BKE_idcode.h"
+#include "BKE_screen.h"
+ #include "GPU_glew.h"
#include "GPU_shader.h"
#include "GPU_state.h"
+ #include "GPU_viewport.h"
#include "IMB_imbuf_types.h"
diff --cc source/blender/windowmanager/intern/wm_event_system.c
index 99f03b57a40,ba1f34478ed..0c6177b8383
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@@ -172,18 -166,7 +164,14 @@@ static void wm_event_free_customdata_if
}
}
}
+ event->customdata = NULL;
+ event->customdatafree = false;
+}
+
+void wm_event_free(wmEvent *event)
+{
+ wm_event_free_customdata_if_necessary(event);
- if (event->tablet_data) {
- MEM_freeN((void *)event->tablet_data);
- }
-
MEM_freeN(event);
}
More information about the Bf-blender-cvs
mailing list