Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-12-11 03:34:41 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-12-11 03:34:41 +0400
commitc9dc80111b63fc1b28cae27d6f7ed02ee3bd53db (patch)
tree4e5a52579c7e0451f04b8f18bb25ef989a798939 /source/blender/windowmanager
parent5083e0737f6413c63ab49b82735333534181d9b4 (diff)
parent245345fba5f44b5c8562c826ca0053fa5bbd2ff3 (diff)
Merged changes in the trunk up to revision 52858.
Congratulations to all trunk devs on the Blender 2.65 release!
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_api.h1
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c30
2 files changed, 31 insertions, 0 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 1037542759f..8d885bf6d6f 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -171,6 +171,7 @@ void WM_event_timer_sleep(struct wmWindowManager *wm, struct wmWindow *win, str
/* operator api, default callbacks */
/* invoke callback, uses enum property named "type" */
+int WM_operator_view3d_distance_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
int WM_menu_invoke (struct bContext *C, struct wmOperator *op, struct wmEvent *event);
int WM_enum_search_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
/* invoke callback, confirm menu + exec */
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index c555f771a48..8a0701b1063 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -87,6 +87,7 @@
#include "ED_screen.h"
#include "ED_util.h"
#include "ED_object.h"
+#include "ED_view3d.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -689,6 +690,35 @@ void WM_operator_properties_free(PointerRNA *ptr)
/* ************ default op callbacks, exported *********** */
+int WM_operator_view3d_distance_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *UNUSED(event))
+{
+ Scene *scene = CTX_data_scene(C);
+ View3D *v3d = CTX_wm_view3d(C);
+
+ const float dia = v3d ? ED_view3d_grid_scale(scene, v3d, NULL) : ED_scene_grid_scale(scene, NULL);
+
+ /* always run, so the values are initialized,
+ * otherwise we may get differ behavior when (dia != 1.0) */
+ RNA_STRUCT_BEGIN(op->ptr, prop)
+ {
+ if (RNA_property_type(prop) == PROP_FLOAT) {
+ PropertySubType pstype = RNA_property_subtype(prop);
+ if (pstype == PROP_DISTANCE) {
+ /* we don't support arrays yet */
+ BLI_assert(RNA_property_array_check(prop) == FALSE);
+ /* initialize */
+ if (!RNA_property_is_set_ex(op->ptr, prop, FALSE)) {
+ const float value = RNA_property_float_get_default(op->ptr, prop) * dia;
+ RNA_property_float_set(op->ptr, prop, value);
+ }
+ }
+ }
+ }
+ RNA_STRUCT_END;
+
+ return op->type->exec(C, op);
+}
+
/* invoke callback, uses enum property named "type" */
int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{