From 4c4e61cf9996ed370cae8e59f4d18e08e57786d3 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sun, 28 Apr 2024 22:56:55 +1200 Subject: [PATCH] feat(term): make cursor hollow when un-focused Closes #29. --- .../terminal/editor_terminal.gd | 3 -- addons/godot_xterm/native/src/terminal.cpp | 28 +++++++++++------- addons/godot_xterm/native/src/terminal.h | 4 ++- addons/godot_xterm/shaders/common.gdshaderinc | 27 +++++++++++++---- .../baseline/default_theme.png | Bin 984 -> 992 bytes test/visual_regression/baseline/emoji.png | Bin 11585 -> 11663 bytes test/visual_regression/baseline/empty.png | Bin 503 -> 517 bytes .../baseline/empty_focused.png | Bin 0 -> 517 bytes .../baseline/hollow_cursor.png | Bin 0 -> 810 bytes .../baseline/solid_invert_selection.png | Bin 548 -> 550 bytes .../baseline/solid_swap_selection.png | Bin 560 -> 561 bytes .../baseline/transparency.png | Bin 12398 -> 12295 bytes .../baseline/transparent_invert_selection.png | Bin 7072 -> 6920 bytes .../test_visual_regression.gd | 10 +++++++ 14 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 test/visual_regression/baseline/empty_focused.png create mode 100644 test/visual_regression/baseline/hollow_cursor.png diff --git a/addons/godot_xterm/editor_plugins/terminal/editor_terminal.gd b/addons/godot_xterm/editor_plugins/terminal/editor_terminal.gd index 089ec75..437e2e7 100644 --- a/addons/godot_xterm/editor_plugins/terminal/editor_terminal.gd +++ b/addons/godot_xterm/editor_plugins/terminal/editor_terminal.gd @@ -22,9 +22,6 @@ func _ready(): if not editor_settings: return - add_theme_stylebox_override("normal", get_theme_stylebox("normal", "Tree")) - add_theme_stylebox_override("focus", get_theme_stylebox("focus", "Tree")) - # Get colors from TextEdit theme. Created using the default (Adaptive) theme # for reference, but will probably cause strange results if using another theme # better to use a dedicated terminal theme, rather than relying on this. diff --git a/addons/godot_xterm/native/src/terminal.cpp b/addons/godot_xterm/native/src/terminal.cpp index 3470004..91a28e1 100644 --- a/addons/godot_xterm/native/src/terminal.cpp +++ b/addons/godot_xterm/native/src/terminal.cpp @@ -209,6 +209,7 @@ void Terminal::_notification(int what) case NOTIFICATION_FOCUS_ENTER: case NOTIFICATION_FOCUS_EXIT: { + set_shader_parameters("has_focus", has_focus()); refresh(); break; } @@ -275,6 +276,9 @@ int Terminal::_draw_cb(struct tsm_screen *con, attr_flags |= AttrFlag::INVERSE; if (attr->blink) attr_flags |= AttrFlag::BLINK; + if (term->cursor_position.x == posx && term->cursor_position.y == posy) { + attr_flags |= AttrFlag::CURSOR; + } // Collect colors. Color fgcol = std::min(attr->fccode, (int8_t)TSM_COLOR_FOREGROUND) >= 0 @@ -471,8 +475,7 @@ void Terminal::update_sizes(bool force) attr_image = Image::create(std::max(cols, 1u), std::max(rows, 1u), false, Image::FORMAT_L8); attr_texture->set_image(attr_image); - update_shader_parameters(back_material); - update_shader_parameters(fore_material); + set_shader_parameters(); if (force || prev_cols != cols || prev_rows != rows) emit_signal("size_changed", Vector2i(cols, rows)); @@ -480,13 +483,18 @@ void Terminal::update_sizes(bool force) refresh(); } -void Terminal::update_shader_parameters(Ref material) +void Terminal::set_shader_parameters(const String ¶m, const Variant &value) { - material->set_shader_parameter("cols", cols); - material->set_shader_parameter("rows", rows); - material->set_shader_parameter("size", size); - material->set_shader_parameter("cell_size", cell_size); - material->set_shader_parameter("grid_size", Vector2(cols * cell_size.x, rows * cell_size.y)); + if (param.is_empty()) { + set_shader_parameters("cols", cols); + set_shader_parameters("rows", rows); + set_shader_parameters("size", size); + set_shader_parameters("cell_size", cell_size); + set_shader_parameters("grid_size", Vector2(cols * cell_size.x, rows * cell_size.y)); + } else { + back_material->set_shader_parameter(param, value); + fore_material->set_shader_parameter(param, value); + } } void Terminal::initialize_rendering() { @@ -614,6 +622,7 @@ void Terminal::draw_screen() { } rs->canvas_item_clear(char_canvas_item); + cursor_position = tsm_screen_get_flags(screen) & TSM_SCREEN_HIDE_CURSOR ? Vector2i(-1, -1) : get_cursor_pos(); framebuffer_age = tsm_screen_draw(screen, Terminal::_draw_cb, this); attr_texture->update(attr_image); back_texture->update(back_image); @@ -752,8 +761,7 @@ void Terminal::set_inverse_mode(const int mode) { inverse_mode = static_cast(mode); bool inverse_enabled = inverse_mode == InverseMode::INVERSE_MODE_INVERT; - back_material->set_shader_parameter("inverse_enabled", inverse_enabled); - fore_material->set_shader_parameter("inverse_enabled", inverse_enabled); + set_shader_parameters("inverse_enabled", inverse_enabled); refresh(); } diff --git a/addons/godot_xterm/native/src/terminal.h b/addons/godot_xterm/native/src/terminal.h index cda5df1..c488bf6 100644 --- a/addons/godot_xterm/native/src/terminal.h +++ b/addons/godot_xterm/native/src/terminal.h @@ -42,6 +42,7 @@ namespace godot { INVERSE = 1 << 0, BLINK = 1 << 1, + CURSOR = 1 << 2, }; enum InverseMode { @@ -130,6 +131,7 @@ namespace godot double font_offset; Vector2 size; Vector2 cell_size; + Vector2i cursor_position; Ref attr_image; Ref attr_texture; @@ -157,7 +159,7 @@ namespace godot void initialize_rendering(); void update_theme(); void update_sizes(bool force = false); - void update_shader_parameters(Ref material); + void set_shader_parameters(const String &name = "", const Variant &value = nullptr); bool redraw_requested = false; void _on_frame_post_draw(); void draw_screen(); diff --git a/addons/godot_xterm/shaders/common.gdshaderinc b/addons/godot_xterm/shaders/common.gdshaderinc index c0e6df5..5b76725 100644 --- a/addons/godot_xterm/shaders/common.gdshaderinc +++ b/addons/godot_xterm/shaders/common.gdshaderinc @@ -3,6 +3,7 @@ #define FLAG_INVERSE 1 << 0 #define FLAG_BLINK 1 << 1 +#define FLAG_CURSOR 1 << 2 #define transparent vec4(0) @@ -14,6 +15,7 @@ uniform vec2 grid_size; uniform sampler2D attributes; uniform bool inverse_enabled = true; +uniform bool has_focus = false; #ifdef BACKGROUND uniform vec4 background_color; @@ -48,17 +50,21 @@ void fragment() { color = texture(TEXTURE, UV); #endif - if (has_attribute(sample_uv, FLAG_INVERSE) && inverse_enabled) { + bool unfocused_cursor = !has_focus && has_attribute(sample_uv, FLAG_CURSOR); + #ifdef BACKGROUND + if (has_attribute(sample_uv, FLAG_INVERSE) && inverse_enabled) { vec4 bg_color = textureLod(screen_texture, SCREEN_UV, 0.0); vec4 target_color; target_color.a = color.a + (1.0 - color.a) * bg_color.a; target_color.rgb = 1.0 / target_color.a * (color.a * color.rgb + (1.0 - color.a) * bg_color.a * bg_color.rgb); -#else - vec4 target_color = color; -#endif color = vec4(1.0 - target_color.rgb, target_color.a); } +#else + if (has_attribute(sample_uv, FLAG_INVERSE) && inverse_enabled && !unfocused_cursor) { + color.rgb = vec3(1.0 - color.rgb); + } +#endif #ifdef FOREGROUND if (has_attribute(sample_uv, FLAG_BLINK)) { @@ -70,9 +76,18 @@ void fragment() { } #endif -#if defined(FOREGROUND) || defined(BACKGROUND) - COLOR = color; +#ifdef BACKGROUND + if (unfocused_cursor) { + // Draw hollow cursor when not focused. + bool isBorderX = (UV.x * size.x - float(cell_x) * cell_size.x) < 1.0 || (float(cell_x + 1) * cell_size.x - UV.x * size.x) < 1.0; + bool isBorderY = (UV.y * size.y - float(cell_y) * cell_size.y) < 1.0 || (float(cell_y + 1) * cell_size.y - UV.y * size.y) < 1.0; + if (!isBorderX && !isBorderY) { + color = transparent; + } + } #endif + + COLOR = color; } else { // Outside the grid. COLOR = transparent; } diff --git a/test/visual_regression/baseline/default_theme.png b/test/visual_regression/baseline/default_theme.png index b36279f001011f32aa198adec60a8107771306ff..1ddad3393f6b76e240d21ef24e0c2506c1388712 100644 GIT binary patch delta 631 zcmV--0*L+C2jB;gF#(#9GD{)s|5?t>&$!v|ryGAxGQ}57k*Bh?wRLrMmFM|*JPv># zk)A$eckX?E>Ag35_WSb~Tt*u#8 z9LM#du-1MY7j<)u@~AqfKKbF(Ys|4UO|2zglc8hO+ZnrocJO?%C3il({7S=O}I z!C-K4abc}e-EP;jZf|e@uUC8Y7pr5R#AvsZYBc?1tx58GC+(Q`ChfFiu1ULnaByI) zo12>(8ynVobad3S&z86(NqhFW6qoeu)w$%|yPmav{pxzDxw^!qJ#$T*>)Gq!;o;ui zp0%o3_4u3nCO%_9g0LV#SdbvBSE}3X?(FQm{5ma@Q2`o%zK`{KH5!fe_4S9#;c$3* zdinzER1ntd)oQg`t=7Zk+1c6d?(Pe$Q$bj-l>du$x^-Ikj0Fk8f&^hf;?ZZU!aj)+ z1VI?yc-A5`4<-ab5ZXr`f*`oL@xAi>{k>-$`OlV&eCx=&P9`Jo`})>!y43yX}?;N2hdvY2jZXk^^~@9Rmzr2#3Srte*k%W;h&H$K&zk<>kV{LZwof_4DAT zSC-}7-CYz#Rp;FC@$qCbne`)KPDD}UoC|{>aL(0gwOKz8=0UAibIt`p@Gt$b9#_Ag4m;rIRL?OV^fzrXKU|M>XPvsS#H9sD0GK78=)pFaEU{h9Y&TU)cH zIF9Q@VXgf*F6!nQtJZpce!jG{WUbfN*G>CuNfyUN(_G^$ZrW>>#c|xU)}qLog}G*NRy55u z&a$Sx4hDmZiwkR&>UO)Hb$fgJyI$?lU#yOO5~JNtX43SNwI<2$owQ@#o3zu8xhC!Q z!NGyGZf5Ca*1@O`Y8tI=qzudhE`4u`|j z)6-{Ir-HCvu2!qnYPB9N&(6+vcXyv*oeIKwq5NO0)2-9OXDmn%79Bk#TTdV728 zx$zZwbV>&Wm=^vOLX#i^Vv`R8B43GcI2_LU88B~#!(nwi9$#KwE-WlmDwSD34_>{p zEbs2_qA035=Z=q$CzHvn9|?0JiX!J+7zBZHu2!qf`gt%9YPFhkE(n5u0dBt;XuLy; Qf&c&j07*qoM6N<$g47d75&!@I diff --git a/test/visual_regression/baseline/emoji.png b/test/visual_regression/baseline/emoji.png index 4aeee270c90794360270baed490d73a895ce341b..63d38f13426a241e0a9c21f0c293c53a7c869fd4 100644 GIT binary patch literal 11663 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 delta 11549 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 diff --git a/test/visual_regression/baseline/empty.png b/test/visual_regression/baseline/empty.png index 921af00c2ab78ca36cf94db7521a548d4cb3814c..490153f2800563c67056f9dc0b319ecb6d2193fa 100644 GIT binary patch delta 263 zcmV+i0r>v+1BC>TF@L{FL_t(|obB2@iYh?>h0*@eq>T(*hP4uR;QHK<3sI2nK%}in zAHtht=F&`aPF7IC4L+!(+SBQDzu%{6n&-KJpXvL4x7+Ra`~Gk^JRXl)>(Y~0gIeqJ z`K+~e(=;tThP9cdsq+Hz>*jgh{CmD!F5lcfpU>evtjFf#{0qN&zHbgbbW0Closs@8 z5%~P`?r%H4qCFmuOK)I>JcW}V0fCbZ0Ww!aH;&`d8(5oh95?ek-)^_-zTfYqC$SQJ-T6T N002ovPDHLkV1jdWjFkWY delta 245 zcmV#Q#8>zoh28qxU&1p2pydN$Tp^}7U*Z)m7pxx=4byVkka*YDf4>({gE&!0bkWGm4Z`22JD*P8n> z7ao4MWjO2-F+oAcqlPOxJNxygPnRT;*Y4f7Z{Lm`2FF+&3yO=A*S<|xxORE@hB?KB zGSbPDR4VK0{3acdxLkMH#8?0KhGllGS516p2hLhnUS2-={{0UK{{F2MV3|F8cA<>8>&5GKYgWGNd|DYN;+i?@T-xSE8sENsJNCG6-t*eG zhiAQ-7jbOH$BH{`Q=eB(QYn-X77M$|yISY8Mc-wUx#yp^w93D>JAUf(ALTWRG}I<@ zCO%}J)>2wfAi#3)^5x)p&vPR_|J*aZFe2Xjkd>WXo_AJ$YoJJBQer5OZ)5X^5;=Gm(!e=9VtEO+d%EdR=;v&*8xq9ftrtz%a^ zmPgi92mQ8*{-j#Kq3_xDx&L)K^Pl4C;&_Jt>WLEt#5#|@=kNO-9=twUPWIf^xZ00p zS+@7$b^H0w*W1S4v534kCrW?e*ToO>@wbmJfM>cgwAUXgF)HIrF(Fe+NzaPK$ z?#+dB{pUYVcTax(CO`g5D9~!LdF?lM_!X7CIClJbvhe;Ny+m6Bc23e;`}eEwzJ4CF zYwqiUUtb?xfB5FMrMb~=k>mS!^w@BDa&)(B@E9oK4~v%R^!1X#ehYxn&fw|l=d#Wz Gp$Pz5;rtK) diff --git a/test/visual_regression/baseline/solid_swap_selection.png b/test/visual_regression/baseline/solid_swap_selection.png index 4179708f27ea63d38d83c92213e4bd2b3dce8680..963e365ab2f9bfd7438225d3e9bcaf0122d359e3 100644 GIT binary patch delta 373 zcmdnMvXNziVf|}Q7srr_Id5+pW{D(9G(4O+LszMzcfujJo5B${mV6W0+3$WaIO29h zMbiX_4I4I0XmCstx_!i8v)I0yy}xblzBA{xKYjX~$nW0k@7aDlFS}OD@X!B{lA?~# zZu9t={(SS#t{kXAs$>q&|59goWZp?n$tbD)rb|)dQvBVOOpXskT_eXgiZ{c_Q z_uIFXm=(yUJ^k|Yxq0yAyz-3a*S}xBK7ZM=!-}h9C**$EzCYsit@cRExl+7O-(8rz z{{8uH{LA^w>YwR8l$?B!QBU#6+SIPs?)~X{ch9`6`1$zX^2b-tAN+M;4f}?FN1dO9 nc{ok>XVjmZz$gdBf?|)%t;*-K%Ri}MWB>wBS3j3^P6E7HDU}eF2nyj=XU8g{GYtRgQNS% zyR+ir)u&fJ7JKggdRATK*Tk%+kvV z^`)PSxn7cG!gKiK!H;Jc?|#Yo|Kawhw`W>&XYam0HCmA~aiV}2u|#L#XYsJ~c^&D_ zcWR&gy*BL}+q=VS=GguJla_VsE#KQezv_Pdx_qT1LSZZOCfNUcB&* zY}Kc)e{cSK_{aUc&-TXulP@yrE9B`0$Jkfd6u(IGJAPXJyS?oCx^r_*d{DTyzoO#~ omnX;M07kvZ35;@3EF|`a?fi#Xd`l!#GZ}!u)78&qol`;+06|E!uK)l5 diff --git a/test/visual_regression/baseline/transparency.png b/test/visual_regression/baseline/transparency.png index b32e6ba5aa49c89b3f0311011fc5d0284fb19969..6cf47b2bb56d65ac19380b1af466303194923107 100644 GIT binary patch literal 12295 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 literal 12398 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 diff --git a/test/visual_regression/baseline/transparent_invert_selection.png b/test/visual_regression/baseline/transparent_invert_selection.png index 523e3c0e892fbe2b2114dd76bf1fc224d4fc3002..67d5e4364888697efae9023acfa4724a02c49f1c 100644 GIT binary patch literal 6920 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 F^?#^e>FfXi diff --git a/test/visual_regression/test_visual_regression.gd b/test/visual_regression/test_visual_regression.gd index ec6ddf3..3d32d66 100644 --- a/test/visual_regression/test_visual_regression.gd +++ b/test/visual_regression/test_visual_regression.gd @@ -51,6 +51,16 @@ class TestVisualRegression: await wait_frames(30) assert_match("empty") + func test_empty_focused(): + subject.grab_focus() + await wait_frames(30) + assert_match("empty_focused") + + func test_hollow_cursor(): + subject.write("W\b") + await wait_frames(30) + assert_match("hollow_cursor") + func test_default_theme(): # Print every background color. for i in range(8):