-All types have editable script now in properties

-Changed clip to a property in Control which can be set by the user
This commit is contained in:
Juan Linietsky 2017-01-09 15:50:08 -03:00
parent 0e635b683b
commit e9bb65db81
20 changed files with 64 additions and 27 deletions

View file

@ -532,8 +532,6 @@ void Object::get_property_list(List<PropertyInfo> *p_list,bool p_reversed) const
_get_property_listv(p_list,p_reversed);
if (!_use_builtin_script())
return;
if (!is_class("Script")) // can still be set, but this is for userfriendlyness
p_list->push_back( PropertyInfo( Variant::OBJECT, "script/script", PROPERTY_HINT_RESOURCE_TYPE, "Script",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_STORE_IF_NONZERO));

View file

@ -432,7 +432,7 @@ friend void postinitialize_handler(Object*);
protected:
virtual bool _use_builtin_script() const { return false; }
virtual void _initialize_classv() { initialize_class(); }
virtual bool _setv(const StringName& p_name,const Variant &p_property) { return false; };
virtual bool _getv(const StringName& p_name,Variant &r_property) const { return false; };

View file

@ -62,7 +62,7 @@ class ResourceImportMetadata : public Reference {
StringArray _get_options() const;
protected:
virtual bool _use_builtin_script() const { return false; }
static void _bind_methods();
public:

View file

@ -24,8 +24,6 @@ friend class VisualScript;
void validate_input_default_values();
protected:
virtual bool _use_builtin_script() const { return false; }
void _notification(int p_what);
void ports_changed_notify();
static void _bind_methods();

View file

@ -706,8 +706,6 @@ class VisualScriptCustomNode: public VisualScriptNode {
protected:
virtual bool _use_builtin_script() const { return true; }
static void _bind_methods();
public:

View file

@ -532,7 +532,7 @@ void Control::_notification(int p_notification) {
_update_canvas_item_transform();
VisualServer::get_singleton()->canvas_item_set_custom_rect( get_canvas_item(),!data.disable_visibility_clip, Rect2(Point2(),get_size()));
VisualServer::get_singleton()->canvas_item_set_clip( get_canvas_item(), data.clip_contents );
//emit_signal(SceneStringNames::get_singleton()->draw);
} break;
@ -2340,6 +2340,16 @@ void Control::get_argument_options(const StringName& p_function,int p_idx,List<S
}
void Control::set_clip_contents(bool p_clip) {
data.clip_contents=p_clip;
update();
}
bool Control::is_clipping_contents() {
return data.clip_contents;
}
void Control::_bind_methods() {
@ -2444,9 +2454,12 @@ void Control::_bind_methods() {
ClassDB::bind_method(_MD("force_drag","data","preview"),&Control::force_drag);
ClassDB::bind_method(_MD("set_mouse_filter","stop"),&Control::set_mouse_filter);
ClassDB::bind_method(_MD("set_mouse_filter","filter"),&Control::set_mouse_filter);
ClassDB::bind_method(_MD("get_mouse_filter"),&Control::get_mouse_filter);
ClassDB::bind_method(_MD("set_clip_contents","enable"),&Control::set_clip_contents);
ClassDB::bind_method(_MD("is_clipping_contents"),&Control::is_clipping_contents);
ClassDB::bind_method(_MD("grab_click_focus"),&Control::grab_click_focus);
ClassDB::bind_method(_MD("set_drag_forwarding","target:Control"),&Control::set_drag_forwarding);
@ -2486,6 +2499,7 @@ void Control::_bind_methods() {
ADD_PROPERTYNZ( PropertyInfo(Variant::VECTOR2,"rect_min_size"), _SCS("set_custom_minimum_size"),_SCS("get_custom_minimum_size") );
ADD_PROPERTYNZ( PropertyInfo(Variant::REAL,"rect_rotation",PROPERTY_HINT_RANGE,"-1080,1080,0.01"), _SCS("set_rotation_deg"),_SCS("get_rotation_deg") );
ADD_PROPERTYNO( PropertyInfo(Variant::VECTOR2,"rect_scale"), _SCS("set_scale"),_SCS("get_scale") );
ADD_PROPERTYNO( PropertyInfo(Variant::BOOL,"rect_clip_content"), _SCS("set_clip_contents"),_SCS("is_clipping_contents") );
ADD_GROUP("Hint","hint_");
@ -2587,7 +2601,7 @@ Control::Control() {
data.block_minimum_size_adjust=false;
data.disable_visibility_clip=false;
data.clip_contents=false;
for (int i=0;i<4;i++) {
data.anchor[i]=ANCHOR_BEGIN;
data.margin[i]=0;

View file

@ -132,6 +132,8 @@ private:
MouseFilter mouse_filter;
bool clip_contents;
bool block_minimum_size_adjust;
bool disable_visibility_clip;
@ -401,6 +403,8 @@ public:
Control *get_root_parent_control() const;
void set_clip_contents(bool p_clip);
bool is_clipping_contents();
void set_block_minimum_size_adjust(bool p_block);
bool is_minimum_size_adjust_blocked() const;

View file

@ -302,7 +302,6 @@ void GraphEdit::_notification(int p_what) {
draw_style_box( get_stylebox("bg"),Rect2(Point2(),get_size()) );
VS::get_singleton()->canvas_item_set_clip(get_canvas_item(),true);
if (is_using_snap()) {
//draw grid
@ -1337,7 +1336,7 @@ GraphEdit::GraphEdit() {
setting_scroll_ofs=false;
just_disconected=false;
set_clip_contents(true);
}

View file

@ -788,7 +788,6 @@ void ItemList::_notification(int p_what) {
if (p_what==NOTIFICATION_DRAW) {
VS::get_singleton()->canvas_item_set_clip(get_canvas_item(),true);
Ref<StyleBox> bg = get_stylebox("bg");
int mw = scroll_bar->get_minimum_size().x;
@ -1402,6 +1401,7 @@ ItemList::ItemList() {
allow_rmb_select=false;
icon_scale = 1.0f;
set_clip_contents(true);
}
ItemList::~ItemList() {

View file

@ -70,8 +70,9 @@ void Label::_notification(int p_what) {
if (p_what==NOTIFICATION_DRAW) {
if (clip || autowrap)
if (clip || autowrap) {
VisualServer::get_singleton()->canvas_item_set_clip(get_canvas_item(),true);
}
if (word_cache_dirty)
regenerate_word_cache();

View file

@ -687,8 +687,6 @@ void RichTextLabel::_notification(int p_what) {
RID ci=get_canvas_item();
Size2 size = get_size();
VisualServer::get_singleton()->canvas_item_set_clip(ci,true);
if (has_focus()) {
VisualServer::get_singleton()->canvas_item_add_clip_ignore(ci,true);
draw_style_box(get_stylebox("focus"),Rect2(Point2(),size));
@ -2046,6 +2044,7 @@ RichTextLabel::RichTextLabel() {
visible_characters=-1;
set_clip_contents(true);
}
RichTextLabel::~RichTextLabel() {

View file

@ -261,7 +261,6 @@ void ScrollContainer::_notification(int p_what) {
update_scrollbars();
VisualServer::get_singleton()->canvas_item_set_clip(get_canvas_item(),true);
}
if (p_what==NOTIFICATION_FIXED_PROCESS) {
@ -434,6 +433,29 @@ void ScrollContainer::set_h_scroll(int p_pos) {
}
String ScrollContainer::get_configuration_warning() const {
int found=0;
for(int i=0;i<get_child_count();i++) {
Control *c = get_child(i)->cast_to<Control>();
if (!c)
continue;
if (c->is_set_as_toplevel())
continue;
if (c == h_scroll || c == v_scroll)
continue;
found++;
}
if (found!=1)
return TTR("ScrollContainer is intended to work with a single child control.\nUse a container as child (VBox,HBox,etc), or a Control and set the custom minimum size manually.");
else
return "";
}
void ScrollContainer::_bind_methods() {
@ -474,6 +496,6 @@ ScrollContainer::ScrollContainer() {
scroll_h=true;
scroll_v=true;
set_clip_contents(true);
};

View file

@ -86,6 +86,9 @@ public:
bool is_v_scroll_enabled() const;
virtual bool clips_input() const;
virtual String get_configuration_warning() const;
ScrollContainer();
};

View file

@ -2760,8 +2760,6 @@ void Tree::_notification(int p_what) {
update_scrollbars();
RID ci = get_canvas_item();
VisualServer::get_singleton()->canvas_item_set_clip(ci,true);
Ref<StyleBox> bg = cache.bg;
Ref<StyleBox> bg_focus = get_stylebox("bg_focus");
@ -3730,6 +3728,8 @@ Tree::Tree() {
force_select_on_already_selected=false;
allow_rmb_select=false;
set_clip_contents(true);
}

View file

@ -146,7 +146,6 @@ private:
void _print_tree(const Node *p_node);
virtual bool _use_builtin_script() const { return true; }
Node *_get_node(const NodePath& p_path) const;
Node *_get_child_by_name(const StringName& p_name) const;

View file

@ -1090,7 +1090,6 @@ void AnimationKeyEditor::_track_pos_draw() {
void AnimationKeyEditor::_track_editor_draw() {
VisualServer::get_singleton()->canvas_item_set_clip(track_editor->get_canvas_item(),true);
if (animation.is_valid() && animation->get_track_count()) {
if (selected_track < 0)
@ -4312,6 +4311,7 @@ AnimationKeyEditor::AnimationKeyEditor() {
add_constant_override("separation",get_constant("separation","VBoxContainer"));
track_editor->set_clip_contents(true);
}

View file

@ -947,7 +947,6 @@ void AnimationTreeEditor::_notification(int p_what) {
_update_scrollbars();
//VisualServer::get_singleton()->canvas_item_add_rect(get_canvas_item(),Rect2(Point2(),get_size()),Color(0,0,0,1));
get_stylebox("bg","Tree")->draw(get_canvas_item(),Rect2(Point2(),get_size()));
VisualServer::get_singleton()->canvas_item_set_clip(get_canvas_item(),true);
for(List<StringName>::Element *E=order.front();E;E=E->next()) {
@ -1485,6 +1484,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
filter_button->set_text(TTR("Filters.."));
filter_button->connect("pressed", this,"_edit_filters");
set_clip_contents(true);
}

View file

@ -1962,7 +1962,6 @@ void CanvasItemEditor::_viewport_draw() {
Ref<Texture> lock = get_icon("Lock","EditorIcons");
Ref<Texture> group = get_icon("Group","EditorIcons");
VisualServer::get_singleton()->canvas_item_set_clip(ci,true);
bool single = get_single_item()!=NULL;
@ -3344,6 +3343,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
viewport = memnew( CanvasItemEditorViewport(p_editor, this) );
vp_base->add_child(viewport);
viewport->set_area_as_parent_rect();
viewport->set_clip_contents(true);
h_scroll = memnew( HScrollBar );
v_scroll = memnew( VScrollBar );

View file

@ -684,7 +684,6 @@ void Polygon2DEditor::_uv_draw() {
mtx.elements[2]=-uv_draw_ofs;
mtx.scale_basis(Vector2(uv_draw_zoom,uv_draw_zoom));
VS::get_singleton()->canvas_item_set_clip(uv_edit_draw->get_canvas_item(),true);
VS::get_singleton()->canvas_item_add_set_transform(uv_edit_draw->get_canvas_item(),mtx);
uv_edit_draw->draw_texture(base_tex,Point2());
VS::get_singleton()->canvas_item_add_set_transform(uv_edit_draw->get_canvas_item(),Matrix32());
@ -984,6 +983,8 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) {
error = memnew( AcceptDialog);
add_child(error);
uv_edit_draw->set_clip_contents(true);
}

View file

@ -61,7 +61,6 @@ void TextureRegionEditor::_region_draw()
mtx.elements[2]=-draw_ofs;
mtx.scale_basis(Vector2(draw_zoom,draw_zoom));
VS::get_singleton()->canvas_item_set_clip(edit_draw->get_canvas_item(),true);
VS::get_singleton()->canvas_item_add_set_transform(edit_draw->get_canvas_item(),mtx);
edit_draw->draw_texture(base_tex,Point2());
VS::get_singleton()->canvas_item_add_set_transform(edit_draw->get_canvas_item(),Matrix32());
@ -925,6 +924,8 @@ TextureRegionEditor::TextureRegionEditor(EditorNode* p_editor)
draw_zoom=1.0;
updating_scroll=false;
edit_draw->set_clip_contents(true);
}
void TextureRegionEditorPlugin::edit(Object *p_node)