diff options
| author | VolTer <mew.pur.pur@abv.bg> | 2022-09-15 00:54:14 +0200 | 
|---|---|---|
| committer | VolTer <mew.pur.pur@abv.bg> | 2022-10-10 04:36:45 +0200 | 
| commit | d6e60f45a13074c2a72c583cfab885e5539eb903 (patch) | |
| tree | b308afeb7e96496df34464493c92815391ba665c | |
| parent | ca25c6e0a3f25948ee4a197f3442c66f019e7424 (diff) | |
Improved breakpoints hover indicator
| -rw-r--r-- | scene/gui/code_edit.cpp | 32 | ||||
| -rw-r--r-- | scene/gui/text_edit.cpp | 6 | 
2 files changed, 21 insertions, 17 deletions
diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp index 70707dba11..8a5d04f49c 100644 --- a/scene/gui/code_edit.cpp +++ b/scene/gui/code_edit.cpp @@ -1248,37 +1248,41 @@ bool CodeEdit::is_drawing_executing_lines_gutter() const {  }  void CodeEdit::_main_gutter_draw_callback(int p_line, int p_gutter, const Rect2 &p_region) { -	bool shift_pressed = Input::get_singleton()->is_key_pressed(Key::SHIFT); -  	if (draw_breakpoints && breakpoint_icon.is_valid()) { -		bool hovering = p_region.has_point(get_local_mouse_pos());  		bool breakpointed = is_line_breakpointed(p_line); +		bool hovering = p_region.has_point(get_local_mouse_pos()); +		bool shift_pressed = Input::get_singleton()->is_key_pressed(Key::SHIFT);  		if (breakpointed || (hovering && !is_dragging_cursor() && !shift_pressed)) {  			int padding = p_region.size.x / 6; + +			Color use_color = breakpoint_color; +			if (hovering && !shift_pressed) { +				use_color = breakpointed ? use_color.lightened(0.3) : use_color.darkened(0.5); +			}  			Rect2 icon_region = p_region;  			icon_region.position += Point2(padding, padding);  			icon_region.size -= Point2(padding, padding) * 2; - -			// Darken icon when hovering, shift not pressed & not yet breakpointed. -			Color use_color = hovering && !breakpointed && !shift_pressed ? breakpoint_color.darkened(0.4) : breakpoint_color;  			breakpoint_icon->draw_rect(get_canvas_item(), icon_region, false, use_color);  		}  	}  	if (draw_bookmarks && bookmark_icon.is_valid()) { -		bool hovering = p_region.has_point(get_local_mouse_pos());  		bool bookmarked = is_line_bookmarked(p_line); +		bool hovering = p_region.has_point(get_local_mouse_pos()); +		bool shift_pressed = Input::get_singleton()->is_key_pressed(Key::SHIFT);  		if (bookmarked || (hovering && !is_dragging_cursor() && shift_pressed)) {  			int horizontal_padding = p_region.size.x / 2;  			int vertical_padding = p_region.size.y / 4; + +			Color use_color = bookmark_color; +			if (hovering && shift_pressed) { +				use_color = bookmarked ? use_color.lightened(0.3) : use_color.darkened(0.5); +			}  			Rect2 icon_region = p_region;  			icon_region.position += Point2(horizontal_padding, 0);  			icon_region.size -= Point2(horizontal_padding * 1.1, vertical_padding); - -			// Darken icon when hovering, shift pressed & not yet bookmarked. -			Color use_color = hovering && !bookmarked && shift_pressed ? bookmark_color.darkened(0.4) : bookmark_color;  			bookmark_icon->draw_rect(get_canvas_item(), icon_region, false, use_color);  		}  	} @@ -1287,10 +1291,10 @@ void CodeEdit::_main_gutter_draw_callback(int p_line, int p_gutter, const Rect2  		int horizontal_padding = p_region.size.x / 10;  		int vertical_padding = p_region.size.y / 4; -		Rect2 executing_line_region = p_region; -		executing_line_region.position += Point2(horizontal_padding, vertical_padding); -		executing_line_region.size -= Point2(horizontal_padding, vertical_padding) * 2; -		executing_line_icon->draw_rect(get_canvas_item(), executing_line_region, false, executing_line_color); +		Rect2 icon_region = p_region; +		icon_region.position += Point2(horizontal_padding, vertical_padding); +		icon_region.size -= Point2(horizontal_padding, vertical_padding) * 2; +		executing_line_icon->draw_rect(get_canvas_item(), icon_region, false, executing_line_color);  	}  } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 2e7f650fc2..dafc6b8953 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1692,7 +1692,7 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {  						continue;  					} -					if (mpos.x > left_margin && mpos.x <= (left_margin + gutters[i].width) - 3) { +					if (mpos.x >= left_margin && mpos.x <= left_margin + gutters[i].width) {  						emit_signal(SNAME("gutter_clicked"), row, i);  						return;  					} @@ -1933,7 +1933,7 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {  					continue;  				} -				if (mpos.x > left_margin && mpos.x <= (left_margin + gutters[i].width) - 3) { +				if (mpos.x >= left_margin && mpos.x < left_margin + gutters[i].width) {  					// We are in this gutter i's horizontal area.  					current_hovered_gutter = Vector2i(i, hovered_row);  					break; @@ -2997,7 +2997,7 @@ Control::CursorShape TextEdit::get_cursor_shape(const Point2 &p_pos) const {  				continue;  			} -			if (p_pos.x > left_margin && p_pos.x <= (left_margin + gutters[i].width) - 3) { +			if (p_pos.x >= left_margin && p_pos.x < left_margin + gutters[i].width) {  				if (gutters[i].clickable || is_line_gutter_clickable(row, i)) {  					return CURSOR_POINTING_HAND;  				}  |