Fix window title drawn outside the title bar
This commit is contained in:
@ -1400,6 +1400,7 @@
|
||||
<param index="6" name="oversampling" type="float" default="0.0" />
|
||||
<description>
|
||||
Draw shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). If [param oversampling] is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used.
|
||||
[param clip_l] and [param clip_r] are offsets relative to [param pos], going to the right in horizontal layout and downward in vertical layout. If [param clip_l] is not negative, glyphs starting before the offset are clipped. If [param clip_r] is not negative, glyphs ending after the offset are clipped.
|
||||
</description>
|
||||
</method>
|
||||
<method name="shaped_text_draw_outline" qualifiers="const">
|
||||
@ -1414,6 +1415,7 @@
|
||||
<param index="7" name="oversampling" type="float" default="0.0" />
|
||||
<description>
|
||||
Draw the outline of the shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). If [param oversampling] is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used.
|
||||
[param clip_l] and [param clip_r] are offsets relative to [param pos], going to the right in horizontal layout and downward in vertical layout. If [param clip_l] is not negative, glyphs starting before the offset are clipped. If [param clip_r] is not negative, glyphs ending after the offset are clipped.
|
||||
</description>
|
||||
</method>
|
||||
<method name="shaped_text_fit_to_width">
|
||||
|
||||
@ -991,10 +991,10 @@
|
||||
The color of the title's text outline.
|
||||
</theme_item>
|
||||
<theme_item name="close_h_offset" data_type="constant" type="int" default="18">
|
||||
Horizontal position offset of the close button.
|
||||
Horizontal position offset of the close button, relative to the end of the title bar, towards the beginning of the title bar.
|
||||
</theme_item>
|
||||
<theme_item name="close_v_offset" data_type="constant" type="int" default="24">
|
||||
Vertical position offset of the close button.
|
||||
Vertical position offset of the close button, relative to the bottom of the title bar, towards the top of the title bar.
|
||||
</theme_item>
|
||||
<theme_item name="resize_margin" data_type="constant" type="int" default="4">
|
||||
Defines the outside margin at which the window border can be grabbed with mouse and resized.
|
||||
|
||||
@ -337,7 +337,7 @@ void Viewport::_sub_window_update(Window *p_window) {
|
||||
sw.pending_window_update = false;
|
||||
|
||||
RS::get_singleton()->canvas_item_clear(sw.canvas_item);
|
||||
Rect2i r = Rect2i(p_window->get_position(), p_window->get_size());
|
||||
const Rect2i r = Rect2i(p_window->get_position(), p_window->get_size());
|
||||
|
||||
if (!p_window->get_flag(Window::FLAG_BORDERLESS)) {
|
||||
Ref<StyleBox> panel = gui.subwindow_focused == p_window ? p_window->theme_cache.embedded_border : p_window->theme_cache.embedded_unfocused_border;
|
||||
@ -351,8 +351,10 @@ void Viewport::_sub_window_update(Window *p_window) {
|
||||
int close_h_ofs = p_window->theme_cache.close_h_offset;
|
||||
int close_v_ofs = p_window->theme_cache.close_v_offset;
|
||||
|
||||
const real_t title_space = r.size.width - panel->get_minimum_size().x - close_h_ofs;
|
||||
if (title_space > 0) {
|
||||
TextLine title_text = TextLine(p_window->get_translated_title(), title_font, font_size);
|
||||
title_text.set_width(r.size.width - panel->get_minimum_size().x - close_h_ofs);
|
||||
title_text.set_width(title_space);
|
||||
title_text.set_direction(p_window->is_layout_rtl() ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR);
|
||||
int x = (r.size.width - title_text.get_size().x) / 2;
|
||||
int y = (-title_height - title_text.get_size().y) / 2;
|
||||
@ -363,6 +365,7 @@ void Viewport::_sub_window_update(Window *p_window) {
|
||||
title_text.draw_outline(sw.canvas_item, r.position + Point2(x, y), outline_size, font_outline_color);
|
||||
}
|
||||
title_text.draw(sw.canvas_item, r.position + Point2(x, y), title_color);
|
||||
}
|
||||
|
||||
bool pressed = gui.subwindow_focused == sw.window && gui.subwindow_drag == SUB_WINDOW_DRAG_CLOSE && gui.subwindow_drag_close_inside;
|
||||
Ref<Texture2D> close_icon = pressed ? p_window->theme_cache.close_pressed : p_window->theme_cache.close;
|
||||
|
||||
Reference in New Issue
Block a user