Commit: e2b79f87566acb4e06c7a306de0766a1cdfc1cd5
Author: Julian Eisel
Date:   Tue Sep 13 00:42:32 2016 +0200
Branches: temp_manipulators_core
https://developer.blender.org/rBe2b79f87566acb4e06c7a306de0766a1cdfc1cd5

Resolve some XXX'es and TODO's

And some cleanup.

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

M       source/blender/blenkernel/BKE_screen.h
M       source/blender/blenkernel/intern/screen.c
M       source/blender/windowmanager/intern/wm_event_system.c
M       source/blender/windowmanager/intern/wm_init_exit.c
M       source/blender/windowmanager/manipulators/WM_manipulator_types.h
M       
source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
M       
source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
M       
source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
M       
source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
M       
source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
M       
source/blender/windowmanager/manipulators/intern/manipulator_library/primitive_manipulator.c
M       source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
M       source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c

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

diff --git a/source/blender/blenkernel/BKE_screen.h 
b/source/blender/blenkernel/BKE_screen.h
index 1dfef5c..cd8b520 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -285,7 +285,7 @@ struct ARegion *BKE_area_region_copy(struct SpaceType *st, 
struct ARegion *ar);
 void            BKE_area_region_free(struct SpaceType *st, struct ARegion *ar);
 void            BKE_screen_area_free(struct ScrArea *sa);
 /* Manipulator-maps of a region need to be freed with the region. Uses 
callback to avoid low-level call. */
-void BKE_region_free_callback_manipulatormaps_set(void (*callback)(ListBase 
*list));
+void BKE_region_callback_free_manipulatormaps_set(void (*callback)(ListBase 
*list));
 
 struct ARegion *BKE_area_find_region_type(struct ScrArea *sa, int type);
 struct ARegion *BKE_area_find_region_active_win(struct ScrArea *sa);
diff --git a/source/blender/blenkernel/intern/screen.c 
b/source/blender/blenkernel/intern/screen.c
index 45622c6..ac59f2e 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -295,7 +295,7 @@ void BKE_spacedata_id_unref(struct ScrArea *sa, struct 
SpaceLink *sl, struct ID
  */
 static void (*region_free_manipulatormaps_callback)(ListBase *) = NULL;
 
-void BKE_region_free_callback_manipulatormaps_set(void (*callback)(ListBase 
*list))
+void BKE_region_callback_free_manipulatormaps_set(void (*callback)(ListBase 
*list))
 {
        region_free_manipulatormaps_callback = callback;
 }
diff --git a/source/blender/windowmanager/intern/wm_event_system.c 
b/source/blender/windowmanager/intern/wm_event_system.c
index b0f0a2d..29251e2 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2126,13 +2126,17 @@ static int wm_handlers_do_intern(bContext *C, wmEvent 
*event, ListBase *handlers
                                        /* get user customized keymap from 
default one */
                                        const wmKeyMap *keymap = 
WM_keymap_active(wm, mmap->mmap_context.activegroup->type->keymap);
                                        wmKeyMapItem *kmi;
-                                       /* TODO should probably add some PRINT 
calls here */
+
+                                       PRINT("%s:   checking '%s' ...", 
__func__, keymap->idname);
 
                                        if (!keymap->poll || keymap->poll(C)) {
+                                               PRINT("pass\n");
                                                for (kmi = keymap->items.first; 
kmi; kmi = kmi->next) {
                                                        if 
(wm_eventmatch(event, kmi)) {
                                                                wmOperator *op 
= handler->op;
 
+                                                               PRINT("%s:     
item matched '%s'\n", __func__, kmi->idname);
+
                                                                /* weak, but 
allows interactive callback to not use rawkey */
                                                                
event->keymap_idname = kmi->idname;
 
@@ -2142,11 +2146,20 @@ static int wm_handlers_do_intern(bContext *C, wmEvent 
*event, ListBase *handlers
                                                                handler->op = 
op;
 
                                                                if (action & 
WM_HANDLER_BREAK) {
-                                                                       break;
+                                                                       if 
(action & WM_HANDLER_HANDLED) {
+                                                                               
if (G.debug & (G_DEBUG_EVENTS | G_DEBUG_HANDLERS))
+                                                                               
        printf("%s:       handled - and pass on! '%s'\n", __func__, 
kmi->idname);
+                                                                       }
+                                                                       else {
+                                                                               
PRINT("%s:       un-handled '%s'\n", __func__, kmi->idname);
+                                                                       }
                                                                }
                                                        }
                                                }
                                        }
+                                       else {
+                                               PRINT("fail\n");
+                                       }
                                }
 
                                /* restore the area */
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c 
b/source/blender/windowmanager/intern/wm_init_exit.c
index ffb6724..57f7fde 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -169,9 +169,9 @@ void WM_init(bContext *C, int argc, const char **argv)
 
        BKE_library_callback_free_window_manager_set(wm_close_and_free);   /* 
library.c */
        
BKE_library_callback_free_notifier_reference_set(WM_main_remove_notifier_reference);
   /* library.c */
+       
BKE_region_callback_free_manipulatormaps_set(wm_manipulatormap_delete_list); /* 
screen.c */
        
BKE_library_callback_remap_editor_id_reference_set(WM_main_remap_editor_id_reference);
   /* library.c */
        BKE_blender_callback_test_break_set(wm_window_testbreak); /* blender.c 
*/
-       
BKE_region_free_callback_manipulatormaps_set(wm_manipulatormap_delete_list);
        BKE_spacedata_callback_id_remap_set(ED_spacedata_id_remap); /* screen.c 
*/
        DAG_editors_update_cb(ED_render_id_flush_update,
                              ED_render_scene_update,
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_types.h 
b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
index 0eca5a9..25ff546 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_types.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
@@ -42,7 +42,7 @@ struct wmManipulatorGroupType;
 struct wmManipulatorGroup;
 struct wmKeyConfig;
 
-typedef int  (*wmManipulatorGroupPollFunc)(const struct bContext *, struct 
wmManipulatorGroupType *) ATTR_WARN_UNUSED_RESULT; /* TODO use bool */
+typedef bool (*wmManipulatorGroupPollFunc)(const struct bContext *, struct 
wmManipulatorGroupType *) ATTR_WARN_UNUSED_RESULT;
 typedef void (*wmManipulatorGroupInitFunc)(const struct bContext *, struct 
wmManipulatorGroup *);
 typedef void (*wmManipulatorGroupRefreshFunc)(const struct bContext *, struct 
wmManipulatorGroup *);
 typedef void (*wmManipulatorGroupDrawPrepareFunc)(const struct bContext *, 
struct wmManipulatorGroup *);
diff --git 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
index 7c9f6e4..d8e5d39 100644
--- 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
+++ 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
@@ -97,7 +97,9 @@ static void arrow2d_draw_geom(ArrowManipulator2D *arrow, 
const float origin[2])
 static void manipulator_arrow2d_draw(const bContext *UNUSED(C), wmManipulator 
*manipulator)
 {
        ArrowManipulator2D *arrow = (ArrowManipulator2D *)manipulator;
-       const float *col = manipulator_color_get(manipulator, manipulator->flag 
& WM_MANIPULATOR_HIGHLIGHT);
+       float col[4];
+
+       manipulator_color_get(manipulator, manipulator->flag & 
WM_MANIPULATOR_HIGHLIGHT, col);
 
        glColor4fv(col);
        glLineWidth(manipulator->line_width);
diff --git 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
index 43d2eb8..d80c36a 100644
--- 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
+++ 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
@@ -196,10 +196,12 @@ static void arrow_draw_geom(const ArrowManipulator 
*arrow, const bool select)
 static void arrow_draw_intern(ArrowManipulator *arrow, const bool select, 
const bool highlight)
 {
        const float up[3] = {0.0f, 0.0f, 1.0f};
+       float col[4];
        float rot[3][3];
        float mat[4][4];
        float final_pos[3];
 
+       manipulator_color_get(&arrow->manipulator, highlight, col);
        manipulator_arrow_get_final_pos(&arrow->manipulator, final_pos);
 
        if (arrow->flag & ARROW_UP_VECTOR_SET) {
@@ -217,13 +219,7 @@ static void arrow_draw_intern(ArrowManipulator *arrow, 
const bool select, const
        glPushMatrix();
        glMultMatrixf(mat);
 
-       if (highlight && !(arrow->manipulator.flag & 
WM_MANIPULATOR_DRAW_HOVER)) {
-               glColor4fv(arrow->manipulator.col_hi);
-       }
-       else {
-               glColor4fv(arrow->manipulator.col);
-       }
-
+       glColor4fv(col);
        glEnable(GL_BLEND);
        glTranslate3fv(arrow->manipulator.offset);
        arrow_draw_geom(arrow, select);
diff --git 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
index d98ad3b..50f452b 100644
--- 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
+++ 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
@@ -190,10 +190,12 @@ static void dial_draw_intern(const bContext *C, 
DialManipulator *dial, const boo
        float rot[3][3];
        float mat[4][4];
        const float up[3] = {0.0f, 0.0f, 1.0f};
-       const float *col = manipulator_color_get(&dial->manipulator, highlight);
+       float col[4];
 
        BLI_assert(CTX_wm_area(C)->spacetype == SPACE_VIEW3D);
 
+       manipulator_color_get(&dial->manipulator, highlight, col);
+
        rotation_between_vecs_to_mat3(rot, up, dial->direction);
        copy_m4_m3(mat, rot);
        copy_v3_v3(mat[3], dial->manipulator.origin);
diff --git 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
index 2c635af..66598fa 100644
--- 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
+++ 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
@@ -32,7 +32,7 @@
 #define __MANIPULATOR_LIBRARY_INTERN_H__
 
 /* distance around which manipulators respond to input (and get highlighted) */
-#define MANIPULATOR_HOTSPOT 14.0f /* TODO use everywhere */
+#define MANIPULATOR_HOTSPOT 14.0f
 
 /**
  * Data for common interactions. Used in manipulator_library_utils.c functions.
@@ -92,7 +92,9 @@ void  manipulator_property_value_reset(
 
 /* -------------------------------------------------------------------- */
 
-float *manipulator_color_get(wmManipulator *manipulator, const bool highlight);
+void manipulator_color_get(
+        const wmManipulator *manipulator, const bool highlight,
+        float r_col[]);
 
 #endif  /* __MANIPULATOR_LIBRARY_INTERN_H__ */
 
diff --git 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
index 0066981..a521db0 100644
--- 
a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
+++ 
b/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
@@ -33,6 +33,8 @@
 
 #include "BKE_context.h"
 
+#include "BLI_math.h"
+
 #include "RNA_access.h"
 
 #include "W

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to