From 76a5bc8a05c33fb3f46cff1ce95aa1af694b9927 Mon Sep 17 00:00:00 2001 From: Brooks Rady Date: Sat, 28 Aug 2021 17:46:24 +0100 Subject: [PATCH] feat(ui): overhauled resize and layout systems MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(panes): move to parametric pane sizes * Fixed the simpler errors by casting to usize * The least I can do is pass the formatting check... * Move to stable toolchain * Well, it compiles? * And now it doesn't! ;) * Baseline functionality with the new Dimension type * Working POC for percent-based resizing * REVERT THIS COMMIT – DELETES TESTS * Perfected the discrete resize algorithm * Fixed fixed-size panes * Basic bidirectional resize * feat(resize): finalised parametric resize algorithm * Reduce the logging level a bit * Fixed nested layouts using percents * Bug squishing for implicit sizing * Here is a funky (read: rubbish) rounding approach * And now it's gone again! * Improve discretisation algorithm to fix rounding errors * Fix the last layout bug (maybe?) * Mixed explicit and implied percents work now * Let's pretend that didn't happen... * Make things a bit less crashy * Crash slightly more for now (to find bugs) * Manaually splitting of panes works now * Start moving to percent-based resizes * Everything but fullscreen seems to be working * Fix compilatation errors * Culled a massive amount of border code * Why not pause to please rustfmt? * Turns out I was still missing a few tests... * Bringing back even more tests! * Fix tests and pane boarders * Fix the resize system without gaps * Fix content offset * Fixed a bug with pane closing * Add a hack to fix setting of the viewport * Fix toggling between shared borders and frames * fix(tests): make e2e properly use PaneGeom * style(fmt): make rustfmt happy * Revert unintentional rounding of borders * Purge some old borderless stuff * Fix busted tab-bar shrinking * Update E2E tests * Finish implementing fullscreen! * Don't crash anymore? * Fix (almost) all tests * Fix a lack of tab-stops * All tests passing * I really can't be bothered to debug a CI issue * Tie up loose ends * Knock out some lingering FIXMEs * Continue to clean things up * Change some naming and address FIXMEs * Cull more code + FIXMEs * Refactor of the resize system + polish * Only draw frames when absolutely necessary * Fix the tab-bar crash * Fix rendering of boarders on reattach * Fix resizing at small pane sizes * Deduplicate code in the layout system * Update tab-bar WASM * Fixed the pinching of panes during resize * Unexpose needlessly public type * Add back a lost test * Re-add tab tests and get them to compile * All tabs need layouts * Start fixing tests + bug in main * Stabilize the resize algorithm rounding * All tests from main are now passing * Cull more dead code --- Cargo.lock | 68 +- Cargo.toml | 1 - Makefile.toml | 4 +- assets/plugins/status-bar.wasm | Bin 432588 -> 435108 bytes assets/plugins/strider.wasm | Bin 531239 -> 535205 bytes assets/plugins/tab-bar.wasm | Bin 421724 -> 424436 bytes default-plugins/status-bar/src/main.rs | 2 - default-plugins/tab-bar/src/line.rs | 44 +- default-plugins/tab-bar/src/main.rs | 2 - rust-toolchain | 2 +- src/tests/e2e/cases.rs | 442 ++- src/tests/e2e/remote_runner.rs | 183 +- ...lly_when_active_terminal_is_too_small.snap | 36 +- ...zellij__tests__e2e__cases__close_pane.snap | 44 +- ...e2e__cases__detach_and_attach_session.snap | 2 +- ...ts__e2e__cases__focus_pane_with_mouse.snap | 2 +- .../zellij__tests__e2e__cases__lock_mode.snap | 44 +- ...llij__tests__e2e__cases__open_new_tab.snap | 44 +- ...ellij__tests__e2e__cases__resize_pane.snap | 44 +- ...s__e2e__cases__resize_terminal_window.snap | 44 +- ...__e2e__cases__scrolling_inside_a_pane.snap | 2 +- ...s__scrolling_inside_a_pane_with_mouse.snap | 2 +- ...2e__cases__split_terminals_vertically.snap | 2 +- ...e2e__cases__start_without_pane_frames.snap | 2 +- ..._e2e__cases__starts_with_one_terminal.snap | 44 +- ...s__e2e__cases__toggle_pane_fullscreen.snap | 44 +- zellij-client/src/lib.rs | 4 +- zellij-client/src/os_input_output.rs | 13 +- zellij-client/src/unit/input_handler_tests.rs | 4 +- zellij-server/src/lib.rs | 30 +- zellij-server/src/os_input_output.rs | 4 +- zellij-server/src/panes/grid.rs | 19 +- zellij-server/src/panes/plugin_pane.rs | 321 +- zellij-server/src/panes/terminal_pane.rs | 348 +- .../src/panes/unit/terminal_pane_tests.rs | 13 +- zellij-server/src/pty.rs | 14 +- zellij-server/src/screen.rs | 94 +- zellij-server/src/tab.rs | 1512 +++------ zellij-server/src/ui/boundaries.rs | 99 +- zellij-server/src/ui/mod.rs | 1 - zellij-server/src/ui/pane_boundaries_frame.rs | 213 +- zellij-server/src/ui/pane_resizer.rs | 744 ++--- zellij-server/src/ui/pane_resizer_beta.rs | 248 -- zellij-server/src/unit/screen_tests.rs | 143 +- zellij-server/src/unit/tab_tests.rs | 2796 +++++++++-------- zellij-server/src/wasm_vm.rs | 40 - zellij-tile/src/shim.rs | 15 - zellij-utils/src/input/actions.rs | 2 +- zellij-utils/src/input/layout.rs | 251 +- zellij-utils/src/input/unit/layout_test.rs | 42 +- zellij-utils/src/ipc.rs | 13 +- zellij-utils/src/pane_size.rs | 153 +- zellij-utils/src/position.rs | 8 +- zellij-utils/src/shared.rs | 3 +- 54 files changed, 3480 insertions(+), 4771 deletions(-) delete mode 100644 zellij-server/src/ui/pane_resizer_beta.rs diff --git a/Cargo.lock b/Cargo.lock index f3533409..12545181 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,11 +4,11 @@ version = 3 [[package]] name = "addr2line" -version = "0.15.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ - "gimli 0.24.0", + "gimli 0.25.0", ] [[package]] @@ -227,16 +227,16 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" +checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" dependencies = [ "addr2line", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.25.3", + "object 0.26.0", "rustc-demangle", ] @@ -715,9 +715,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77b705829d1e87f762c2df6da140b26af5839e1033aa84aa5f56bb688e4e1bdb" +checksum = "b394ed3d285a429378d3b384b9eb1285267e7df4b166df24b7a6939a04dc392e" dependencies = [ "instant", ] @@ -736,9 +736,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" +checksum = "1adc00f486adfc9ce99f77d717836f0c5aa84965eb0b4f051f4e83f7cab53f8b" dependencies = [ "futures-channel", "futures-core", @@ -751,9 +751,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" dependencies = [ "futures-core", "futures-sink", @@ -761,15 +761,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" +checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" [[package]] name = "futures-executor" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" +checksum = "4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c" dependencies = [ "futures-core", "futures-task", @@ -778,9 +778,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" +checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" [[package]] name = "futures-lite" @@ -799,9 +799,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" +checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" dependencies = [ "autocfg", "proc-macro-hack", @@ -812,21 +812,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" +checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" [[package]] name = "futures-task" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" +checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" [[package]] name = "futures-util" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" dependencies = [ "autocfg", "futures-channel", @@ -897,9 +897,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" [[package]] name = "gloo-timers" @@ -1325,9 +1325,9 @@ dependencies = [ [[package]] name = "object" -version = "0.25.3" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +checksum = "c55827317fb4c08822499848a14237d2874d6f139828893017237e7ab93eb386" dependencies = [ "memchr", ] @@ -1500,9 +1500,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" dependencies = [ "unicode-xid", ] @@ -1966,9 +1966,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" +checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 5ccd8e48..d41cf02b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,4 +57,3 @@ assets = [ [features] disable_automatic_asset_installation = [] -parametric_resize_beta = [] diff --git a/Makefile.toml b/Makefile.toml index e0043ab7..041b82ea 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -70,7 +70,7 @@ args = ["clippy", "--", "@@split(CARGO_MAKE_TASK_ARGS,;)"] # Release building and installing Zellij [tasks.install] workspace = false -dependencies = ["build-plugins-release", "wasm-opt-plugins", "build-release", "manpage"] +dependencies = ["wasm-opt-plugins", "build-release", "manpage"] script_runner = "@duckscript" script = ''' if is_dir ${CARGO_MAKE_TASK_ARGS} @@ -89,6 +89,7 @@ env = { "CARGO_MAKE_WORKSPACE_INCLUDE_MEMBERS" = ["default-plugins/status-bar", run_task = { name = "build", fork = true } [tasks.wasm-opt-plugins] +dependencies = ["build-plugins-release"] script_runner = "@duckscript" script = ''' plugins = glob_array ${CARGO_TARGET_DIR}/wasm32-wasi/release/*.wasm @@ -134,6 +135,7 @@ args = ["build", "--verbose", "--target", "x86_64-unknown-linux-musl"] # Run e2e tests - we mark the e2e tests as "ignored" so they will not be run with the normal ones [tasks.e2e-test] workspace = false +dependencies = ["build-e2e"] command = "cargo" args = ["test", "--", "--ignored", "--nocapture", "--test-threads", "1", "@@split(CARGO_MAKE_TASK_ARGS,;)"] diff --git a/assets/plugins/status-bar.wasm b/assets/plugins/status-bar.wasm index 677e8727d21eb5b03d2d7af73042b24a8c653d83..0523679c33d2d4d0c05c7bb3928966514687479a 100644 GIT binary patch literal 435108 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 literal 432588 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%0A9gj*QSh0_3J>EQ-!(~~T)%l|{+#-;wvQx?2 zS%+P};dx9NMxtThy}QMskcx6X&)N4ZzGI&1e#wg}eaN$C^P5I}g!7BsaV~!)bGJPKIhu7-Lr}699+kISy(3^5Zf?Kuf1DMhVQ%x zW)xCxveaV(O$8ClH_aNqNz~-`?g7scTSY1_zKD_(r6F}m?)I!NInZyF5aVNS^ZZo2 z3Qqb$GnmFneZ!^qg~&jSG8;2QFe|SMcC|=f`Dmg;sas4hT3+_NI z6(v4*qh>W7$Dv~t`rU9)&r#=Gjs~4`E?W@6{UXxzpyTgn>A_ZQZAB<`%8Z1htS`neKlW! zrD>p$9sGkCNj6I~B5ev)+D9`XNv%+JjpzuMOX1_yZplB7M4p;Ul!VC&LvcTDK6feW zC1hm|TSeUoCfklu-}CEGpjV`FjoDbu6wi{=3E0e^k905>?YI}t2P`!SqM4&?scf%q z>szoR&!gY(`=HWvmXK;BzFg-^d<^@X>Ca()2-XxNqX6#?;GPK^yEEVDikD|T#!1KV zackndC4K(R=klvgU2?l{8oS5pZZMdHW@ib~ygzeIZI;1?*?mkH(dG&BJ)i`b~NJt@wt^14m#HaQF}|%8kd)^mFz|tqlk-r#JV>VNA&Pp zf#rA1J}&n4tCBom9s%8X#$)B8c@x(_vl`3?xUWh1%%yy5xOQfBAPFa8g6CeZj(J6q zIIvnlNcX%jC81+}1ODwWQOw;?cvR<>;9}nfg6JcT9q{*-dTj=-vb$Vm`HDpjJP|1J zE+K%mb*s&9Lj-?q1^>6k$yd31Hs5I*{V1^ui&ObJrZIEOG4s25b=n(`lt<(;N&Tf;}_grXM*^Kglukw}sQh@ahScIA`y>n^= zJ!ocC3C(1aUOVQ$$eZtiGOVX?)dEM}OQcD{#OY|a#-4O;BDb9?f1UV`_T)X?F)zH; z^VuCK2b>Y^3Vl6qb2GiR!x}l!LtO+6;i9`5L2gddeovWoX}$oMZkow?py^ z_0HUnDJaXISIKr2%ouf80$);_=&pKPDWXg>b~HLm_QrtYBeCRIL4I$Mx@e_Hl5F6O zJ6}ZbMjY^D@x1kxtU!;ZCCDGR=E$xaZ9Hvjv_<94Q#nyhC)f=d24O37_bqRiyTm|GW%erJ}@dA#}ejm!_yKSe*&B}@-)tdL9 z=Gz2b#inh;&_F9Pe*l#n5Y0+*uYVa5*ch095`~$1^vx5aRk7G++a-u`7xU(gqh6wj zwPuBGnNEz4P1F`XJr*oRkpmejkWY)*dyQmGU6`yi%)2GpJf9fIr#%W%;c>y=%7#jQa zL-PT6NB~&*S+RB2S0LQ ze=T^|`(QJIUUC3Vl;mxVR;Js9B2LNg~|r3Wp3$+xq& zn)ae^i1k?S9Ji7u`$@vcI_8O}+3JZaVy;djK+r8OYZWS?KuKsmy5`-o=26gE?6=hE zuLxSD;{u6}!nGPBa>VHV@lO1g zu2?pPRCMSYxqFrO4od7`my z^EC83pWI#~`y#xIj`<{f&!to9CS;{8HV;u?6g8bi_qd`Z{njnnTje%T9DLRswVt$& z`HTF$=1Q%>jFV`JsAxW~K&42>w44aDLM8ux{~lT=;XSDpy$P0}51AoMG*hO6k}w=i-_&^F)RWfq4uMvR=%RNLwoPX<15JoZ|}p z_Xp_QDtT0&2od)J0mKoTgHI4Rt6P8Bm@kk7al?ZhZ;~3+zu;r*ijzo3$9((*>lzJc z;<{=68coX;?!mlL3Wp`Q3rdv7X_( zb(W}xjpPjA5CAsNrsi!Np7}ud_3hnAx6)0ia5C7>bVt2aW;~nji<67CBzPPVQ^uE7kZL#*RN%)e;k_9wOG?I>K-{eSD zX1RBZ(>1TYQO1$7%G+-@m&!q_A$td>D=msS-4W^dE9QnVhd4Rit*oz|DVNL#e^}@= z!jSnhC>dp}KiQn3M|v|-OZ5RS34f3R94m?bhIidMp?cs4?b#^x`0Bf-m!Cz#rabs8 z9H2}wl^bIIn#GHPqtKooJIHGBaG9SbVYKr*ln|QcIiJjRj%aeEO>%Y+ka*A(#y|1e7_?Pgvw5#0iO?| z=~Lyqz4Jpu{mUP)+!HBGuC;j;n=OnAz`?EaK;58Ceg*cWg^<=Vj#o+xw*;_ox>rYehIXsioY){;eg%-gv$zRskxB*R+% z8*>t@()(nYz}~G!&B~W|A`bK|>ePiA=fCX5J2;pPq}u6n(z9;v@jUV#>=2TX37SVf z$X`nlO^OjCvoo&{xjs1#w-jU{B)mE(J`K%Idz)KacF`_mH*d2F02#!#6Z)^){V0%F zFvaZwv4y#%O5Lt=v|^>fYq;0e%%)@?C!-L&RL=iWilP|AR5)7U2lMy(M_5#V`AxwN zd-E<0Mf?SXg>Ke_rAq|)z%yi5#v?%yFqb>(O7h}%O9InY3$F8_p5IjSHMR+N1|)1A z!EG6#mI%1<$b9O6&^Bq48cezcIzR}SPq7-OP>F(1@CpCI1DVL`+6ECt#45*R-ugJN z$ZT#=^s5E2-^=8X%F}b^4M;%MYt%;2yXqFG{u^gGL>cREV|^UH*2DoWMb}#)0y$RSx&;vZXin6y`H>Qc@@7hUVYwR+Ga1-Z8($Ts%^2 z7c?F8`s3_^6r`9}`unvoD=E5xDGRQ|Y4tI7xZIZ^Br)bxdYCt)X-&k&ZzIty^22u| zs$YWq@HRM)+ahy0>`6^h^8;|M;~SIdmboI~VcPhbg__60J2Q2L=6+CtP~OzML(Y=x z`wx(S2W|KS^V%qg)4k7N7g#)K)vE5v_lA>mUF?M3rg7mXWmkA#*Vc9?v$a4q)CfkMRaC^20d=pLZ(! z=AN>bihaZK|NVE#)xlq8p3Z&h0h~naFj1$KuC2nmk8Rt(I>aQIS`>LN&Zg!@=HeOx z{7*RJ_uC51!-OTzn*aDv&mM*HEfuRG=!>SM;(mCw1^n-rw^;ST-Yw^XJ;dMa)wMEU zO)$;v1@7FFwG@~rz7gOaJud;J5}&?RWB5}z4?yuhS9I`v_F?GJ+aO?nS)EK|qJ%d8 zmP@4yG!wEn*ZkAHg#8T7Pacwwzz0>CwdnQjm_MB(xJ0Xy6?x7hMxyr}3z_JL6w8RZ z5U>QE!y-^Tv1>QY+uTlEA)63y1o){fq=Qv5z-(J1r52gpgHlj9pm;*=fp zPPlIpQYx8`Lfll+-D0VT)C#>V?|O`6%(Y~?lN>zjs8naMQQ{VKhD3h1f9h9CE>b2C68qyk?Ubrixv7r;xIrU3<%oPjWR~~#k>*oM7{F{vFtI``|-uqZN zAJ0I{-MDpm=Er=&*)gY~L??dD^YO$WBV9dSVBMs*SO#LHazu{Tiy9#cHCoCYj!I-3 zOao$bCR}$axl88F8{&l1XCL!WRUik}qU z{^1W+hPYSdNXNV$!&uc4^KGydHT)gz<{VmV6?e=@j%v#5yFCbQq}e6V=Ft2R;z-m& zUEEi(Bdjcu9x0!EAZG!f9_OJMTyM0GCd6vLbUA<4+8EiMmwNu-<~3tLq%;ZzFt#nc zVG+m4*m(@wE1dWgoC|l8`Bg`?j?b&V#2+88`@@8n2t9r;7Y6gw$x8Eaf9j`TvfpG4 z4brmYbeHIZAU1GRP6SNNGCF~?>ni3j=iyZ2;A@n$3{{c;M96oecbp=tU*PJ|q_KC- ze2SaGW{=m+%T-#PDI}`shC~dzP`f5XTdfo4*d+`Nfn<;=9? z_TxkkxkZ7VQt;FqI>`+X zbj7A`aa?!dV$%|vB1r(<(`!JGPF6saw-}iBWMXc@)-;jXeuhEZ+^ZqJ0qdLUr@*Wsn*p$26_Q^4Ou3!UQJ>potjLKZ_Se`f3Uem+Ql@h_UatVCV2c1!Zbk7e4?#n{Jc#P_)bC2fe)zl$gA z37jKNcXQj~yeA0MjpMipkf-xF&_A=Q-e{6b`GG?jmZOXMGp=)_2rZ&yJO_et)otI) zhQpBsE{b^V3)nAK?z1)D0~c_bDIpbgMEpJEH9a|5?@mWOQu)o_@_iRc(j<~1)!|n- zDf^rpL}i@lBU|fS&vL{3BkK_D*!(G)xqT~lb!%YX`yajH?i^V(o55+MNEzX7Ti4aY zpwNtmFY(o0KoQ+U@;`~2>C{7!H0X9KLV-cM*5yP(!`#d7wk$({=DdAVbj^YZ z{CQX>K6Q)snk3Dbt2k9Rh|K6~(6SPy`6ODUs!&J84P+h)rHRHS7sVWdG+>mTnf@Eb z7M<|(qCaIDRJgR*UScdhJ(a1(WDX^ zP%WzZnZB}q?3@TQ28T0fm+A65b4L6+e}m~ z%ip5d+P`Iu(-SM^<+6R+;__$ti%sHx$pa$tF}Je-mTG?2e{SQf5_6@4nEAW(T$tUX zU|GR^YSvjENw#)*6*dM!oD(~i^_=CT3w&<(;3yM$Y6Zu99y^yCe38pNo{Z=j_-L-O z2+hZGb<=6|ntW^x4I6F4Re#Ftbt;&@`g6Yz4cG7Q*dW&USE|`7K_dvkJQ|VTKt*%G}M4K5SUd4e~y&mAVq{QloN4^}Va? zN&Fjcc&OhsA?jFK<%^w&6M}ks1Q*sFHX`xUgV{PCFHaPEy{7nyf;#>gzdbHtIu=hbK7XhNs^1z zkRN0<7-wi&XU03ZQoj1qzFk>soIoZHVsvKFnNapbt&#+@o7N85s%~^+=62Ago?p$6 z=-XO#FH6&rF6Gmal+0t4xJ0|Iq`z5~o2d(_~DWC1rk_ zjc52|@9$)+L?N1*e?Y~M0Qf(miV+q;-f~>8wf44o7i?0z2KIXWG%F_nH!^>W6p58a zGl0FU2B3GA?ETaG;uyk=n^S=wEyLk*}Bitnsl>dRhAT1=J_`a!oY2TJ( zfj}2FSa3TFU>6GXr2psm;+NTph!Gm}D@QDIW#tPV!6BnsiZb#!7@1Zom|MIm;CATz zg>u9^Kj_Iiof7*)XcFp&TwmFmD)h8iORq(ax@acx%QuJl6z2w{{D?30U)WJ_rf9dK zMGXDG3-3(FylEk6yz{{SJqQ-U6KuNICn*mo&`xc9+Ulr}Tu5(&7%siLHHlj0(~c|H zWCv5{S08OK-$*OcId=||LTKv?u;bWx5}W(GVK6rI1g9`p@xM#V4ASHa9== zfBky{<}%zG(3Jd=d#zBXvqh}wZg)S7(P8fAa9&2kEBogzxd-aq>hXJ)%S)xD@;#)` qZ}9l?QoXuVy0Q;LT`E_0?H)CIjpks`F7K+8D&;FnjVsHQC;b0$)yo3_ diff --git a/assets/plugins/strider.wasm b/assets/plugins/strider.wasm index b4fe4a7cac6f75ca65fa784280c22338a413effb..1f01a123243e8c4493069916414adead9bfa3a50 100644 GIT binary patch literal 535205 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

;HGtV3E-Wv;966)Kb{CEA*+W2H6(Hq`H>5V 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

>781!jZuGq4S8XiZSL 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 z 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%0DD_EAmw=tXjpr&GHrwFH%}zbI2eS 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 literal 531239 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®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%0At=L zHag(~)h-eSIV@uRATuHyFc|RIoS>+^N*c#8Q3M%*8`>_1oDme63(y)>IKutreV!36 zx$=q#-5{f(UG{uA#q;?q%rz5og_$fTbtpp&v2duLK0uRY3Kw};m~Se|GGuOJi=Rnq zc|kRctP|}?lHOn*;n@5CVBfr&Wg2l*kX%-S|V>QVcwN2cNjJX=R- zq~XHmfCG3hlJ-t(64e5TE&e@E6#9oblD)<{Nk)Ylp$_IpbqH~(odvO1`0A(FMx|hM zdJ}@k)i{pjU+xXYC{dj%m0R^8MjB)JA0zRmDNzV-nriL=V`Q2lDX2_Syg;VpTrtEK z)~$-=Vs4n4Ceo@RCZt)$S|%}pn3}If-d00i3FRntnU_WyXrr!y0%aqQSOP$6)K5Fj zm^jU{r}|~NVriNyWU3NPSY<0pPG_yLfXx0-Lhi%R#j2P6HH{1$v8I04g+Mxare{#hI3-~JHUQ%Ni*dM5@* z>7B`5omtls9f*fdve$TLvQzXzR@ok?5PbJ7=q>k^Z@B|fzFq)|Dp+;(#b)uz-g{7~F zY1+n2C}6FghZB5^N)8{R&*eOlGVP(Nt->(4xdo ze8Zc)Od&S27ZupEl(|oo(L_}wB!YmPrMtP(R(@04)ZZ@T#xQ}m;6iFKdX@3UFd^l1 zAEAmNd$7ui0tTzBE=3WC1uYsktE{qXzVcStPytq1kuD=^wye#3#RE)^W-^Rmg9(tA zz3a?Pjyjds8?8o_!UKUwli9!<0~Zj1@$>?JPP$u32LX@_6y>*OL_%~J)BW%M1GuEw z&Rpc~D{r9YLO4}nwoLIG%Y4;;rag+y@{x5TYEmgpAv2I18OAk5bVZecQt<0~RZ$

s(dPwTQ6TH$*ZjS0g3X%MVs%fPpVYGNouVdc{bs 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

c?@Og^I8yP{vFT`n;TB*F?_#0QDP; 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%0AR^!?q3on${(UQk#w}+-z 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 vgS0Jq<(R_2=Tz(qHRZJjOl8{X&los-`{`j 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

XR=mCCN_azl2~pJUmWZ>dMv3M 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%0DG*;mI7?W|3%aXd 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�M(m35cYpZ0Yt5%e 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

_osRx3b**PZ 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 ColoredElements { impl ZellijPlugin for State { fn load(&mut self) { set_selectable(false); - set_invisible_borders(true); - set_fixed_height(2); subscribe(&[ EventType::ModeUpdate, EventType::CopyToClipboard, diff --git a/default-plugins/tab-bar/src/line.rs b/default-plugins/tab-bar/src/line.rs index fc18abfd..b92f7573 100644 --- a/default-plugins/tab-bar/src/line.rs +++ b/default-plugins/tab-bar/src/line.rs @@ -5,9 +5,7 @@ use zellij_tile::prelude::*; use zellij_tile_utils::style; fn get_current_title_len(current_title: &[LinePart]) -> usize { - current_title - .iter() - .fold(0, |acc, title_part| acc + title_part.len) + current_title.iter().map(|p| p.len).sum() } fn populate_tabs_in_tab_line( @@ -144,20 +142,29 @@ fn add_next_tabs_msg( title_bar.push(right_more_message); } -fn tab_line_prefix(session_name: Option<&str>, palette: Palette) -> LinePart { - let mut prefix_text = " Zellij ".to_string(); - if let Some(name) = session_name { - prefix_text.push_str(&format!("({}) ", name)); - } +fn tab_line_prefix(session_name: Option<&str>, palette: Palette, cols: usize) -> Vec { + let prefix_text = " Zellij ".to_string(); let prefix_text_len = prefix_text.chars().count(); let prefix_styled_text = style!(palette.white, palette.cyan) .bold() .paint(prefix_text); - LinePart { + let mut parts = vec![LinePart { part: format!("{}", prefix_styled_text), len: prefix_text_len, + }]; + if let Some(name) = session_name { + let name_part = format!("({}) ", name); + let name_part_len = name_part.chars().count(); + let name_part_styled_text = style!(palette.white, palette.cyan).bold().paint(name_part); + if cols.saturating_sub(prefix_text_len) >= name_part_len { + parts.push(LinePart { + part: format!("{}", name_part_styled_text), + len: name_part_len, + }) + } } + parts } pub fn tab_separator(capabilities: PluginCapabilities) -> &'static str { @@ -176,7 +183,7 @@ pub fn tab_line( palette: Palette, capabilities: PluginCapabilities, ) -> Vec { - let mut tabs_to_render: Vec = vec![]; + let mut tabs_to_render = Vec::new(); let mut tabs_after_active = all_tabs.split_off(active_tab_index); let mut tabs_before_active = all_tabs; let active_tab = if !tabs_after_active.is_empty() { @@ -184,14 +191,17 @@ pub fn tab_line( } else { tabs_before_active.pop().unwrap() }; - tabs_to_render.push(active_tab); + let mut prefix = tab_line_prefix(session_name, palette, cols); + let prefix_len = get_current_title_len(&prefix); + if prefix_len + active_tab.len <= cols { + tabs_to_render.push(active_tab); + } - let prefix = tab_line_prefix(session_name, palette); populate_tabs_in_tab_line( &mut tabs_before_active, &mut tabs_after_active, &mut tabs_to_render, - cols.saturating_sub(prefix.len), + cols.saturating_sub(prefix_len), ); let mut tab_line: Vec = vec![]; @@ -200,7 +210,7 @@ pub fn tab_line( &mut tabs_before_active, &mut tabs_to_render, &mut tab_line, - cols.saturating_sub(prefix.len), + cols.saturating_sub(prefix_len), palette, tab_separator(capabilities), ); @@ -210,11 +220,11 @@ pub fn tab_line( add_next_tabs_msg( &mut tabs_after_active, &mut tab_line, - cols.saturating_sub(prefix.len), + cols.saturating_sub(prefix_len), palette, tab_separator(capabilities), ); } - tab_line.insert(0, prefix); - tab_line + prefix.append(&mut tab_line); + prefix } diff --git a/default-plugins/tab-bar/src/main.rs b/default-plugins/tab-bar/src/main.rs index a185ccc3..3256c13c 100644 --- a/default-plugins/tab-bar/src/main.rs +++ b/default-plugins/tab-bar/src/main.rs @@ -25,8 +25,6 @@ register_plugin!(State); impl ZellijPlugin for State { fn load(&mut self) { set_selectable(false); - set_invisible_borders(true); - set_fixed_height(1); subscribe(&[EventType::TabUpdate, EventType::ModeUpdate]); } diff --git a/rust-toolchain b/rust-toolchain index 078d01ce..2e6fad37 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "beta" +channel = "stable" components = ["rustfmt", "clippy", "rust-analysis"] targets = ["wasm32-wasi"] diff --git a/src/tests/e2e/cases.rs b/src/tests/e2e/cases.rs index d28ae2f7..2e09b53f 100644 --- a/src/tests/e2e/cases.rs +++ b/src/tests/e2e/cases.rs @@ -1,7 +1,7 @@ #![allow(unused)] use ::insta::assert_snapshot; -use zellij_utils::{pane_size::PositionAndSize, position::Position}; +use zellij_utils::{pane_size::Size, position::Position}; use rand::Rng; @@ -71,19 +71,16 @@ pub fn normal_mouse_report(position: Position, button: u8) -> Vec { #[test] #[ignore] pub fn starts_with_one_terminal() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("starts_with_one_terminal", fake_win_size, None) + let last_snapshot = RemoteRunner::new("starts_with_one_terminal", fake_win_size) .add_step(Step { name: "Wait for app to load", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { step_is_complete = true; } @@ -97,20 +94,17 @@ pub fn starts_with_one_terminal() { #[test] #[ignore] pub fn split_terminals_vertically() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("split_terminals_vertically", fake_win_size, None) + let last_snapshot = RemoteRunner::new("split_terminals_vertically", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -139,23 +133,16 @@ pub fn split_terminals_vertically() { #[test] #[ignore] pub fn cannot_split_terminals_vertically_when_active_terminal_is_too_small() { - let fake_win_size = PositionAndSize { - cols: 8, - rows: 20, - x: 0, - y: 0, - ..Default::default() - }; + let fake_win_size = Size { cols: 8, rows: 20 }; let last_snapshot = RemoteRunner::new( "cannot_split_terminals_vertically_when_active_terminal_is_too_small", fake_win_size, - None, ) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) { + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); // back to normal mode after split @@ -178,7 +165,7 @@ pub fn cannot_split_terminals_vertically_when_active_terminal_is_too_small() { name: "Wait for text to appear", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(5, 2) && remote_terminal.snapshot_contains("Hi!") + if remote_terminal.cursor_position_is(6, 2) && remote_terminal.snapshot_contains("Hi!") { step_is_complete = true; } @@ -192,19 +179,16 @@ pub fn cannot_split_terminals_vertically_when_active_terminal_is_too_small() { #[test] #[ignore] pub fn scrolling_inside_a_pane() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("scrolling_inside_a_pane", fake_win_size, None) + let last_snapshot = RemoteRunner::new("scrolling_inside_a_pane", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -279,19 +263,16 @@ pub fn scrolling_inside_a_pane() { #[test] #[ignore] pub fn toggle_pane_fullscreen() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("toggle_pane_fullscreen", fake_win_size, None) + let last_snapshot = RemoteRunner::new("toggle_pane_fullscreen", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -321,7 +302,7 @@ pub fn toggle_pane_fullscreen() { name: "Wait for pane to become fullscreen", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(2, 2) { + if remote_terminal.cursor_position_is(3, 2) { // cursor is in full screen pane now step_is_complete = true; } @@ -335,19 +316,16 @@ pub fn toggle_pane_fullscreen() { #[test] #[ignore] pub fn open_new_tab() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("open_new_tab", fake_win_size, None) + let last_snapshot = RemoteRunner::new("open_new_tab", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -377,7 +355,7 @@ pub fn open_new_tab() { name: "Wait for new tab to open", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(2, 2) + if remote_terminal.cursor_position_is(3, 2) && remote_terminal.tip_appears() && remote_terminal.snapshot_contains("Tab #2") && remote_terminal.status_bar_appears() @@ -395,19 +373,16 @@ pub fn open_new_tab() { #[test] #[ignore] pub fn close_pane() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("close_pane", fake_win_size, None) + let last_snapshot = RemoteRunner::new("close_pane", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -437,7 +412,7 @@ pub fn close_pane() { name: "Wait for pane to close", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(2, 2) && remote_terminal.tip_appears() { + if remote_terminal.cursor_position_is(3, 2) && remote_terminal.tip_appears() { // cursor is in the original pane step_is_complete = true; } @@ -451,19 +426,16 @@ pub fn close_pane() { #[test] #[ignore] pub fn exit_zellij() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("exit_zellij", fake_win_size, None) + let last_snapshot = RemoteRunner::new("exit_zellij", fake_win_size) .add_step(Step { name: "Wait for app to load", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&QUIT); step_is_complete = true; @@ -490,19 +462,16 @@ pub fn exit_zellij() { #[test] #[ignore] pub fn closing_last_pane_exits_zellij() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("closing_last_pane_exits_zellij", fake_win_size, None) + let last_snapshot = RemoteRunner::new("closing_last_pane_exits_zellij", fake_win_size) .add_step(Step { name: "Close pane", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&CLOSE_PANE_IN_PANE_MODE); @@ -528,19 +497,16 @@ pub fn closing_last_pane_exits_zellij() { #[test] #[ignore] pub fn resize_pane() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("resize_pane", fake_win_size, None) + let last_snapshot = RemoteRunner::new("resize_pane", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -570,7 +536,7 @@ pub fn resize_pane() { name: "Wait for pane to be resized", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(53, 2) && remote_terminal.tip_appears() { + if remote_terminal.cursor_position_is(57, 2) && remote_terminal.tip_appears() { // pane has been resized step_is_complete = true; } @@ -584,19 +550,16 @@ pub fn resize_pane() { #[test] #[ignore] pub fn lock_mode() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("lock_mode", fake_win_size, None) + let last_snapshot = RemoteRunner::new("lock_mode", fake_win_size) .add_step(Step { name: "Enter lock mode", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&LOCK_MODE); step_is_complete = true; @@ -621,7 +584,7 @@ pub fn lock_mode() { name: "Wait for terminal to render sent keys", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(6, 2) { + if remote_terminal.cursor_position_is(7, 2) { // text has been entered into the only terminal pane step_is_complete = true; } @@ -636,19 +599,16 @@ pub fn lock_mode() { #[ignore] pub fn resize_terminal_window() { // this checks the resizing of the whole terminal window (reaction to SIGWINCH) and not just one pane - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("resize_terminal_window", fake_win_size, None) + let last_snapshot = RemoteRunner::new("resize_terminal_window", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -675,7 +635,7 @@ pub fn resize_terminal_window() { name: "wait for terminal to be resized and app to be re-rendered", instruction: |remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.cursor_position_is(43, 2) && remote_terminal.tip_appears() { + if remote_terminal.cursor_position_is(53, 2) && remote_terminal.tip_appears() { // size has been changed step_is_complete = true; } @@ -689,98 +649,87 @@ pub fn resize_terminal_window() { #[test] #[ignore] pub fn detach_and_attach_session() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let session_id = rand::thread_rng().gen_range(0..10000); - let session_name = format!("session_{}", session_id); - let last_snapshot = RemoteRunner::new( - "detach_and_attach_session", - fake_win_size, - Some(session_name), - ) - .add_step(Step { - name: "Split pane to the right", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) { - remote_terminal.send_key(&PANE_MODE); - remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); - // back to normal mode after split - remote_terminal.send_key(&ENTER); - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Send some text to the active pane", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.cursor_position_is(63, 2) && remote_terminal.tip_appears() { - // new pane has been opened and focused - remote_terminal.send_key(&"I am some text".as_bytes()); - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Detach session", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.cursor_position_is(77, 2) { - remote_terminal.send_key(&SESSION_MODE); - remote_terminal.send_key(&DETACH_IN_SESSION_MODE); - // text has been entered - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Reattach session", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if !remote_terminal.status_bar_appears() { - // we don't see the toolbar, so we can assume we've already detached - remote_terminal.attach_to_original_session(); - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Wait for session to be attached", - instruction: |remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.cursor_position_is(77, 2) { - // we're back inside the session - step_is_complete = true; - } - step_is_complete - }, - }) - .run_all_steps(); + let last_snapshot = RemoteRunner::new("detach_and_attach_session", fake_win_size) + .add_step(Step { + name: "Split pane to the right", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) + { + remote_terminal.send_key(&PANE_MODE); + remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); + // back to normal mode after split + remote_terminal.send_key(&ENTER); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Send some text to the active pane", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(63, 2) && remote_terminal.tip_appears() { + // new pane has been opened and focused + remote_terminal.send_key(&"I am some text".as_bytes()); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Detach session", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(77, 2) { + remote_terminal.send_key(&SESSION_MODE); + remote_terminal.send_key(&DETACH_IN_SESSION_MODE); + // text has been entered + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Reattach session", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if !remote_terminal.status_bar_appears() { + // we don't see the toolbar, so we can assume we've already detached + remote_terminal.attach_to_original_session(); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Wait for session to be attached", + instruction: |remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(77, 2) { + // we're back inside the session + step_is_complete = true; + } + step_is_complete + }, + }) + .run_all_steps(); assert_snapshot!(last_snapshot); } #[test] #[ignore] pub fn accepts_basic_layout() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; let layout_file_name = "three-panes-with-nesting.yaml"; - let last_snapshot = RemoteRunner::new_with_layout("accepts_basic_layout", fake_win_size, layout_file_name, None) + let last_snapshot = RemoteRunner::new_with_layout("accepts_basic_layout", fake_win_size, layout_file_name) .add_step(Step { name: "Wait for app to load", instruction: |remote_terminal: RemoteTerminal| -> bool { @@ -800,20 +749,17 @@ pub fn accepts_basic_layout() { #[test] #[ignore] fn focus_pane_with_mouse() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new("split_terminals_vertically", fake_win_size, None) + let last_snapshot = RemoteRunner::new("split_terminals_vertically", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { let mut step_is_complete = false; - if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(2, 2) + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) { remote_terminal.send_key(&PANE_MODE); remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); @@ -853,103 +799,95 @@ fn focus_pane_with_mouse() { #[test] #[ignore] pub fn scrolling_inside_a_pane_with_mouse() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = - RemoteRunner::new("scrolling_inside_a_pane_with_mouse", fake_win_size, None) - .add_step(Step { - name: "Split pane to the right", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.status_bar_appears() - && remote_terminal.cursor_position_is(2, 2) - { - remote_terminal.send_key(&PANE_MODE); - remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); - // back to normal mode after split - remote_terminal.send_key(&ENTER); - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Fill terminal with text", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.cursor_position_is(63, 2) && remote_terminal.tip_appears() { - // cursor is in the newly opened second pane - remote_terminal.send_key(&format!("{:0<56}", "line1 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line2 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line3 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line4 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line5 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line6 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line7 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line8 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line9 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line10 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line11 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line12 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line13 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line14 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line15 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line16 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line17 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line18 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<58}", "line19 ").as_bytes()); - remote_terminal.send_key(&format!("{:0<57}", "line20 ").as_bytes()); - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Scroll up inside pane", - instruction: |mut remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.cursor_position_is(118, 20) { - // all lines have been written to the pane - remote_terminal.send_key(&normal_mouse_report(Position::new(2, 64), 64)); - step_is_complete = true; - } - step_is_complete - }, - }) - .add_step(Step { - name: "Wait for scroll to finish", - instruction: |remote_terminal: RemoteTerminal| -> bool { - let mut step_is_complete = false; - if remote_terminal.cursor_position_is(118, 20) - && remote_terminal.snapshot_contains("line1 ") - { - // scrolled up one line - step_is_complete = true; - } - step_is_complete - }, - }) - .run_all_steps(); + let last_snapshot = RemoteRunner::new("scrolling_inside_a_pane_with_mouse", fake_win_size) + .add_step(Step { + name: "Split pane to the right", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.status_bar_appears() && remote_terminal.cursor_position_is(3, 2) + { + remote_terminal.send_key(&PANE_MODE); + remote_terminal.send_key(&SPLIT_RIGHT_IN_PANE_MODE); + // back to normal mode after split + remote_terminal.send_key(&ENTER); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Fill terminal with text", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(63, 2) && remote_terminal.tip_appears() { + // cursor is in the newly opened second pane + remote_terminal.send_key(&format!("{:0<56}", "line1 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line2 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line3 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line4 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line5 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line6 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line7 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line8 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line9 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line10 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line11 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line12 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line13 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line14 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line15 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line16 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line17 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line18 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<58}", "line19 ").as_bytes()); + remote_terminal.send_key(&format!("{:0<57}", "line20 ").as_bytes()); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Scroll up inside pane", + instruction: |mut remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(118, 20) { + // all lines have been written to the pane + remote_terminal.send_key(&normal_mouse_report(Position::new(2, 64), 64)); + step_is_complete = true; + } + step_is_complete + }, + }) + .add_step(Step { + name: "Wait for scroll to finish", + instruction: |remote_terminal: RemoteTerminal| -> bool { + let mut step_is_complete = false; + if remote_terminal.cursor_position_is(118, 20) + && remote_terminal.snapshot_contains("line1 ") + { + // scrolled up one line + step_is_complete = true; + } + step_is_complete + }, + }) + .run_all_steps(); assert_snapshot!(last_snapshot); } #[test] #[ignore] pub fn start_without_pane_frames() { - let fake_win_size = PositionAndSize { + let fake_win_size = Size { cols: 120, rows: 24, - x: 0, - y: 0, - ..Default::default() }; - let last_snapshot = RemoteRunner::new_without_frames("no_pane_frames", fake_win_size, None) + let last_snapshot = RemoteRunner::new_without_frames("no_pane_frames", fake_win_size) .add_step(Step { name: "Split pane to the right", instruction: |mut remote_terminal: RemoteTerminal| -> bool { diff --git a/src/tests/e2e/remote_runner.rs b/src/tests/e2e/remote_runner.rs index 819bee86..de9c35ed 100644 --- a/src/tests/e2e/remote_runner.rs +++ b/src/tests/e2e/remote_runner.rs @@ -1,7 +1,7 @@ use zellij_tile::data::Palette; -use zellij_utils::pane_size::PositionAndSize; use zellij_server::panes::TerminalPane; +use zellij_utils::pane_size::{Dimension, PaneGeom, Size}; use zellij_utils::{vte, zellij_tile}; use ssh2::Session; @@ -15,6 +15,7 @@ const ZELLIJ_LAYOUT_PATH: &str = "/usr/src/zellij/fixtures/layouts"; const CONNECTION_STRING: &str = "127.0.0.1:2222"; const CONNECTION_USERNAME: &str = "test"; const CONNECTION_PASSWORD: &str = "test"; +const SESSION_NAME: &str = "e2e-test"; fn ssh_connect() -> ssh2::Session { let tcp = TcpStream::connect(CONNECTION_STRING).unwrap(); @@ -27,7 +28,7 @@ fn ssh_connect() -> ssh2::Session { sess } -fn setup_remote_environment(channel: &mut ssh2::Channel, win_size: PositionAndSize) { +fn setup_remote_environment(channel: &mut ssh2::Channel, win_size: Size) { let (columns, rows) = (win_size.cols as u32, win_size.rows as u32); channel .request_pty("xterm", None, Some((columns, rows, 0, 0))) @@ -39,60 +40,51 @@ fn setup_remote_environment(channel: &mut ssh2::Channel, win_size: PositionAndSi channel.flush().unwrap(); } -fn start_zellij(channel: &mut ssh2::Channel, session_name: Option<&String>) { - match session_name.as_ref() { - Some(name) => { - channel - .write_all( - format!("{} --session {}\n", ZELLIJ_EXECUTABLE_LOCATION, name).as_bytes(), - ) - .unwrap(); - } - None => { - channel - .write_all(format!("{}\n", ZELLIJ_EXECUTABLE_LOCATION).as_bytes()) - .unwrap(); - } - }; - channel.flush().unwrap(); +fn stop_zellij(channel: &mut ssh2::Channel) { + channel + .write_all("killall -KILL zellij\n".as_bytes()) + .unwrap(); } -fn start_zellij_without_frames(channel: &mut ssh2::Channel) { +fn start_zellij(channel: &mut ssh2::Channel) { + stop_zellij(channel); channel - .write_all(format!("{} options --no-pane-frames\n", ZELLIJ_EXECUTABLE_LOCATION).as_bytes()) + .write_all( + format!( + "{} --session {}\n", + ZELLIJ_EXECUTABLE_LOCATION, SESSION_NAME + ) + .as_bytes(), + ) .unwrap(); channel.flush().unwrap(); } -fn start_zellij_with_layout( - channel: &mut ssh2::Channel, - layout_path: &str, - session_name: Option<&String>, -) { - match session_name.as_ref() { - Some(name) => { - channel - .write_all( - format!( - "{} --layout-path {} --session {}\n", - ZELLIJ_EXECUTABLE_LOCATION, layout_path, name - ) - .as_bytes(), - ) - .unwrap(); - } - None => { - channel - .write_all( - format!( - "{} --layout-path {}\n", - ZELLIJ_EXECUTABLE_LOCATION, layout_path - ) - .as_bytes(), - ) - .unwrap(); - } - }; +fn start_zellij_without_frames(channel: &mut ssh2::Channel) { + stop_zellij(channel); + channel + .write_all( + format!( + "{} --session {} options --no-pane-frames\n", + ZELLIJ_EXECUTABLE_LOCATION, SESSION_NAME + ) + .as_bytes(), + ) + .unwrap(); + channel.flush().unwrap(); +} + +fn start_zellij_with_layout(channel: &mut ssh2::Channel, layout_path: &str) { + stop_zellij(channel); + channel + .write_all( + format!( + "{} --layout-path {} --session {}\n", + ZELLIJ_EXECUTABLE_LOCATION, layout_path, SESSION_NAME + ) + .as_bytes(), + ) + .unwrap(); channel.flush().unwrap(); } @@ -119,7 +111,6 @@ pub fn take_snapshot(terminal_output: &mut TerminalPane) -> String { pub struct RemoteTerminal<'a> { channel: &'a mut ssh2::Channel, - session_name: Option<&'a String>, cursor_x: usize, cursor_y: usize, current_snapshot: String, @@ -174,12 +165,7 @@ impl<'a> RemoteTerminal<'a> { pub fn attach_to_original_session(&mut self) { self.channel .write_all( - format!( - "{} attach {}\n", - ZELLIJ_EXECUTABLE_LOCATION, - self.session_name.unwrap() - ) - .as_bytes(), + format!("{} attach {}\n", ZELLIJ_EXECUTABLE_LOCATION, SESSION_NAME).as_bytes(), ) .unwrap(); self.channel.flush().unwrap(); @@ -198,33 +184,37 @@ pub struct RemoteRunner { vte_parser: vte::Parser, terminal_output: TerminalPane, channel: ssh2::Channel, - session_name: Option, test_name: &'static str, currently_running_step: Option, retries_left: usize, - win_size: PositionAndSize, + win_size: Size, layout_file_name: Option<&'static str>, without_frames: bool, } impl RemoteRunner { - pub fn new( - test_name: &'static str, - win_size: PositionAndSize, - session_name: Option, - ) -> Self { + pub fn new(test_name: &'static str, win_size: Size) -> Self { let sess = ssh_connect(); let mut channel = sess.channel_session().unwrap(); let vte_parser = vte::Parser::new(); - let terminal_output = TerminalPane::new(0, win_size, Palette::default(), 0); // 0 is the pane index + let mut rows = Dimension::fixed(win_size.rows); + let mut cols = Dimension::fixed(win_size.cols); + rows.set_inner(win_size.rows); + cols.set_inner(win_size.cols); + let pane_geom = PaneGeom { + x: 0, + y: 0, + rows, + cols, + }; + let terminal_output = TerminalPane::new(0, pane_geom, Palette::default(), 0); // 0 is the pane index setup_remote_environment(&mut channel, win_size); - start_zellij(&mut channel, session_name.as_ref()); + start_zellij(&mut channel); RemoteRunner { steps: vec![], channel, terminal_output, vte_parser, - session_name, test_name, currently_running_step: None, current_step_index: 0, @@ -234,15 +224,21 @@ impl RemoteRunner { without_frames: false, } } - pub fn new_without_frames( - test_name: &'static str, - win_size: PositionAndSize, - session_name: Option, - ) -> Self { + pub fn new_without_frames(test_name: &'static str, win_size: Size) -> Self { let sess = ssh_connect(); let mut channel = sess.channel_session().unwrap(); let vte_parser = vte::Parser::new(); - let terminal_output = TerminalPane::new(0, win_size, Palette::default(), 0); // 0 is the pane index + let mut rows = Dimension::fixed(win_size.rows); + let mut cols = Dimension::fixed(win_size.cols); + rows.set_inner(win_size.rows); + cols.set_inner(win_size.cols); + let pane_geom = PaneGeom { + x: 0, + y: 0, + rows, + cols, + }; + let terminal_output = TerminalPane::new(0, pane_geom, Palette::default(), 0); // 0 is the pane index setup_remote_environment(&mut channel, win_size); start_zellij_without_frames(&mut channel); RemoteRunner { @@ -250,7 +246,6 @@ impl RemoteRunner { channel, terminal_output, vte_parser, - session_name, test_name, currently_running_step: None, current_step_index: 0, @@ -262,27 +257,31 @@ impl RemoteRunner { } pub fn new_with_layout( test_name: &'static str, - win_size: PositionAndSize, + win_size: Size, layout_file_name: &'static str, - session_name: Option, ) -> Self { let remote_path = Path::new(ZELLIJ_LAYOUT_PATH).join(layout_file_name); let sess = ssh_connect(); let mut channel = sess.channel_session().unwrap(); let vte_parser = vte::Parser::new(); - let terminal_output = TerminalPane::new(0, win_size, Palette::default(), 0); // 0 is the pane index + let mut rows = Dimension::fixed(win_size.rows); + let mut cols = Dimension::fixed(win_size.cols); + rows.set_inner(win_size.rows); + cols.set_inner(win_size.cols); + let pane_geom = PaneGeom { + x: 0, + y: 0, + rows, + cols, + }; + let terminal_output = TerminalPane::new(0, pane_geom, Palette::default(), 0); // 0 is the pane index setup_remote_environment(&mut channel, win_size); - start_zellij_with_layout( - &mut channel, - &remote_path.to_string_lossy(), - session_name.as_ref(), - ); + start_zellij_with_layout(&mut channel, &remote_path.to_string_lossy()); RemoteRunner { steps: vec![], channel, terminal_output, vte_parser, - session_name, test_name, currently_running_step: None, current_step_index: 0, @@ -307,7 +306,6 @@ impl RemoteRunner { cursor_y, current_snapshot, channel: &mut self.channel, - session_name: self.session_name.as_ref(), } } pub fn run_next_step(&mut self) { @@ -319,7 +317,6 @@ impl RemoteRunner { cursor_y, current_snapshot, channel: &mut self.channel, - session_name: self.session_name.as_ref(), }; let instruction = next_step.instruction; self.currently_running_step = Some(String::from(next_step.name)); @@ -332,32 +329,22 @@ impl RemoteRunner { self.steps.get(self.current_step_index).is_some() } fn restart_test(&mut self) -> String { - let session_name = self.session_name.as_ref().map(|name| { - // this is so that we don't try to connect to the previous session if it's still stuck - // inside the container - format!("{}_{}", name, self.retries_left) - }); if let Some(layout_file_name) = self.layout_file_name.as_ref() { // let mut new_runner = RemoteRunner::new_with_layout(self.test_name, self.win_size, Path::new(&local_layout_path), session_name); - let mut new_runner = RemoteRunner::new_with_layout( - self.test_name, - self.win_size, - layout_file_name, - session_name, - ); + let mut new_runner = + RemoteRunner::new_with_layout(self.test_name, self.win_size, layout_file_name); new_runner.retries_left = self.retries_left - 1; new_runner.replace_steps(self.steps.clone()); drop(std::mem::replace(self, new_runner)); self.run_all_steps() } else if self.without_frames { - let mut new_runner = - RemoteRunner::new_without_frames(self.test_name, self.win_size, session_name); + let mut new_runner = RemoteRunner::new_without_frames(self.test_name, self.win_size); new_runner.retries_left = self.retries_left - 1; new_runner.replace_steps(self.steps.clone()); drop(std::mem::replace(self, new_runner)); self.run_all_steps() } else { - let mut new_runner = RemoteRunner::new(self.test_name, self.win_size, session_name); + let mut new_runner = RemoteRunner::new(self.test_name, self.win_size); new_runner.retries_left = self.retries_left - 1; new_runner.replace_steps(self.steps.clone()); drop(std::mem::replace(self, new_runner)); diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap index 91c83a44..d37f23e3 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__cannot_split_terminals_vertically_when_active_terminal_is_too_small.snap @@ -3,23 +3,23 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - -──────── -$ Hi!█ - - - - - - - - - - - - - - - + Zellij +┌──────┐ +│$ Hi!█│ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +└──────┘ Ctrl + diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__close_pane.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__close_pane.snap index e7487028..af676286 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__close_pane.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__close_pane.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  -─ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────────────────────── -$ █ - - - - - - - - - - - - - - - - - - - + Zellij (e2e-test)  Tab #1  +┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│$ █ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  Tip: Alt + n => open new pane. Alt + [] or hjkl => navigate between panes. diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap index 92484dd6..65ebb338 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__detach_and_attach_session.snap @@ -3,7 +3,7 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  + Zellij (e2e-test)  Tab #1  ┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐ │$ ││$ I am some text█ │ │ ││ │ diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__focus_pane_with_mouse.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__focus_pane_with_mouse.snap index 5a409760..3578cf5e 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__focus_pane_with_mouse.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__focus_pane_with_mouse.snap @@ -3,7 +3,7 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  + Zellij (e2e-test)  Tab #1  ┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐ │$ █ ││$ │ │ ││ │ diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__lock_mode.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__lock_mode.snap index 0796484c..cf59dc66 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__lock_mode.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__lock_mode.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  -─ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────────────────────── -$ nabc█ - - - - - - - - - - - - - - - - - - - + Zellij (e2e-test)  Tab #1  +┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│$ nabc█ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  -- INTERFACE LOCKED -- diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__open_new_tab.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__open_new_tab.snap index f9b84f68..ca19eb01 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__open_new_tab.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__open_new_tab.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  Tab #2  -─ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────────────────────── -$ █ - - - - - - - - - - - - - - - - - - - + Zellij (e2e-test)  Tab #1  Tab #2  +┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│$ █ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  Tip: Alt + n => open new pane. Alt + [] or hjkl => navigate between panes. diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_pane.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_pane.snap index ae130ab5..4220c0c8 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_pane.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_pane.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  -┌ Pane #1 ───────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────────────────────────┐ -│$ ││$ █ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -└────────────────────────────────────────────────┘└────────────────────────────────────────────────────────────────────┘ + Zellij (e2e-test)  Tab #1  +┌ Pane #1 ───────────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────────────────────┐ +│$ ││$ █ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +└────────────────────────────────────────────────────┘└────────────────────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  Tip: Alt + n => open new pane. Alt + [] or hjkl => navigate between panes. diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap index b329e8c6..6eea2929 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__resize_terminal_window.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  -┌ Pane #1 ─────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐ -│$ ││$ █ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -│ ││ │ -└──────────────────────────────────────┘└──────────────────────────────────────────────────────────┘ + Zellij (e2e-test)  Tab #1  +┌ Pane #1 ───────────────────────────────────────┐┌ Pane #2 ───────────────────────────────────────┐ +│$ ││$ █ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +└────────────────────────────────────────────────┘└────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  Tip: Alt + n => open new pane. Alt + [] or hjkl => navigate between panes. diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane.snap index a33ab400..f9f23c1c 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane.snap @@ -3,7 +3,7 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  + Zellij (e2e-test)  Tab #1  ┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────── SCROLL: 1/1 ┐ │$ ││$ line1 00000000000000000000000000000000000000000000000000│ │ ││line2 0000000000000000000000000000000000000000000000000000│ diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane_with_mouse.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane_with_mouse.snap index dfed0611..5ad40ae7 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane_with_mouse.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__scrolling_inside_a_pane_with_mouse.snap @@ -3,7 +3,7 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  + Zellij (e2e-test)  Tab #1  ┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────── SCROLL: 1/1 ┐ │$ ││$ line1 00000000000000000000000000000000000000000000000000│ │ ││line2 0000000000000000000000000000000000000000000000000000│ diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__split_terminals_vertically.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__split_terminals_vertically.snap index 36f0e6d8..b1f54404 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__split_terminals_vertically.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__split_terminals_vertically.snap @@ -3,7 +3,7 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  + Zellij (e2e-test)  Tab #1  ┌ Pane #1 ─────────────────────────────────────────────────┐┌ Pane #2 ─────────────────────────────────────────────────┐ │$ ││$ █ │ │ ││ │ diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__start_without_pane_frames.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__start_without_pane_frames.snap index 85c6db54..21f47e56 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__start_without_pane_frames.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__start_without_pane_frames.snap @@ -3,7 +3,7 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  + Zellij (e2e-test)  Tab #1  $ │$ █ │ │ diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap index e7487028..af676286 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__starts_with_one_terminal.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  -─ Pane #1 ────────────────────────────────────────────────────────────────────────────────────────────────────────────── -$ █ - - - - - - - - - - - - - - - - - - - + Zellij (e2e-test)  Tab #1  +┌ Pane #1 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│$ █ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  Tip: Alt + n => open new pane. Alt + [] or hjkl => navigate between panes. diff --git a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__toggle_pane_fullscreen.snap b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__toggle_pane_fullscreen.snap index 9108099d..347b0a70 100644 --- a/src/tests/e2e/snapshots/zellij__tests__e2e__cases__toggle_pane_fullscreen.snap +++ b/src/tests/e2e/snapshots/zellij__tests__e2e__cases__toggle_pane_fullscreen.snap @@ -3,27 +3,27 @@ source: src/tests/e2e/cases.rs expression: last_snapshot --- - Zellij  Tab #1  -─ Pane #2 ────────────────────────────────────────────────────────────────────────────────────────────────────────────── -$ █ - - - - - - - - - - - - - - - - - - - + Zellij (e2e-test)  Tab #1  +┌ Pane #2 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│$ █ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Ctrl + LOCK 

PANE  TAB  RESIZE  SCROLL  SESSION  QUIT  Tip: Alt + n => open new pane. Alt + [] or hjkl => navigate between panes. diff --git a/zellij-client/src/lib.rs b/zellij-client/src/lib.rs index e806ec3b..7d67a01a 100644 --- a/zellij-client/src/lib.rs +++ b/zellij-client/src/lib.rs @@ -116,7 +116,7 @@ pub fn start_client( let full_screen_ws = os_input.get_terminal_size_using_fd(0); let client_attributes = ClientAttributes { - position_and_size: full_screen_ws, + size: full_screen_ws, palette, }; @@ -137,7 +137,7 @@ pub fn start_client( client_attributes, Box::new(opts), Box::new(config_options.clone()), - layout, + layout.unwrap(), ) } }; diff --git a/zellij-client/src/os_input_output.rs b/zellij-client/src/os_input_output.rs index 7242bf7a..b5018c29 100644 --- a/zellij-client/src/os_input_output.rs +++ b/zellij-client/src/os_input_output.rs @@ -1,4 +1,5 @@ use zellij_utils::input::actions::Action; +use zellij_utils::pane_size::Size; use zellij_utils::{interprocess, libc, nix, signal_hook, termion, zellij_tile}; use interprocess::local_socket::LocalSocketStream; @@ -15,7 +16,6 @@ use zellij_tile::data::Palette; use zellij_utils::{ errors::ErrorContext, ipc::{ClientToServerMsg, IpcReceiverWithContext, IpcSenderWithContext, ServerToClientMsg}, - pane_size::PositionAndSize, shared::default_palette, }; @@ -35,7 +35,7 @@ fn unset_raw_mode(pid: RawFd, orig_termios: termios::Termios) { }; } -pub(crate) fn get_terminal_size_using_fd(fd: RawFd) -> PositionAndSize { +pub(crate) fn get_terminal_size_using_fd(fd: RawFd) -> Size { // TODO: do this with the nix ioctl use libc::ioctl; use libc::TIOCGWINSZ; @@ -54,7 +54,10 @@ pub(crate) fn get_terminal_size_using_fd(fd: RawFd) -> PositionAndSize { unsafe { ioctl(fd, TIOCGWINSZ.into(), &mut winsize) }; - PositionAndSize::from(winsize) + Size { + rows: winsize.ws_row as usize, + cols: winsize.ws_col as usize, + } } #[derive(Clone)] @@ -69,7 +72,7 @@ pub struct ClientOsInputOutput { /// Zellij client requires. pub trait ClientOsApi: Send + Sync { /// Returns the size of the terminal associated to file descriptor `fd`. - fn get_terminal_size_using_fd(&self, fd: RawFd) -> PositionAndSize; + fn get_terminal_size_using_fd(&self, fd: RawFd) -> Size; /// Set the terminal associated to file descriptor `fd` to /// [raw mode](https://en.wikipedia.org/wiki/Terminal_mode). fn set_raw_mode(&mut self, fd: RawFd); @@ -98,7 +101,7 @@ pub trait ClientOsApi: Send + Sync { } impl ClientOsApi for ClientOsInputOutput { - fn get_terminal_size_using_fd(&self, fd: RawFd) -> PositionAndSize { + fn get_terminal_size_using_fd(&self, fd: RawFd) -> Size { get_terminal_size_using_fd(fd) } fn set_raw_mode(&mut self, fd: RawFd) { diff --git a/zellij-client/src/unit/input_handler_tests.rs b/zellij-client/src/unit/input_handler_tests.rs index 9b0bc71c..a9b86a75 100644 --- a/zellij-client/src/unit/input_handler_tests.rs +++ b/zellij-client/src/unit/input_handler_tests.rs @@ -2,7 +2,7 @@ use super::input_loop; use zellij_utils::input::actions::{Action, Direction}; use zellij_utils::input::config::Config; use zellij_utils::input::options::Options; -use zellij_utils::pane_size::PositionAndSize; +use zellij_utils::pane_size::Size; use zellij_utils::zellij_tile::data::Palette; use crate::{os_input_output::ClientOsApi, ClientInstruction, CommandIsExecuting}; @@ -93,7 +93,7 @@ impl FakeClientOsApi { } impl ClientOsApi for FakeClientOsApi { - fn get_terminal_size_using_fd(&self, _fd: RawFd) -> PositionAndSize { + fn get_terminal_size_using_fd(&self, _fd: RawFd) -> Size { unimplemented!() } fn set_raw_mode(&mut self, _fd: RawFd) { diff --git a/zellij-server/src/lib.rs b/zellij-server/src/lib.rs index 57c68f9f..9073ed3a 100644 --- a/zellij-server/src/lib.rs +++ b/zellij-server/src/lib.rs @@ -46,12 +46,7 @@ use zellij_utils::{ /// Instructions related to server-side application #[derive(Debug, Clone)] pub(crate) enum ServerInstruction { - NewClient( - ClientAttributes, - Box, - Box, - Option, - ), + NewClient(ClientAttributes, Box, Box, LayoutFromYaml), Render(Option), UnblockInputThread, ClientExit, @@ -127,8 +122,6 @@ pub fn start_server(os_input: Box, socket_path: PathBuf) { daemonize::Daemonize::new() .working_directory(std::env::current_dir().unwrap()) .umask(0o077) - // FIXME: My cherished `dbg!` was broken, so this is a hack to bring it back - //.stderr(std::fs::File::create("dbg.log").unwrap()) .start() .expect("could not daemonize the server process"); @@ -237,19 +230,12 @@ pub fn start_server(os_input: Box, socket_path: PathBuf) { .unwrap() }; - match layout { - None => { - spawn_tabs(None); - } - Some(layout) => { - if !&layout.tabs.is_empty() { - for tab_layout in layout.tabs { - spawn_tabs(Some(tab_layout.clone())); - } - } else { - spawn_tabs(None); - } + if !&layout.tabs.is_empty() { + for tab_layout in layout.tabs { + spawn_tabs(Some(tab_layout.clone())); } + } else { + spawn_tabs(None); } } ServerInstruction::AttachClient(attrs, _, options) => { @@ -258,7 +244,7 @@ pub fn start_server(os_input: Box, socket_path: PathBuf) { let session_data = rlock.as_ref().unwrap(); session_data .senders - .send_to_screen(ScreenInstruction::TerminalResize(attrs.position_and_size)) + .send_to_screen(ScreenInstruction::TerminalResize(attrs.size)) .unwrap(); let default_mode = options.default_mode.unwrap_or_default(); let mode_info = @@ -326,7 +312,7 @@ fn init_session( to_server: SenderWithContext, client_attributes: ClientAttributes, session_state: Arc>, - layout: Option, + layout: LayoutFromYaml, ) -> SessionMetaData { let (to_screen, screen_receiver): ChannelWithContext = channels::unbounded(); let to_screen = SenderWithContext::new(to_screen); diff --git a/zellij-server/src/os_input_output.rs b/zellij-server/src/os_input_output.rs index 198a1487..05980805 100644 --- a/zellij-server/src/os_input_output.rs +++ b/zellij-server/src/os_input_output.rs @@ -251,7 +251,9 @@ pub trait ServerOsApi: Send + Sync { impl ServerOsApi for ServerOsInputOutput { fn set_terminal_size_using_fd(&self, fd: RawFd, cols: u16, rows: u16) { - set_terminal_size_using_fd(fd, cols, rows); + if cols > 0 && rows > 0 { + set_terminal_size_using_fd(fd, cols, rows); + } } fn spawn_terminal(&self, terminal_action: Option) -> (RawFd, Pid) { let orig_termios = self.orig_termios.lock().unwrap(); diff --git a/zellij-server/src/panes/grid.rs b/zellij-server/src/panes/grid.rs index cb03eb6a..5e3479ee 100644 --- a/zellij-server/src/panes/grid.rs +++ b/zellij-server/src/panes/grid.rs @@ -592,8 +592,13 @@ impl Grid { self.change_size(new_rows, new_columns); } pub fn change_size(&mut self, new_rows: usize, new_columns: usize) { + // Do nothing if this pane hasn't been given a proper size yet + if new_columns == 0 || new_rows == 0 { + return; + } self.selection.reset(); if new_columns != self.width { + self.horizontal_tabstops = create_horizontal_tabstops(new_columns); let mut cursor_canonical_line_index = self.cursor_canonical_line_index(); let cursor_index_in_canonical_line = self.cursor_index_in_canonical_line(); let mut viewport_canonical_lines = vec![]; @@ -635,6 +640,11 @@ impl Grid { } else { canonical_line.columns.drain(..).collect() }; + // If the next character is wider than the grid (i.e. there is nothing in + // `next_wrap`, then just abort the resizing + if next_wrap.is_empty() { + break; + } let row = Row::from_columns(next_wrap); // if there are no more parts, this row is canonical as long as it originally // was canonical (it might not have been for example if it's the first row in @@ -956,10 +966,9 @@ impl Grid { self.cursor.x += count_to_move; } pub fn replace_characters_in_line_after_cursor(&mut self, replace_with: TerminalCharacter) { - self.viewport - .get_mut(self.cursor.y) - .unwrap() - .replace_and_pad_end(self.cursor.x, self.width, replace_with); + if let Some(row) = self.viewport.get_mut(self.cursor.y) { + row.replace_and_pad_end(self.cursor.x, self.width, replace_with); + } self.output_buffer.update_line(self.cursor.y); } pub fn replace_characters_in_line_before_cursor(&mut self, replace_with: TerminalCharacter) { @@ -1109,7 +1118,7 @@ impl Grid { self.scroll_region = None; } pub fn set_scroll_region_to_viewport_size(&mut self) { - self.scroll_region = Some((0, self.height - 1)); + self.scroll_region = Some((0, self.height.saturating_sub(1))); } pub fn delete_lines_in_scroll_region( &mut self, diff --git a/zellij-server/src/panes/plugin_pane.rs b/zellij-server/src/panes/plugin_pane.rs index 3bac21eb..c4de9398 100644 --- a/zellij-server/src/panes/plugin_pane.rs +++ b/zellij-server/src/panes/plugin_pane.rs @@ -2,33 +2,37 @@ use std::sync::mpsc::channel; use std::time::Instant; use std::unimplemented; -use crate::panes::{PaneDecoration, PaneId}; +use crate::panes::PaneId; use crate::pty::VteBytes; use crate::tab::Pane; -use crate::ui::pane_boundaries_frame::PaneBoundariesFrame; +use crate::ui::pane_boundaries_frame::PaneFrame; use crate::wasm_vm::PluginInstruction; +use zellij_utils::pane_size::Offset; use zellij_utils::shared::ansi_len; use zellij_utils::zellij_tile::prelude::PaletteColor; -use zellij_utils::{channels::SenderWithContext, pane_size::PositionAndSize}; +use zellij_utils::{ + channels::SenderWithContext, + pane_size::{Dimension, PaneGeom}, +}; pub(crate) struct PluginPane { pub pid: u32, pub should_render: bool, pub selectable: bool, - pub invisible_borders: bool, - pub position_and_size: PositionAndSize, - pub position_and_size_override: Option, - pub content_position_and_size: PositionAndSize, + pub geom: PaneGeom, + pub geom_override: Option, + pub content_offset: Offset, pub send_plugin_instructions: SenderWithContext, pub active_at: Instant, pub pane_title: String, - pane_decoration: PaneDecoration, + frame: bool, + frame_color: Option, } impl PluginPane { pub fn new( pid: u32, - position_and_size: PositionAndSize, + position_and_size: PaneGeom, send_plugin_instructions: SenderWithContext, title: String, ) -> Self { @@ -36,53 +40,16 @@ impl PluginPane { pid, should_render: true, selectable: true, - invisible_borders: false, - position_and_size, - position_and_size_override: None, + geom: position_and_size, + geom_override: None, send_plugin_instructions, active_at: Instant::now(), - pane_decoration: PaneDecoration::ContentOffset((0, 0)), - content_position_and_size: position_and_size, + frame: false, + frame_color: None, + content_offset: Offset::default(), pane_title: title, } } - pub fn get_content_x(&self) -> usize { - self.get_content_posision_and_size().x - } - pub fn get_content_y(&self) -> usize { - self.get_content_posision_and_size().y - } - pub fn get_content_columns(&self) -> usize { - // content columns might differ from the pane's columns if the pane has a frame - // in that case they would be 2 less - self.get_content_posision_and_size().cols - } - pub fn get_content_rows(&self) -> usize { - // content rows might differ from the pane's rows if the pane has a frame - // in that case they would be 2 less - self.get_content_posision_and_size().rows - } - pub fn get_content_posision_and_size(&self) -> PositionAndSize { - self.content_position_and_size - } - fn redistribute_space(&mut self) { - let position_and_size = self - .position_and_size_override - .unwrap_or_else(|| self.position_and_size()); - match &mut self.pane_decoration { - PaneDecoration::BoundariesFrame(boundaries_frame) => { - boundaries_frame.change_pos_and_size(position_and_size); - self.content_position_and_size = boundaries_frame.content_position_and_size(); - } - PaneDecoration::ContentOffset((content_columns_offset, content_rows_offset)) => { - self.content_position_and_size = position_and_size; - self.content_position_and_size.cols = - position_and_size.cols - *content_columns_offset; - self.content_position_and_size.rows = position_and_size.rows - *content_rows_offset; - } - }; - self.set_should_render(true); - } } impl Pane for PluginPane { @@ -90,51 +57,46 @@ impl Pane for PluginPane { // with something like a get_pos_and_sz() method underpinning all of them. Alternatively and // preferably, just use an enum and not a trait object fn x(&self) -> usize { - self.position_and_size_override - .unwrap_or(self.position_and_size) - .x + self.geom_override.unwrap_or(self.geom).x } fn y(&self) -> usize { - self.position_and_size_override - .unwrap_or(self.position_and_size) - .y + self.geom_override.unwrap_or(self.geom).y } fn rows(&self) -> usize { - self.position_and_size_override - .unwrap_or(self.position_and_size) - .rows + self.geom_override.unwrap_or(self.geom).rows.as_usize() } - fn columns(&self) -> usize { - self.position_and_size_override - .unwrap_or(self.position_and_size) - .cols + fn cols(&self) -> usize { + self.geom_override.unwrap_or(self.geom).cols.as_usize() + } + fn get_content_x(&self) -> usize { + self.x() + self.content_offset.left + } + fn get_content_y(&self) -> usize { + self.y() + self.content_offset.top } fn get_content_columns(&self) -> usize { - self.get_content_columns() + // content columns might differ from the pane's columns if the pane has a frame + // in that case they would be 2 less + self.cols() + .saturating_sub(self.content_offset.left + self.content_offset.right) } fn get_content_rows(&self) -> usize { - self.get_content_rows() + // content rows might differ from the pane's rows if the pane has a frame + // in that case they would be 2 less + self.rows() + .saturating_sub(self.content_offset.top + self.content_offset.bottom) } fn reset_size_and_position_override(&mut self) { - self.position_and_size_override = None; - self.redistribute_space(); + self.geom_override = None; self.should_render = true; } - fn change_pos_and_size(&mut self, position_and_size: &PositionAndSize) { - self.position_and_size = *position_and_size; - self.redistribute_space(); + fn set_geom(&mut self, position_and_size: PaneGeom) { + self.geom = position_and_size; + self.should_render = true; } - // FIXME: This is obviously a bit outdated and needs the x and y moved into `size` - fn override_size_and_position(&mut self, x: usize, y: usize, size: &PositionAndSize) { - let position_and_size_override = PositionAndSize { - x, - y, - rows: size.rows, - cols: size.cols, - ..Default::default() - }; - self.position_and_size_override = Some(position_and_size_override); - self.redistribute_space(); + fn get_geom_override(&mut self, pane_geom: PaneGeom) { + self.geom_override = Some(pane_geom); + self.should_render = true; } fn handle_pty_bytes(&mut self, _event: VteBytes) { unimplemented!() @@ -143,13 +105,16 @@ impl Pane for PluginPane { None } fn adjust_input_to_terminal(&self, _input_bytes: Vec) -> Vec { - unimplemented!() // FIXME: Shouldn't need this implmented? + unimplemented!() } - fn position_and_size(&self) -> PositionAndSize { - self.position_and_size + fn position_and_size(&self) -> PaneGeom { + self.geom } - fn position_and_size_override(&self) -> Option { - self.position_and_size_override + fn current_geom(&self) -> PaneGeom { + self.geom_override.unwrap_or(self.geom) + } + fn geom_override(&self) -> Option { + self.geom_override } fn should_render(&self) -> bool { self.should_render @@ -157,28 +122,12 @@ impl Pane for PluginPane { fn set_should_render(&mut self, should_render: bool) { self.should_render = should_render; } - fn set_should_render_boundaries(&mut self, should_render: bool) { - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - boundaries_frame.set_should_render(should_render); - } - } fn selectable(&self) -> bool { self.selectable } fn set_selectable(&mut self, selectable: bool) { self.selectable = selectable; } - fn set_invisible_borders(&mut self, invisible_borders: bool) { - self.invisible_borders = invisible_borders; - } - fn set_fixed_height(&mut self, fixed_height: usize) { - self.position_and_size.rows = fixed_height; - self.position_and_size.rows_fixed = true; - } - fn set_fixed_width(&mut self, fixed_width: usize) { - self.position_and_size.cols = fixed_width; - self.position_and_size.cols_fixed = true; - } fn render(&mut self) -> Option { // if self.should_render { if true { @@ -200,10 +149,16 @@ impl Pane for PluginPane { self.should_render = false; let contents = buf_rx.recv().unwrap(); - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - if let Some(boundaries_frame_vte) = boundaries_frame.render() { - vte_output.push_str(&boundaries_frame_vte); - } + // FIXME: This is a hack that assumes all fixed-size panes are borderless. This + // will eventually need fixing! + if self.frame && !(self.geom.rows.is_fixed() || self.geom.cols.is_fixed()) { + let frame = PaneFrame { + geom: self.current_geom().into(), + title: self.pane_title.clone(), + color: self.frame_color, + ..Default::default() + }; + vte_output.push_str(&frame.render()); } for (index, line) in contents.lines().enumerate() { let actual_len = ansi_len(line); @@ -257,68 +212,44 @@ impl Pane for PluginPane { fn pid(&self) -> PaneId { PaneId::Plugin(self.pid) } - fn reduce_height_down(&mut self, count: usize) { - self.position_and_size.y += count; - self.position_and_size.rows -= count; - self.redistribute_space(); - self.should_render = true; + fn reduce_height(&mut self, percent: f64) { + if let Some(p) = self.geom.rows.as_percent() { + self.geom.rows = Dimension::percent(p - percent); + self.should_render = true; + } } - fn increase_height_down(&mut self, count: usize) { - self.position_and_size.rows += count; - self.redistribute_space(); - self.should_render = true; + fn increase_height(&mut self, percent: f64) { + if let Some(p) = self.geom.rows.as_percent() { + self.geom.rows = Dimension::percent(p + percent); + self.should_render = true; + } } - fn increase_height_up(&mut self, count: usize) { - self.position_and_size.y -= count; - self.position_and_size.rows += count; - self.redistribute_space(); - self.should_render = true; + fn reduce_width(&mut self, percent: f64) { + if let Some(p) = self.geom.cols.as_percent() { + self.geom.cols = Dimension::percent(p - percent); + self.should_render = true; + } } - fn reduce_height_up(&mut self, count: usize) { - self.position_and_size.rows -= count; - self.redistribute_space(); - self.should_render = true; - } - fn reduce_width_right(&mut self, count: usize) { - self.position_and_size.x += count; - self.position_and_size.cols -= count; - self.redistribute_space(); - self.should_render = true; - } - fn reduce_width_left(&mut self, count: usize) { - self.position_and_size.cols -= count; - self.redistribute_space(); - self.should_render = true; - } - fn increase_width_left(&mut self, count: usize) { - self.position_and_size.x -= count; - self.position_and_size.cols += count; - self.redistribute_space(); - self.should_render = true; - } - fn increase_width_right(&mut self, count: usize) { - self.position_and_size.cols += count; - self.redistribute_space(); - self.should_render = true; + fn increase_width(&mut self, percent: f64) { + if let Some(p) = self.geom.cols.as_percent() { + self.geom.cols = Dimension::percent(p + percent); + self.should_render = true; + } } fn push_down(&mut self, count: usize) { - self.position_and_size.y += count; - self.redistribute_space(); + self.geom.y += count; self.should_render = true; } fn push_right(&mut self, count: usize) { - self.position_and_size.x += count; - self.redistribute_space(); + self.geom.x += count; self.should_render = true; } fn pull_left(&mut self, count: usize) { - self.position_and_size.x -= count; - self.redistribute_space(); + self.geom.x -= count; self.should_render = true; } fn pull_up(&mut self, count: usize) { - self.position_and_size.y -= count; - self.redistribute_space(); + self.geom.y -= count; self.should_render = true; } fn scroll_up(&mut self, _count: usize) { @@ -330,25 +261,6 @@ impl Pane for PluginPane { fn clear_scroll(&mut self) { //unimplemented!() } - // FIXME: This need to be reevaluated and deleted if possible. - // `max` doesn't make sense when things are fixed... - fn max_height(&self) -> Option { - if self.position_and_size.rows_fixed { - Some(self.position_and_size.rows) - } else { - None - } - } - fn max_width(&self) -> Option { - if self.position_and_size.cols_fixed { - Some(self.position_and_size.cols) - } else { - None - } - } - fn invisible_borders(&self) -> bool { - self.invisible_borders - } fn active_at(&self) -> Instant { self.active_at @@ -357,61 +269,14 @@ impl Pane for PluginPane { fn set_active_at(&mut self, time: Instant) { self.active_at = time; } + fn set_frame(&mut self, frame: bool) { + self.frame = frame; + } + fn set_content_offset(&mut self, offset: Offset) { + self.content_offset = offset; + } fn set_boundary_color(&mut self, color: Option) { - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - boundaries_frame.set_color(color); - } - } - fn offset_content_columns(&mut self, by: usize) { - if !self.selectable { - return; - } - if let PaneDecoration::ContentOffset(content_offset) = &mut self.pane_decoration { - content_offset.0 = by; - } else { - self.pane_decoration = PaneDecoration::ContentOffset((by, 0)); - } - self.redistribute_space(); - self.set_should_render(true); - } - fn offset_content_rows(&mut self, by: usize) { - if !self.selectable { - return; - } - if let PaneDecoration::ContentOffset(content_offset) = &mut self.pane_decoration { - content_offset.1 = by; - } else { - self.pane_decoration = PaneDecoration::ContentOffset((0, by)); - } - self.redistribute_space(); - self.set_should_render(true); - } - fn show_boundaries_frame(&mut self, should_render_only_title: bool) { - if !self.selectable { - return; - } - let position_and_size = self - .position_and_size_override - .unwrap_or(self.position_and_size); - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - boundaries_frame.render_only_title(should_render_only_title); - self.content_position_and_size = boundaries_frame.content_position_and_size(); - } else { - let mut boundaries_frame = - PaneBoundariesFrame::new(position_and_size, self.pane_title.clone()); - boundaries_frame.render_only_title(should_render_only_title); - self.content_position_and_size = boundaries_frame.content_position_and_size(); - self.pane_decoration = PaneDecoration::BoundariesFrame(boundaries_frame); - } - self.redistribute_space(); - self.set_should_render(true); - } - fn remove_boundaries_frame(&mut self) { - if !self.selectable { - return; - } - self.pane_decoration = PaneDecoration::ContentOffset((0, 0)); - self.redistribute_space(); + self.frame_color = color; self.set_should_render(true); } } diff --git a/zellij-server/src/panes/terminal_pane.rs b/zellij-server/src/panes/terminal_pane.rs index d3405023..38b092a9 100644 --- a/zellij-server/src/panes/terminal_pane.rs +++ b/zellij-server/src/panes/terminal_pane.rs @@ -1,14 +1,3 @@ -use zellij_utils::position::Position; -use zellij_utils::zellij_tile::prelude::PaletteColor; -use zellij_utils::{vte, zellij_tile}; - -use std::fmt::Debug; -use std::os::unix::io::RawFd; -use std::time::{self, Instant}; -use zellij_tile::data::Palette; - -use zellij_utils::pane_size::PositionAndSize; - use crate::panes::AnsiCode; use crate::panes::{ grid::Grid, @@ -18,10 +7,20 @@ use crate::panes::{ }; use crate::pty::VteBytes; use crate::tab::Pane; +use std::fmt::Debug; +use std::os::unix::io::RawFd; +use std::time::{self, Instant}; +use zellij_utils::pane_size::Offset; +use zellij_utils::{ + pane_size::{Dimension, PaneGeom}, + position::Position, + vte, + zellij_tile::data::{Palette, PaletteColor}, +}; pub const SELECTION_SCROLL_INTERVAL_MS: u64 = 10; -use crate::ui::pane_boundaries_frame::PaneBoundariesFrame; +use crate::ui::pane_boundaries_frame::PaneFrame; #[derive(PartialEq, Eq, Ord, PartialOrd, Hash, Clone, Copy, Debug)] pub enum PaneId { @@ -29,24 +28,22 @@ pub enum PaneId { Plugin(u32), // FIXME: Drop the trait object, make this a wrapper for the struct? } -pub enum PaneDecoration { - BoundariesFrame(PaneBoundariesFrame), - ContentOffset((usize, usize)), // (columns, rows) -} - +// FIXME: This should hold an os_api handle so that terminal panes can set their own size via FD in +// their `reflow_lines()` method. Drop a Box in here somewhere. pub struct TerminalPane { pub grid: Grid, pub pid: RawFd, pub selectable: bool, - position_and_size: PositionAndSize, - position_and_size_override: Option, + pub geom: PaneGeom, + pub geom_override: Option, pub active_at: Instant, pub colors: Palette, vte_parser: vte::Parser, selection_scrolled_at: time::Instant, - content_position_and_size: PositionAndSize, + content_offset: Offset, pane_title: String, - pane_decoration: PaneDecoration, + frame: Option, + frame_color: Option, } impl Pane for TerminalPane { @@ -59,32 +56,38 @@ impl Pane for TerminalPane { fn rows(&self) -> usize { self.get_rows() } - fn columns(&self) -> usize { + fn cols(&self) -> usize { self.get_columns() } + fn get_content_x(&self) -> usize { + self.get_x() + self.content_offset.left + } + fn get_content_y(&self) -> usize { + self.get_y() + self.content_offset.top + } fn get_content_columns(&self) -> usize { - self.get_content_columns() + // content columns might differ from the pane's columns if the pane has a frame + // in that case they would be 2 less + self.get_columns() + .saturating_sub(self.content_offset.left + self.content_offset.right) } fn get_content_rows(&self) -> usize { - self.get_content_rows() + // content rows might differ from the pane's rows if the pane has a frame + // in that case they would be 2 less + self.get_rows() + .saturating_sub(self.content_offset.top + self.content_offset.bottom) } fn reset_size_and_position_override(&mut self) { - self.position_and_size_override = None; - self.redistribute_space(); + self.geom_override = None; + self.reflow_lines(); } - fn change_pos_and_size(&mut self, position_and_size: &PositionAndSize) { - self.position_and_size = *position_and_size; - self.redistribute_space(); + fn set_geom(&mut self, position_and_size: PaneGeom) { + self.geom = position_and_size; + self.reflow_lines(); } - fn override_size_and_position(&mut self, x: usize, y: usize, size: &PositionAndSize) { - self.position_and_size_override = Some(PositionAndSize { - x, - y, - rows: size.rows, - cols: size.cols, - ..Default::default() - }); - self.redistribute_space(); + fn get_geom_override(&mut self, pane_geom: PaneGeom) { + self.geom_override = Some(pane_geom); + self.reflow_lines(); } fn handle_pty_bytes(&mut self, bytes: VteBytes) { for byte in bytes.iter() { @@ -94,17 +97,10 @@ impl Pane for TerminalPane { } fn cursor_coordinates(&self) -> Option<(usize, usize)> { // (x, y) - let (x_offset, y_offset) = match &self.pane_decoration { - PaneDecoration::BoundariesFrame(boundries_frame) => { - let (content_columns_offset, content_rows_offset) = - boundries_frame.content_offset(); - (content_columns_offset, content_rows_offset) - } - PaneDecoration::ContentOffset(_) => (0, 0), - }; + let Offset { top, left, .. } = self.content_offset; self.grid .cursor_coordinates() - .map(|(x, y)| (x + x_offset, y + y_offset)) + .map(|(x, y)| (x + left, y + top)) } fn adjust_input_to_terminal(&self, input_bytes: Vec) -> Vec { // there are some cases in which the terminal state means that input sent to it @@ -157,11 +153,14 @@ impl Pane for TerminalPane { }; input_bytes } - fn position_and_size(&self) -> PositionAndSize { - self.position_and_size + fn position_and_size(&self) -> PaneGeom { + self.geom } - fn position_and_size_override(&self) -> Option { - self.position_and_size_override + fn current_geom(&self) -> PaneGeom { + self.geom_override.unwrap_or(self.geom) + } + fn geom_override(&self) -> Option { + self.geom_override } fn should_render(&self) -> bool { self.grid.should_render @@ -169,14 +168,10 @@ impl Pane for TerminalPane { fn set_should_render(&mut self, should_render: bool) { self.grid.should_render = should_render; } - fn set_should_render_boundaries(&mut self, should_render: bool) { - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - boundaries_frame.set_should_render(should_render); - } - } fn render_full_viewport(&mut self) { // this marks the pane for a full re-render, rather than just rendering the // diff as it usually does with the OutputBuffer + self.frame.replace(PaneFrame::default()); self.grid.render_full_viewport(); } fn selectable(&self) -> bool { @@ -185,17 +180,6 @@ impl Pane for TerminalPane { fn set_selectable(&mut self, selectable: bool) { self.selectable = selectable; } - fn set_fixed_height(&mut self, fixed_height: usize) { - self.position_and_size.rows = fixed_height; - self.position_and_size.rows_fixed = true; - } - fn set_fixed_width(&mut self, fixed_width: usize) { - self.position_and_size.cols = fixed_width; - self.position_and_size.cols_fixed = true; - } - fn set_invisible_borders(&mut self, _invisible_borders: bool) { - unimplemented!(); - } fn render(&mut self) -> Option { if self.should_render() { let mut vte_output = String::new(); @@ -254,11 +238,20 @@ impl Pane for TerminalPane { } character_styles.clear(); } - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - boundaries_frame.update_scroll(self.grid.scrollback_position_and_length()); - boundaries_frame.update_title(self.grid.title.as_ref()); - if let Some(boundaries_frame_vte) = boundaries_frame.render() { - vte_output.push_str(&boundaries_frame_vte); + if let Some(last_frame) = &self.frame { + let frame = PaneFrame { + geom: self.current_geom().into(), + title: self + .grid + .title + .clone() + .unwrap_or_else(|| self.pane_title.clone()), + scroll_position: self.grid.scrollback_position_and_length(), + color: self.frame_color, + }; + if &frame != last_frame { + vte_output.push_str(&frame.render()); + self.frame = Some(frame); } } self.set_should_render(false); @@ -270,57 +263,45 @@ impl Pane for TerminalPane { fn pid(&self) -> PaneId { PaneId::Terminal(self.pid) } - fn reduce_height_down(&mut self, count: usize) { - self.position_and_size.y += count; - self.position_and_size.rows -= count; - self.redistribute_space(); + fn reduce_height(&mut self, percent: f64) { + if let Some(p) = self.geom.rows.as_percent() { + self.geom.rows = Dimension::percent(p - percent); + self.set_should_render(true); + } } - fn increase_height_down(&mut self, count: usize) { - self.position_and_size.rows += count; - self.redistribute_space(); + fn increase_height(&mut self, percent: f64) { + if let Some(p) = self.geom.rows.as_percent() { + self.geom.rows = Dimension::percent(p + percent); + self.set_should_render(true); + } } - fn increase_height_up(&mut self, count: usize) { - self.position_and_size.y -= count; - self.position_and_size.rows += count; - self.redistribute_space(); + fn reduce_width(&mut self, percent: f64) { + if let Some(p) = self.geom.cols.as_percent() { + self.geom.cols = Dimension::percent(p - percent); + self.set_should_render(true); + } } - fn reduce_height_up(&mut self, count: usize) { - self.position_and_size.rows -= count; - self.redistribute_space(); - } - fn reduce_width_right(&mut self, count: usize) { - self.position_and_size.x += count; - self.position_and_size.cols -= count; - self.redistribute_space(); - } - fn reduce_width_left(&mut self, count: usize) { - self.position_and_size.cols -= count; - self.redistribute_space(); - } - fn increase_width_left(&mut self, count: usize) { - self.position_and_size.x -= count; - self.position_and_size.cols += count; - self.redistribute_space(); - } - fn increase_width_right(&mut self, count: usize) { - self.position_and_size.cols += count; - self.redistribute_space(); + fn increase_width(&mut self, percent: f64) { + if let Some(p) = self.geom.cols.as_percent() { + self.geom.cols = Dimension::percent(p + percent); + self.set_should_render(true); + } } fn push_down(&mut self, count: usize) { - self.position_and_size.y += count; - self.redistribute_space(); + self.geom.y += count; + self.reflow_lines(); } fn push_right(&mut self, count: usize) { - self.position_and_size.x += count; - self.redistribute_space(); + self.geom.x += count; + self.reflow_lines(); } fn pull_left(&mut self, count: usize) { - self.position_and_size.x -= count; - self.redistribute_space(); + self.geom.x -= count; + self.reflow_lines(); } fn pull_up(&mut self, count: usize) { - self.position_and_size.y -= count; - self.redistribute_space(); + self.geom.y -= count; + self.reflow_lines(); } fn scroll_up(&mut self, count: usize) { self.grid.move_viewport_up(count); @@ -392,73 +373,47 @@ impl Pane for TerminalPane { self.grid.get_selected_text() } + fn set_frame(&mut self, frame: bool) { + self.frame = if frame { + Some(PaneFrame::default()) + } else { + None + }; + } + + fn set_content_offset(&mut self, offset: Offset) { + self.content_offset = offset; + self.reflow_lines(); + } + fn set_boundary_color(&mut self, color: Option) { - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - if boundaries_frame.color != color { - boundaries_frame.set_color(color); - self.set_should_render(true); - } - } - } - fn relative_position(&self, position_on_screen: &Position) -> Position { - let pane_position_and_size = self.get_content_posision_and_size(); - position_on_screen.relative_to(&pane_position_and_size) - } - fn offset_content_columns(&mut self, by: usize) { - if let PaneDecoration::ContentOffset(content_offset) = &mut self.pane_decoration { - content_offset.0 = by; - } else { - self.pane_decoration = PaneDecoration::ContentOffset((by, 0)); - } - self.redistribute_space(); - } - fn offset_content_rows(&mut self, by: usize) { - if let PaneDecoration::ContentOffset(content_offset) = &mut self.pane_decoration { - content_offset.1 = by; - } else { - self.pane_decoration = PaneDecoration::ContentOffset((0, by)); - } - self.redistribute_space(); - } - fn show_boundaries_frame(&mut self, only_title: bool) { - let position_and_size = self - .position_and_size_override - .unwrap_or(self.position_and_size); - if let PaneDecoration::BoundariesFrame(boundaries_frame) = &mut self.pane_decoration { - boundaries_frame.render_only_title(only_title); - self.content_position_and_size = boundaries_frame.content_position_and_size(); - } else { - let mut boundaries_frame = - PaneBoundariesFrame::new(position_and_size, self.pane_title.clone()); - boundaries_frame.render_only_title(only_title); - self.content_position_and_size = boundaries_frame.content_position_and_size(); - self.pane_decoration = PaneDecoration::BoundariesFrame(boundaries_frame); - } - self.redistribute_space(); - } - fn remove_boundaries_frame(&mut self) { - self.pane_decoration = PaneDecoration::ContentOffset((0, 0)); - self.redistribute_space(); + self.frame_color = color; + self.set_should_render(true); } } impl TerminalPane { pub fn new( pid: RawFd, - position_and_size: PositionAndSize, + position_and_size: PaneGeom, palette: Palette, - pane_position: usize, + pane_index: usize, ) -> TerminalPane { - let initial_pane_title = format!("Pane #{}", pane_position); - let grid = Grid::new(position_and_size.rows, position_and_size.cols, palette); + let initial_pane_title = format!("Pane #{}", pane_index); + let grid = Grid::new( + position_and_size.rows.as_usize(), + position_and_size.cols.as_usize(), + palette, + ); TerminalPane { - pane_decoration: PaneDecoration::ContentOffset((0, 0)), - content_position_and_size: position_and_size, + frame: None, + frame_color: None, + content_offset: Offset::default(), pid, grid, selectable: true, - position_and_size, - position_and_size_override: None, + geom: position_and_size, + geom_override: None, vte_parser: vte::Parser::new(), active_at: Instant::now(), colors: palette, @@ -467,52 +422,33 @@ impl TerminalPane { } } pub fn get_x(&self) -> usize { - match self.position_and_size_override.as_ref() { + match self.geom_override { Some(position_and_size_override) => position_and_size_override.x, - None => self.position_and_size.x, + None => self.geom.x, } } pub fn get_y(&self) -> usize { - match self.position_and_size_override.as_ref() { + match self.geom_override { Some(position_and_size_override) => position_and_size_override.y, - None => self.position_and_size.y, + None => self.geom.y, } } pub fn get_columns(&self) -> usize { - match self.position_and_size_override.as_ref() { - Some(position_and_size_override) => position_and_size_override.cols, - None => self.position_and_size.cols, + match self.geom_override { + Some(position_and_size_override) => position_and_size_override.cols.as_usize(), + None => self.geom.cols.as_usize(), } } pub fn get_rows(&self) -> usize { - match self.position_and_size_override.as_ref() { - Some(position_and_size_override) => position_and_size_override.rows, - None => self.position_and_size.rows, + match self.geom_override { + Some(position_and_size_override) => position_and_size_override.rows.as_usize(), + None => self.geom.rows.as_usize(), } } - pub fn get_content_x(&self) -> usize { - self.get_content_posision_and_size().x - } - pub fn get_content_y(&self) -> usize { - self.get_content_posision_and_size().y - } - pub fn get_content_columns(&self) -> usize { - // content columns might differ from the pane's columns if the pane has a frame - // in that case they would be 2 less - self.get_content_posision_and_size().cols - } - pub fn get_content_rows(&self) -> usize { - // content rows might differ from the pane's rows if the pane has a frame - // in that case they would be 2 less - self.get_content_posision_and_size().rows - } - pub fn get_content_posision_and_size(&self) -> PositionAndSize { - self.content_position_and_size - } fn reflow_lines(&mut self) { let rows = self.get_content_rows(); - let columns = self.get_content_columns(); - self.grid.change_size(rows, columns); + let cols = self.get_content_columns(); + self.grid.change_size(rows, cols); self.set_should_render(true); } pub fn read_buffer_as_lines(&self) -> Vec> { @@ -522,24 +458,6 @@ impl TerminalPane { // (x, y) self.grid.cursor_coordinates() } - fn redistribute_space(&mut self) { - let position_and_size = self - .position_and_size_override - .unwrap_or_else(|| self.position_and_size()); - match &mut self.pane_decoration { - PaneDecoration::BoundariesFrame(boundaries_frame) => { - boundaries_frame.change_pos_and_size(position_and_size); - self.content_position_and_size = boundaries_frame.content_position_and_size(); - } - PaneDecoration::ContentOffset((content_columns_offset, content_rows_offset)) => { - self.content_position_and_size = position_and_size; - self.content_position_and_size.cols = - position_and_size.cols - *content_columns_offset; - self.content_position_and_size.rows = position_and_size.rows - *content_rows_offset; - } - }; - self.reflow_lines(); - } } #[cfg(test)] diff --git a/zellij-server/src/panes/unit/terminal_pane_tests.rs b/zellij-server/src/panes/unit/terminal_pane_tests.rs index 70e4e172..3ca7e8a7 100644 --- a/zellij-server/src/panes/unit/terminal_pane_tests.rs +++ b/zellij-server/src/panes/unit/terminal_pane_tests.rs @@ -1,18 +1,15 @@ use super::super::TerminalPane; use crate::tab::Pane; use ::insta::assert_snapshot; -use zellij_utils::pane_size::PositionAndSize; +use zellij_utils::pane_size::PaneGeom; use zellij_utils::zellij_tile::data::Palette; #[test] pub fn scrolling_inside_a_pane() { - let fake_win_size = PositionAndSize { - cols: 121, - rows: 20, - x: 0, - y: 0, - ..Default::default() - }; + let mut fake_win_size = PaneGeom::default(); + fake_win_size.cols.set_inner(121); + fake_win_size.rows.set_inner(20); + let pid = 1; let palette = Palette::default(); let mut terminal_pane = TerminalPane::new(pid, fake_win_size, palette, 0); // 0 is the pane index diff --git a/zellij-server/src/pty.rs b/zellij-server/src/pty.rs index 011b45ca..e28729b7 100644 --- a/zellij-server/src/pty.rs +++ b/zellij-server/src/pty.rs @@ -60,7 +60,7 @@ pub(crate) struct Pty { task_handles: HashMap>, } -pub(crate) fn pty_thread_main(mut pty: Pty, maybe_layout: Option) { +pub(crate) fn pty_thread_main(mut pty: Pty, layout: LayoutFromYaml) { loop { let (event, mut err_ctx) = pty.bus.recv().expect("failed to receive event on channel"); err_ctx.add_call(ContextType::Pty((&event).into())); @@ -87,16 +87,8 @@ pub(crate) fn pty_thread_main(mut pty: Pty, maybe_layout: Option .unwrap(); } PtyInstruction::NewTab(terminal_action, tab_layout) => { - if let Some(layout) = maybe_layout.clone() { - let merged_layout = layout.template.insert_tab_layout(tab_layout); - pty.spawn_terminals_for_layout(merged_layout.into(), terminal_action.clone()); - } else { - let pid = pty.spawn_terminal(terminal_action.clone()); - pty.bus - .senders - .send_to_screen(ScreenInstruction::NewTab(pid)) - .unwrap(); - } + let merged_layout = layout.template.clone().insert_tab_layout(tab_layout); + pty.spawn_terminals_for_layout(merged_layout.into(), terminal_action.clone()); } PtyInstruction::ClosePane(id) => { pty.close_pane(id); diff --git a/zellij-server/src/screen.rs b/zellij-server/src/screen.rs index d0e02e80..8d17d529 100644 --- a/zellij-server/src/screen.rs +++ b/zellij-server/src/screen.rs @@ -5,6 +5,7 @@ use std::os::unix::io::RawFd; use std::str; use std::sync::{Arc, RwLock}; +use zellij_utils::pane_size::Size; use zellij_utils::{input::layout::Layout, position::Position, zellij_tile}; use crate::{ @@ -20,7 +21,6 @@ use zellij_utils::{ errors::{ContextType, ScreenContext}, input::{get_mode_info, options::Options}, ipc::ClientAttributes, - pane_size::PositionAndSize, }; /// Instructions that can be sent to the [`Screen`]. @@ -58,12 +58,8 @@ pub(crate) enum ScreenInstruction { ToggleActiveTerminalFullscreen, TogglePaneFrames, SetSelectable(PaneId, bool, usize), - SetFixedHeight(PaneId, usize, usize), - SetFixedWidth(PaneId, usize, usize), - SetInvisibleBorders(PaneId, bool, usize), ClosePane(PaneId), ApplyLayout(Layout, Vec), - NewTab(RawFd), SwitchTabNext, SwitchTabPrev, ToggleActiveSyncTab, @@ -71,7 +67,7 @@ pub(crate) enum ScreenInstruction { GoToTab(u32), ToggleTab, UpdateTabName(Vec), - TerminalResize(PositionAndSize), + TerminalResize(Size), ChangeMode(ModeInfo), LeftClick(Position), MouseRelease(Position), @@ -116,12 +112,8 @@ impl From<&ScreenInstruction> for ScreenContext { } ScreenInstruction::TogglePaneFrames => ScreenContext::TogglePaneFrames, ScreenInstruction::SetSelectable(..) => ScreenContext::SetSelectable, - ScreenInstruction::SetInvisibleBorders(..) => ScreenContext::SetInvisibleBorders, - ScreenInstruction::SetFixedHeight(..) => ScreenContext::SetFixedHeight, - ScreenInstruction::SetFixedWidth(..) => ScreenContext::SetFixedWidth, ScreenInstruction::ClosePane(_) => ScreenContext::ClosePane, ScreenInstruction::ApplyLayout(..) => ScreenContext::ApplyLayout, - ScreenInstruction::NewTab(_) => ScreenContext::NewTab, ScreenInstruction::SwitchTabNext => ScreenContext::SwitchTabNext, ScreenInstruction::SwitchTabPrev => ScreenContext::SwitchTabPrev, ScreenInstruction::CloseTab => ScreenContext::CloseTab, @@ -151,7 +143,7 @@ pub(crate) struct Screen { /// A map between this [`Screen`]'s tabs and their ID/key. tabs: BTreeMap, /// The full size of this [`Screen`]. - position_and_size: PositionAndSize, + size: Size, /// The index of this [`Screen`]'s active [`Tab`]. active_tab_index: Option, tab_history: Vec>, @@ -174,7 +166,7 @@ impl Screen { Screen { bus, max_panes, - position_and_size: client_attributes.position_and_size, + size: client_attributes.size, colors: client_attributes.palette, active_tab_index: None, tabs: BTreeMap::new(), @@ -185,32 +177,6 @@ impl Screen { } } - /// Creates a new [`Tab`] in this [`Screen`], containing a single - /// [pane](crate::client::panes) with PTY file descriptor `pane_id`. - pub fn new_tab(&mut self, pane_id: RawFd) { - let tab_index = self.get_new_tab_index(); - let position = self.tabs.len(); - let tab = Tab::new( - tab_index, - position, - String::new(), - &self.position_and_size, - self.bus.os_input.as_ref().unwrap().clone(), - self.bus.senders.clone(), - self.max_panes, - Some(PaneId::Terminal(pane_id)), - self.mode_info.clone(), - self.colors, - self.session_state.clone(), - self.draw_pane_frames, - ); - self.tab_history.push(self.active_tab_index); - self.active_tab_index = Some(tab_index); - self.tabs.insert(tab_index, tab); - self.update_tabs(); - self.render(); - } - /// Returns the index where a new [`Tab`] should be created in this [`Screen`]. /// Currently, this is right after the last currently existing tab, or `0` if /// no tabs exist in this screen yet. @@ -308,8 +274,8 @@ impl Screen { } } - pub fn resize_to_screen(&mut self, new_screen_size: PositionAndSize) { - self.position_and_size = new_screen_size; + pub fn resize_to_screen(&mut self, new_screen_size: Size) { + self.size = new_screen_size; for (_, tab) in self.tabs.iter_mut() { tab.resize_whole_tab(new_screen_size); } @@ -377,11 +343,10 @@ impl Screen { tab_index, position, String::new(), - &self.position_and_size, + self.size, self.bus.os_input.as_ref().unwrap().clone(), self.bus.senders.clone(), self.max_panes, - None, self.mode_info.clone(), self.colors, self.session_state.clone(), @@ -657,43 +622,6 @@ pub(crate) fn screen_thread_main( |tab| tab.set_pane_selectable(id, selectable), ); } - ScreenInstruction::SetFixedHeight(id, fixed_height, tab_index) => { - screen.get_indexed_tab_mut(tab_index).map_or_else( - || { - log::warn!( - "Tab index #{} not found, could not set fixed height for plugin #{:?}.", - tab_index, - id - ) - }, - |tab| tab.set_pane_fixed_height(id, fixed_height), - ); - } - ScreenInstruction::SetFixedWidth(id, fixed_width, tab_index) => { - screen.get_indexed_tab_mut(tab_index).map_or_else( - || { - log::warn!( - "Tab index #{} not found, could not set fixed width for plugin #{:?}.", - tab_index, - id - ) - }, - |tab| tab.set_pane_fixed_width(id, fixed_width), - ); - } - ScreenInstruction::SetInvisibleBorders(id, invisible_borders, tab_index) => { - screen.get_indexed_tab_mut(tab_index).map_or_else( - || { - log::warn!( - r#"Tab index #{} not found, could not set invisible borders for plugin #{:?}."#, - tab_index, - id - ) - }, - |tab| tab.set_pane_invisible_borders(id, invisible_borders), - ); - screen.render(); - } ScreenInstruction::ClosePane(id) => { screen.get_active_tab_mut().unwrap().close_pane(id); screen.render(); @@ -711,14 +639,6 @@ pub(crate) fn screen_thread_main( } screen.render(); } - ScreenInstruction::NewTab(pane_id) => { - screen.new_tab(pane_id); - screen - .bus - .senders - .send_to_server(ServerInstruction::UnblockInputThread) - .unwrap(); - } ScreenInstruction::SwitchTabNext => { screen.switch_tab_next(); screen diff --git a/zellij-server/src/tab.rs b/zellij-server/src/tab.rs index 6ecf33b7..9de19146 100644 --- a/zellij-server/src/tab.rs +++ b/zellij-server/src/tab.rs @@ -1,12 +1,6 @@ //! `Tab`s holds multiple panes. It tracks their coordinates (x/y) and size, //! as well as how they should be resized - -use zellij_utils::{position::Position, serde, zellij_tile}; - -#[cfg(not(feature = "parametric_resize_beta"))] use crate::ui::pane_resizer::PaneResizer; -#[cfg(feature = "parametric_resize_beta")] -use crate::ui::pane_resizer_beta::PaneResizer; use crate::{ os_input_output::ServerOsApi, panes::{PaneId, PluginPane, TerminalPane}, @@ -25,65 +19,74 @@ use std::{ collections::{BTreeMap, HashSet}, }; use zellij_tile::data::{Event, InputMode, ModeInfo, Palette, PaletteColor}; +use zellij_utils::input::layout::Direction; +use zellij_utils::pane_size::{Offset, Size, Viewport}; use zellij_utils::{ input::{ layout::{Layout, Run}, parse_keys, }, - pane_size::PositionAndSize, + pane_size::{Dimension, PaneGeom}, + position::Position, + serde, zellij_tile, }; const CURSOR_HEIGHT_WIDTH_RATIO: usize = 4; // this is not accurate and kind of a magic number, TODO: look into this -// MIN_TERMINAL_HEIGHT here must be larger than the height of any of the status bars -// this is a dirty hack until we implement fixed panes +// FIXME: This should be replaced by `RESIZE_PERCENT` at some point const MIN_TERMINAL_HEIGHT: usize = 5; const MIN_TERMINAL_WIDTH: usize = 5; +const RESIZE_PERCENT: f64 = 5.0; + type BorderAndPaneIds = (usize, Vec); -fn split_vertically(rect: &PositionAndSize) -> (PositionAndSize, PositionAndSize) { - let width_of_each_half = rect.cols / 2; - let mut first_rect = *rect; - let mut second_rect = *rect; - if rect.cols % 2 == 0 { - first_rect.cols = width_of_each_half; +fn split(direction: Direction, rect: &PaneGeom) -> Option<(PaneGeom, PaneGeom)> { + let space = match direction { + Direction::Vertical => rect.cols, + Direction::Horizontal => rect.rows, + }; + if let Some(p) = space.as_percent() { + let first_rect = match direction { + Direction::Vertical => PaneGeom { + cols: Dimension::percent(p / 2.0), + ..*rect + }, + Direction::Horizontal => PaneGeom { + rows: Dimension::percent(p / 2.0), + ..*rect + }, + }; + let second_rect = match direction { + Direction::Vertical => PaneGeom { + x: first_rect.x + 1, + cols: first_rect.cols, + ..*rect + }, + Direction::Horizontal => PaneGeom { + y: first_rect.y + 1, + rows: first_rect.rows, + ..*rect + }, + }; + Some((first_rect, second_rect)) } else { - first_rect.cols = width_of_each_half + 1; + None } - second_rect.x = first_rect.x + first_rect.cols; - second_rect.cols = width_of_each_half; - (first_rect, second_rect) } -fn split_horizontally(rect: &PositionAndSize) -> (PositionAndSize, PositionAndSize) { - let height_of_each_half = rect.rows / 2; - let mut first_rect = *rect; - let mut second_rect = *rect; - if rect.rows % 2 == 0 { - first_rect.rows = height_of_each_half; - } else { - first_rect.rows = height_of_each_half + 1; - } - second_rect.y = first_rect.y + first_rect.rows; - second_rect.rows = height_of_each_half; - (first_rect, second_rect) -} - -fn pane_content_offset( - position_and_size: &PositionAndSize, - viewport: &PositionAndSize, -) -> (usize, usize) { +fn pane_content_offset(position_and_size: &PaneGeom, viewport: &Viewport) -> (usize, usize) { // (columns_offset, rows_offset) // if the pane is not on the bottom or right edge on the screen, we need to reserve one space // from its content to leave room for the boundary between it and the next pane (if it doesn't // draw its own frame) - let columns_offset = if position_and_size.x + position_and_size.cols < viewport.cols { + let columns_offset = if position_and_size.x + position_and_size.cols.as_usize() < viewport.cols + { 1 } else { 0 }; - let rows_offset = if position_and_size.y + position_and_size.rows < viewport.rows { + let rows_offset = if position_and_size.y + position_and_size.rows.as_usize() < viewport.rows { 1 } else { 0 @@ -99,8 +102,8 @@ pub(crate) struct Tab { panes_to_hide: HashSet, active_terminal: Option, max_panes: Option, - viewport: PositionAndSize, // includes all selectable panes - display_area: PositionAndSize, // includes all panes (including eg. the status bar and tab bar in the default layout) + viewport: Viewport, // includes all selectable panes + display_area: Size, // includes all panes (including eg. the status bar and tab bar in the default layout) fullscreen_is_active: bool, os_api: Box, pub senders: ThreadSenders, @@ -115,7 +118,6 @@ pub(crate) struct Tab { #[derive(Clone, Debug, Default, Serialize, Deserialize)] #[serde(crate = "self::serde")] pub(crate) struct TabData { - /* subset of fields to publish to plugins */ pub position: usize, pub name: String, pub active: bool, @@ -128,33 +130,31 @@ pub trait Pane { fn x(&self) -> usize; fn y(&self) -> usize; fn rows(&self) -> usize; - fn columns(&self) -> usize; + fn cols(&self) -> usize; + fn get_content_x(&self) -> usize; + fn get_content_y(&self) -> usize; + fn get_content_columns(&self) -> usize; + fn get_content_rows(&self) -> usize; fn reset_size_and_position_override(&mut self); - fn change_pos_and_size(&mut self, position_and_size: &PositionAndSize); - fn override_size_and_position(&mut self, x: usize, y: usize, size: &PositionAndSize); + fn set_geom(&mut self, position_and_size: PaneGeom); + fn get_geom_override(&mut self, pane_geom: PaneGeom); fn handle_pty_bytes(&mut self, bytes: VteBytes); fn cursor_coordinates(&self) -> Option<(usize, usize)>; fn adjust_input_to_terminal(&self, input_bytes: Vec) -> Vec; - fn position_and_size(&self) -> PositionAndSize; - fn position_and_size_override(&self) -> Option; + fn position_and_size(&self) -> PaneGeom; + fn current_geom(&self) -> PaneGeom; + fn geom_override(&self) -> Option; fn should_render(&self) -> bool; fn set_should_render(&mut self, should_render: bool); fn set_should_render_boundaries(&mut self, _should_render: bool) {} fn selectable(&self) -> bool; fn set_selectable(&mut self, selectable: bool); - fn set_invisible_borders(&mut self, invisible_borders: bool); - fn set_fixed_height(&mut self, fixed_height: usize); - fn set_fixed_width(&mut self, fixed_width: usize); fn render(&mut self) -> Option; fn pid(&self) -> PaneId; - fn reduce_height_down(&mut self, count: usize); - fn increase_height_down(&mut self, count: usize); - fn increase_height_up(&mut self, count: usize); - fn reduce_height_up(&mut self, count: usize); - fn increase_width_right(&mut self, count: usize); - fn reduce_width_right(&mut self, count: usize); - fn reduce_width_left(&mut self, count: usize); - fn increase_width_left(&mut self, count: usize); + fn reduce_height(&mut self, percent: f64); + fn increase_height(&mut self, percent: f64); + fn reduce_width(&mut self, percent: f64); + fn increase_width(&mut self, percent: f64); fn push_down(&mut self, count: usize); fn push_right(&mut self, count: usize); fn pull_left(&mut self, count: usize); @@ -164,11 +164,13 @@ pub trait Pane { fn clear_scroll(&mut self); fn active_at(&self) -> Instant; fn set_active_at(&mut self, instant: Instant); + fn set_frame(&mut self, frame: bool); + fn set_content_offset(&mut self, offset: Offset); fn cursor_shape_csi(&self) -> String { "\u{1b}[0 q".to_string() // default to non blinking block } fn contains(&self, position: &Position) -> bool { - match self.position_and_size_override() { + match self.geom_override() { Some(position_and_size) => position_and_size.contains(position), None => self.position_and_size().contains(position), } @@ -182,16 +184,16 @@ pub trait Pane { } fn right_boundary_x_coords(&self) -> usize { - self.x() + self.columns() + self.x() + self.cols() } fn bottom_boundary_y_coords(&self) -> usize { self.y() + self.rows() } fn is_directly_right_of(&self, other: &dyn Pane) -> bool { - self.x() == other.x() + other.columns() + self.x() == other.x() + other.cols() } fn is_directly_left_of(&self, other: &dyn Pane) -> bool { - self.x() + self.columns() == other.x() + self.x() + self.cols() == other.x() } fn is_directly_below(&self, other: &dyn Pane) -> bool { self.y() == other.y() + other.rows() @@ -211,33 +213,21 @@ pub trait Pane { - std::cmp::max(self.y(), other.y()) } fn vertically_overlaps_with(&self, other: &dyn Pane) -> bool { - (self.x() >= other.x() && self.x() < (other.x() + other.columns())) - || ((self.x() + self.columns()) <= (other.x() + other.columns()) - && (self.x() + self.columns()) > other.x()) - || (self.x() <= other.x() - && (self.x() + self.columns() >= (other.x() + other.columns()))) - || (other.x() <= self.x() - && (other.x() + other.columns() >= (self.x() + self.columns()))) + (self.x() >= other.x() && self.x() < (other.x() + other.cols())) + || ((self.x() + self.cols()) <= (other.x() + other.cols()) + && (self.x() + self.cols()) > other.x()) + || (self.x() <= other.x() && (self.x() + self.cols() >= (other.x() + other.cols()))) + || (other.x() <= self.x() && (other.x() + other.cols() >= (self.x() + self.cols()))) } fn get_vertical_overlap_with(&self, other: &dyn Pane) -> usize { - std::cmp::min(self.x() + self.columns(), other.x() + other.columns()) + std::cmp::min(self.x() + self.cols(), other.x() + other.cols()) - std::cmp::max(self.x(), other.x()) } - fn can_increase_height_by(&self, increase_by: usize) -> bool { - self.max_height() - .map(|max_height| self.rows() + increase_by <= max_height) - .unwrap_or(true) - } - fn can_increase_width_by(&self, increase_by: usize) -> bool { - self.max_width() - .map(|max_width| self.columns() + increase_by <= max_width) - .unwrap_or(true) - } fn can_reduce_height_by(&self, reduce_by: usize) -> bool { self.rows() > reduce_by && self.rows() - reduce_by >= self.min_height() } fn can_reduce_width_by(&self, reduce_by: usize) -> bool { - self.columns() > reduce_by && self.columns() - reduce_by >= self.min_width() + self.cols() > reduce_by && self.cols() - reduce_by >= self.min_width() } fn min_width(&self) -> usize { MIN_TERMINAL_WIDTH @@ -245,42 +235,16 @@ pub trait Pane { fn min_height(&self) -> usize { MIN_TERMINAL_HEIGHT } - fn max_width(&self) -> Option { - None - } - fn max_height(&self) -> Option { - None - } - fn invisible_borders(&self) -> bool { - false - } fn drain_messages_to_pty(&mut self) -> Vec> { // TODO: this is only relevant to terminal panes // we should probably refactor away from this trait at some point vec![] } fn render_full_viewport(&mut self) {} - fn relative_position(&self, position: &Position) -> Position { - match self.position_and_size_override() { - Some(position_and_size) => position.relative_to(&position_and_size), - None => position.relative_to(&self.position_and_size()), - } - } - fn get_content_rows(&self) -> usize { - // content rows might differ from the pane's rows if the pane has a frame - // in that case they would be 2 less - self.rows() - } - fn get_content_columns(&self) -> usize { - // content columns might differ from the pane's columns if the pane has a frame - // in that case they would be 2 less - self.columns() + fn relative_position(&self, position_on_screen: &Position) -> Position { + position_on_screen.relative_to(self.get_content_y(), self.get_content_x()) } fn set_boundary_color(&mut self, _color: Option) {} - fn offset_content_columns(&mut self, _by: usize) {} - fn offset_content_rows(&mut self, _by: usize) {} - fn show_boundaries_frame(&mut self, _render_only_title: bool) {} - fn remove_boundaries_frame(&mut self) {} } impl Tab { @@ -290,33 +254,16 @@ impl Tab { index: usize, position: usize, name: String, - viewport: &PositionAndSize, + display_area: Size, os_api: Box, senders: ThreadSenders, max_panes: Option, - pane_id: Option, mode_info: ModeInfo, colors: Palette, session_state: Arc>, draw_pane_frames: bool, ) -> Self { - let panes = if let Some(PaneId::Terminal(pid)) = pane_id { - let pane_title_only = true; - let mut new_terminal = TerminalPane::new(pid, *viewport, colors, 1); - if draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } - os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.columns() as u16, - new_terminal.rows() as u16, - ); - let mut panes: BTreeMap> = BTreeMap::new(); - panes.insert(PaneId::Terminal(pid), Box::new(new_terminal)); - panes - } else { - BTreeMap::new() - }; + let panes = BTreeMap::new(); let name = if name.is_empty() { format!("Tab #{}", position + 1) @@ -331,9 +278,9 @@ impl Tab { name, max_panes, panes_to_hide: HashSet::new(), - active_terminal: pane_id, - viewport: *viewport, - display_area: *viewport, + active_terminal: None, + viewport: display_area.into(), + display_area, fullscreen_is_active: false, synchronize_is_active: false, os_api, @@ -347,43 +294,19 @@ impl Tab { } pub fn apply_layout(&mut self, layout: Layout, new_pids: Vec, tab_index: usize) { - // TODO: this should be an attribute on Screen instead of viewport - let free_space = PositionAndSize { - x: 0, - y: 0, - rows: self.viewport.rows, - cols: self.viewport.cols, - ..Default::default() - }; + // TODO: this should be an attribute on Screen instead of full_screen_ws + let free_space = PaneGeom::default(); self.panes_to_hide.clear(); let positions_in_layout = layout.position_panes_in_space(&free_space); - for (layout, position_and_size) in &positions_in_layout { - // we need to do this first because it decides the size of the screen - // which we use for other stuff in the main loop below (eg. which type of frames the - // panes should have) - if layout.borderless { - self.offset_viewport(position_and_size); - } - } - let mut positions_and_size = positions_in_layout.iter(); - let total_borderless_panes = layout.total_borderless_panes(); - let total_panes_with_border = positions_in_layout - .len() - .saturating_sub(total_borderless_panes); for (pane_kind, terminal_pane) in self.panes.iter_mut() { // for now the layout only supports terminal panes if let PaneId::Terminal(pid) = pane_kind { match positions_and_size.next() { - Some((_, position_and_size)) => { + Some(&(_, position_and_size)) => { terminal_pane.reset_size_and_position_override(); - terminal_pane.change_pos_and_size(position_and_size); - self.os_api.set_terminal_size_using_fd( - *pid, - position_and_size.cols as u16, - position_and_size.rows as u16, - ); + terminal_pane.set_geom(position_and_size); } None => { // we filled the entire layout, no room for this pane @@ -403,18 +326,13 @@ impl Tab { .send_to_plugin(PluginInstruction::Load(pid_tx, plugin.clone(), tab_index)) .unwrap(); let pid = pid_rx.recv().unwrap(); - let draw_pane_frames = self.draw_pane_frames && !layout.borderless; - let pane_title_only = !layout.borderless && total_panes_with_border == 1; let title = String::from(plugin.as_path().as_os_str().to_string_lossy()); - let mut new_plugin = PluginPane::new( + let new_plugin = PluginPane::new( pid, *position_and_size, self.senders.to_plugin.as_ref().unwrap().clone(), title, ); - if draw_pane_frames && !layout.borderless { - new_plugin.show_boundaries_frame(pane_title_only); - } self.panes.insert(PaneId::Plugin(pid), Box::new(new_plugin)); // Send an initial mode update to the newly loaded plugin only! self.senders @@ -427,30 +345,14 @@ impl Tab { // there are still panes left to fill, use the pids we received in this method let pid = new_pids.next().unwrap(); // if this crashes it means we got less pids than there are panes in this layout let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let pane_title_only = - next_selectable_pane_position == 1 && total_panes_with_border == 1; - let draw_pane_frames = self.draw_pane_frames && !layout.borderless; - let mut new_terminal = TerminalPane::new( + let new_pane = TerminalPane::new( *pid, *position_and_size, self.colors, next_selectable_pane_position, ); - if draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(position_and_size, &self.viewport); - new_terminal.offset_content_columns(pane_columns_offset); - new_terminal.offset_content_rows(pane_rows_offset); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); self.panes - .insert(PaneId::Terminal(*pid), Box::new(new_terminal)); + .insert(PaneId::Terminal(*pid), Box::new(new_pane)); } } for unused_pid in new_pids { @@ -461,6 +363,26 @@ impl Tab { .send_to_pty(PtyInstruction::ClosePane(PaneId::Terminal(*unused_pid))) .unwrap(); } + // FIXME: This is another hack to crop the viewport to fixed-size panes. Once you can have + // non-fixed panes that are part of the viewport, get rid of this! + self.resize_whole_tab(self.display_area); + let boundary_geom: Vec<_> = self + .panes + .values() + .filter_map(|p| { + let geom = p.position_and_size(); + if geom.cols.is_fixed() || geom.rows.is_fixed() { + Some(geom.into()) + } else { + None + } + }) + .collect(); + for geom in boundary_geom { + self.offset_viewport(&geom) + } + // This is the end of the nasty viewport hack... + // FIXME: Active / new / current terminal, should be pane self.active_terminal = self.panes.iter().map(|(id, _)| id.to_owned()).next(); self.render(); } @@ -469,187 +391,81 @@ impl Tab { if self.fullscreen_is_active { self.toggle_active_pane_fullscreen(); } - if !self.has_panes() { - if let PaneId::Terminal(term_pid) = pid { - let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( - term_pid, - self.viewport, - self.colors, - next_selectable_pane_position, - ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.columns() as u16, - new_terminal.rows() as u16, - ); - self.panes.insert(pid, Box::new(new_terminal)); - self.active_terminal = Some(pid); - } - } else { - // TODO: check minimum size of active terminal + // TODO: check minimum size of active terminal - let (_largest_terminal_size, terminal_id_to_split) = self.get_panes().fold( - (0, None), - |(current_largest_terminal_size, current_terminal_id_to_split), - id_and_terminal_to_check| { - let (id_of_terminal_to_check, terminal_to_check) = id_and_terminal_to_check; - let terminal_size = (terminal_to_check.rows() * CURSOR_HEIGHT_WIDTH_RATIO) - * terminal_to_check.columns(); - let terminal_can_be_split = terminal_to_check.columns() >= MIN_TERMINAL_WIDTH - && terminal_to_check.rows() >= MIN_TERMINAL_HEIGHT - && ((terminal_to_check.columns() > terminal_to_check.min_width() * 2) - || (terminal_to_check.rows() > terminal_to_check.min_height() * 2)); - if terminal_can_be_split && terminal_size > current_largest_terminal_size { - (terminal_size, Some(*id_of_terminal_to_check)) - } else { - (current_largest_terminal_size, current_terminal_id_to_split) - } - }, - ); - if terminal_id_to_split.is_none() { - self.senders - .send_to_pty(PtyInstruction::ClosePane(pid)) // we can't open this pane, close the pty - .unwrap(); - return; // likely no terminal large enough to split - } - let terminal_id_to_split = terminal_id_to_split.unwrap(); - let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let terminal_to_split = self.panes.get_mut(&terminal_id_to_split).unwrap(); - let terminal_ws = PositionAndSize { - rows: terminal_to_split.rows(), - cols: terminal_to_split.columns(), - x: terminal_to_split.x(), - y: terminal_to_split.y(), - ..Default::default() - }; - if terminal_to_split.rows() * CURSOR_HEIGHT_WIDTH_RATIO > terminal_to_split.columns() - && terminal_to_split.rows() > terminal_to_split.min_height() * 2 - { - if let PaneId::Terminal(term_pid) = pid { - let (top_winsize, bottom_winsize) = split_horizontally(&terminal_ws); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( + let (_largest_terminal_size, terminal_id_to_split) = self.get_panes().fold( + (0, None), + |(current_largest_terminal_size, current_terminal_id_to_split), + id_and_terminal_to_check| { + let (id_of_terminal_to_check, terminal_to_check) = id_and_terminal_to_check; + let terminal_size = (terminal_to_check.rows() * CURSOR_HEIGHT_WIDTH_RATIO) + * terminal_to_check.cols(); + let terminal_can_be_split = terminal_to_check.cols() >= MIN_TERMINAL_WIDTH + && terminal_to_check.rows() >= MIN_TERMINAL_HEIGHT + && ((terminal_to_check.cols() > terminal_to_check.min_width() * 2) + || (terminal_to_check.rows() > terminal_to_check.min_height() * 2)); + if terminal_can_be_split && terminal_size > current_largest_terminal_size { + (terminal_size, Some(*id_of_terminal_to_check)) + } else { + (current_largest_terminal_size, current_terminal_id_to_split) + } + }, + ); + if terminal_id_to_split.is_none() { + self.senders + .send_to_pty(PtyInstruction::ClosePane(pid)) // we can't open this pane, close the pty + .unwrap(); + return; // likely no terminal large enough to split + } + let terminal_id_to_split = terminal_id_to_split.unwrap(); + let next_selectable_pane_position = self.get_next_selectable_pane_position(); + let terminal_to_split = self.panes.get_mut(&terminal_id_to_split).unwrap(); + let terminal_ws = terminal_to_split.position_and_size(); + if terminal_to_split.rows() * CURSOR_HEIGHT_WIDTH_RATIO > terminal_to_split.cols() + && terminal_to_split.rows() > terminal_to_split.min_height() * 2 + { + if let PaneId::Terminal(term_pid) = pid { + if let Some((top_winsize, bottom_winsize)) = + split(Direction::Horizontal, &terminal_ws) + { + let new_terminal = TerminalPane::new( term_pid, bottom_winsize, self.colors, next_selectable_pane_position, ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&bottom_winsize, &self.viewport); - new_terminal.offset_content_columns(pane_columns_offset); - new_terminal.offset_content_rows(pane_rows_offset); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); - if self.draw_pane_frames { - let only_title = false; - terminal_to_split.show_boundaries_frame(only_title); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&top_winsize, &self.viewport); - terminal_to_split.offset_content_columns(pane_columns_offset); - terminal_to_split.offset_content_rows(pane_rows_offset); - } - terminal_to_split.change_pos_and_size(&top_winsize); - let terminal_to_split_content_columns = terminal_to_split.get_content_columns(); - let terminal_to_split_content_rows = terminal_to_split.get_content_rows(); + terminal_to_split.set_geom(top_winsize); self.panes.insert(pid, Box::new(new_terminal)); - if let PaneId::Terminal(terminal_id_to_split) = terminal_id_to_split { - self.os_api.set_terminal_size_using_fd( - terminal_id_to_split, - terminal_to_split_content_columns as u16, - terminal_to_split_content_rows as u16, - ); - } - self.active_terminal = Some(pid); + self.relayout_tab(Direction::Vertical); } - } else if terminal_to_split.columns() > terminal_to_split.min_width() * 2 { - if let PaneId::Terminal(term_pid) = pid { - let (left_winsize, right_winsize) = split_vertically(&terminal_ws); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( + } + } else if terminal_to_split.cols() > terminal_to_split.min_width() * 2 { + if let PaneId::Terminal(term_pid) = pid { + if let Some((left_winsize, right_winsize)) = + split(Direction::Vertical, &terminal_ws) + { + let new_terminal = TerminalPane::new( term_pid, right_winsize, self.colors, next_selectable_pane_position, ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&right_winsize, &self.viewport); - new_terminal.offset_content_columns(pane_columns_offset); - new_terminal.offset_content_rows(pane_rows_offset); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); - if self.draw_pane_frames { - let only_title = false; - terminal_to_split.show_boundaries_frame(only_title); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&left_winsize, &self.viewport); - terminal_to_split.offset_content_columns(pane_columns_offset); - terminal_to_split.offset_content_rows(pane_rows_offset); - } - terminal_to_split.change_pos_and_size(&left_winsize); - let terminal_to_split_content_columns = terminal_to_split.get_content_columns(); - let terminal_to_split_content_rows = terminal_to_split.get_content_rows(); + terminal_to_split.set_geom(left_winsize); self.panes.insert(pid, Box::new(new_terminal)); - if let PaneId::Terminal(terminal_id_to_split) = terminal_id_to_split { - self.os_api.set_terminal_size_using_fd( - terminal_id_to_split, - terminal_to_split_content_columns as u16, - terminal_to_split_content_rows as u16, - ); - } + self.relayout_tab(Direction::Horizontal); } } - self.active_terminal = Some(pid); - self.render(); } + self.active_terminal = Some(pid); + self.render(); } pub fn horizontal_split(&mut self, pid: PaneId) { self.close_down_to_max_terminals(); if self.fullscreen_is_active { self.toggle_active_pane_fullscreen(); } - if !self.has_panes() { - if let PaneId::Terminal(term_pid) = pid { - let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( - term_pid, - self.viewport, - self.colors, - next_selectable_pane_position, - ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); - self.panes.insert(pid, Box::new(new_terminal)); - self.active_terminal = Some(pid); - } - } else if let PaneId::Terminal(term_pid) = pid { + if let PaneId::Terminal(term_pid) = pid { + let next_selectable_pane_position = self.get_next_selectable_pane_position(); let active_pane_id = &self.get_active_pane_id().unwrap(); let active_pane = self.panes.get_mut(active_pane_id).unwrap(); if active_pane.rows() < MIN_TERMINAL_HEIGHT * 2 { @@ -658,62 +474,21 @@ impl Tab { .unwrap(); return; } - let terminal_ws = PositionAndSize { - x: active_pane.x(), - y: active_pane.y(), - rows: active_pane.rows(), - cols: active_pane.columns(), - ..Default::default() - }; - let (top_winsize, bottom_winsize) = split_horizontally(&terminal_ws); - - if self.draw_pane_frames { - let only_title = false; - active_pane.show_boundaries_frame(only_title); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&top_winsize, &self.viewport); - active_pane.offset_content_columns(pane_columns_offset); - active_pane.offset_content_rows(pane_rows_offset); - } - active_pane.change_pos_and_size(&top_winsize); - - let active_pane_content_columns = active_pane.get_content_columns(); - let active_pane_content_rows = active_pane.get_content_rows(); - - let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( - term_pid, - bottom_winsize, - self.colors, - next_selectable_pane_position, - ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&bottom_winsize, &self.viewport); - new_terminal.offset_content_columns(pane_columns_offset); - new_terminal.offset_content_rows(pane_rows_offset); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); - self.panes.insert(pid, Box::new(new_terminal)); - - if let PaneId::Terminal(active_terminal_pid) = active_pane_id { - self.os_api.set_terminal_size_using_fd( - *active_terminal_pid, - active_pane_content_columns as u16, - active_pane_content_rows as u16, + let terminal_ws = active_pane.position_and_size(); + if let Some((top_winsize, bottom_winsize)) = split(Direction::Horizontal, &terminal_ws) + { + let new_terminal = TerminalPane::new( + term_pid, + bottom_winsize, + self.colors, + next_selectable_pane_position, ); + active_pane.set_geom(top_winsize); + self.panes.insert(pid, Box::new(new_terminal)); + self.active_terminal = Some(pid); + self.relayout_tab(Direction::Vertical); + self.render(); } - - self.active_terminal = Some(pid); - self.render(); } } pub fn vertical_split(&mut self, pid: PaneId) { @@ -721,107 +496,41 @@ impl Tab { if self.fullscreen_is_active { self.toggle_active_pane_fullscreen(); } - if !self.has_panes() { - if let PaneId::Terminal(term_pid) = pid { - let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( - term_pid, - self.viewport, - self.colors, - next_selectable_pane_position, - ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); - self.panes.insert(pid, Box::new(new_terminal)); - self.active_terminal = Some(pid); - } - } else if let PaneId::Terminal(term_pid) = pid { + if let PaneId::Terminal(term_pid) = pid { // TODO: check minimum size of active terminal + let next_selectable_pane_position = self.get_next_selectable_pane_position(); let active_pane_id = &self.get_active_pane_id().unwrap(); let active_pane = self.panes.get_mut(active_pane_id).unwrap(); - if active_pane.columns() < MIN_TERMINAL_WIDTH * 2 { + if active_pane.cols() < MIN_TERMINAL_WIDTH * 2 { self.senders .send_to_pty(PtyInstruction::ClosePane(pid)) // we can't open this pane, close the pty .unwrap(); return; } - let terminal_ws = PositionAndSize { - x: active_pane.x(), - y: active_pane.y(), - rows: active_pane.rows(), - cols: active_pane.columns(), - ..Default::default() - }; - let (left_winsize, right_winsize) = split_vertically(&terminal_ws); - - if self.draw_pane_frames { - let only_title = false; - active_pane.show_boundaries_frame(only_title); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&left_winsize, &self.viewport); - active_pane.offset_content_columns(pane_columns_offset); - active_pane.offset_content_rows(pane_rows_offset); - } - active_pane.change_pos_and_size(&left_winsize); - - let active_pane_content_columns = active_pane.get_content_columns(); - let active_pane_content_rows = active_pane.get_content_rows(); - - let next_selectable_pane_position = self.get_next_selectable_pane_position(); - let pane_title_only = next_selectable_pane_position == 1; - let mut new_terminal = TerminalPane::new( - term_pid, - right_winsize, - self.colors, - next_selectable_pane_position, - ); - if self.draw_pane_frames { - new_terminal.show_boundaries_frame(pane_title_only); - } else { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&right_winsize, &self.viewport); - new_terminal.offset_content_columns(pane_columns_offset); - new_terminal.offset_content_rows(pane_rows_offset); - } - self.os_api.set_terminal_size_using_fd( - new_terminal.pid, - new_terminal.get_content_columns() as u16, - new_terminal.get_content_rows() as u16, - ); - self.panes.insert(pid, Box::new(new_terminal)); - - if let PaneId::Terminal(active_terminal_pid) = active_pane_id { - self.os_api.set_terminal_size_using_fd( - *active_terminal_pid, - active_pane_content_columns as u16, - active_pane_content_rows as u16, + let terminal_ws = active_pane.position_and_size(); + if let Some((left_winsize, right_winsize)) = split(Direction::Vertical, &terminal_ws) { + let new_terminal = TerminalPane::new( + term_pid, + right_winsize, + self.colors, + next_selectable_pane_position, ); + active_pane.set_geom(left_winsize); + self.panes.insert(pid, Box::new(new_terminal)); } - self.active_terminal = Some(pid); + self.relayout_tab(Direction::Horizontal); self.render(); } } pub fn get_active_pane(&self) -> Option<&dyn Pane> { - // FIXME: Could use Option::map() here - match self.get_active_pane_id() { - Some(active_pane) => self.panes.get(&active_pane).map(Box::as_ref), - None => None, - } + self.get_active_pane_id() + .and_then(|ap| self.panes.get(&ap).map(Box::as_ref)) } fn get_active_pane_id(&self) -> Option { self.active_terminal } fn get_active_terminal_id(&self) -> Option { - // FIXME: Is there a better way to do this? if let Some(PaneId::Terminal(pid)) = self.active_terminal { Some(pid) } else { @@ -895,19 +604,17 @@ impl Tab { pane.set_should_render(true); pane.set_should_render_boundaries(true); } + let viewport_pane_ids: Vec<_> = self + .get_pane_ids() + .into_iter() + .filter(|id| !self.is_inside_viewport(id)) + .collect(); + for pid in viewport_pane_ids { + let viewport_pane = self.panes.get_mut(&pid).unwrap(); + viewport_pane.reset_size_and_position_override(); + } self.panes_to_hide.clear(); - let selectable_pane_count = self.get_selectable_pane_count(); let active_terminal = self.panes.get_mut(&active_pane_id).unwrap(); - if selectable_pane_count > 1 && self.draw_pane_frames { - let only_title = false; - active_terminal.show_boundaries_frame(only_title); - } - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&active_terminal.position_and_size(), &self.viewport); - active_terminal.offset_content_columns(pane_columns_offset); - active_terminal.offset_content_rows(pane_rows_offset); - } active_terminal.reset_size_and_position_override(); } else { let panes = self.get_panes(); @@ -923,31 +630,29 @@ impl Tab { // nothing to do, pane is already as fullscreen as it can be, let's bail return; } else { - let active_terminal = self.panes.get_mut(&active_pane_id).unwrap(); - if self.draw_pane_frames { - // full screen panes don't need their full frame - let only_title = true; - active_terminal.show_boundaries_frame(only_title); - } else { - active_terminal.offset_content_rows(0); - active_terminal.offset_content_columns(0); + // For all of the panes outside of the viewport staying on the fullscreen + // screen, switch them to using override positions as well so that the resize + // system doesn't get confused by viewport and old panes that no longer line up + let viewport_pane_ids: Vec<_> = self + .get_pane_ids() + .into_iter() + .filter(|id| !self.is_inside_viewport(id)) + .collect(); + for pid in viewport_pane_ids { + let viewport_pane = self.panes.get_mut(&pid).unwrap(); + viewport_pane.get_geom_override(viewport_pane.position_and_size()); } - active_terminal.override_size_and_position( - self.viewport.x, - self.viewport.y, - &self.viewport, - ); + let active_terminal = self.panes.get_mut(&active_pane_id).unwrap(); + let full_screen_geom = PaneGeom { + x: self.viewport.x, + y: self.viewport.y, + ..Default::default() + }; + active_terminal.get_geom_override(full_screen_geom); } } - let active_terminal = self.panes.get(&active_pane_id).unwrap(); - if let PaneId::Terminal(active_pid) = active_pane_id { - self.os_api.set_terminal_size_using_fd( - active_pid, - active_terminal.get_content_columns() as u16, - active_terminal.get_content_rows() as u16, - ); - } self.set_force_render(); + self.resize_whole_tab(self.display_area); self.render(); self.toggle_fullscreen_is_active(); } @@ -975,32 +680,25 @@ impl Tab { { active_terminal.set_should_render(true) } - // .and_then(|active_terminal_id| self.panes.get_mut(&active_terminal_id)) { - // active_terminal.set_should_render(true) - // } } pub fn set_pane_frames(&mut self, draw_pane_frames: bool) { self.draw_pane_frames = draw_pane_frames; - let selectable_pane_count = self.panes.iter().filter(|(_, p)| p.selectable()).count(); for (pane_id, pane) in self.panes.iter_mut() { + pane.set_frame(draw_pane_frames); if draw_pane_frames { - let should_render_only_title = (selectable_pane_count == 1 - && self.active_terminal == Some(*pane_id)) - || (self.fullscreen_is_active && self.active_terminal == Some(*pane_id)); - pane.offset_content_rows(0); - pane.offset_content_columns(0); - pane.show_boundaries_frame(should_render_only_title); + pane.set_content_offset(Offset::frame(1)); } else { - let position_and_size = pane - .position_and_size_override() - .unwrap_or_else(|| pane.position_and_size()); - pane.remove_boundaries_frame(); - + let position_and_size = pane.current_geom(); let (pane_columns_offset, pane_rows_offset) = pane_content_offset(&position_and_size, &self.viewport); - pane.offset_content_columns(pane_columns_offset); - pane.offset_content_rows(pane_rows_offset); + pane.set_content_offset(Offset::shift(pane_rows_offset, pane_columns_offset)); } + // FIXME: The selectable thing is a massive Hack! Decouple borders from selectability + if !pane.selectable() { + pane.set_content_offset(Offset::default()); + } + // FIXME: This, and all other `set_terminal_size_using_fd` calls, would be best in + // `TerminalPane::reflow_lines` if let PaneId::Terminal(pid) = pane_id { self.os_api.set_terminal_size_using_fd( *pid, @@ -1020,7 +718,7 @@ impl Tab { return; } let mut output = String::new(); - let mut boundaries = Boundaries::new(&self.viewport); + let mut boundaries = Boundaries::new(self.viewport); let hide_cursor = "\u{1b}[?25l"; output.push_str(hide_cursor); if self.should_clear_display_before_rendering { @@ -1051,7 +749,7 @@ impl Tab { } false => { pane.set_boundary_color(None); - if !pane.invisible_borders() && !self.draw_pane_frames { + if !self.draw_pane_frames { boundaries.add_rect(pane.as_ref(), self.mode_info.mode, None); } } @@ -1098,13 +796,9 @@ impl Tab { fn get_panes(&self) -> impl Iterator)> { self.panes.iter() } - // FIXME: This is some shameful duplication... fn get_selectable_panes(&self) -> impl Iterator)> { self.panes.iter().filter(|(_, p)| p.selectable()) } - fn get_selectable_pane_count(&self) -> usize { - self.get_selectable_panes().count() - } fn get_next_selectable_pane_position(&self) -> usize { self.panes .iter() @@ -1115,19 +809,6 @@ impl Tab { .count() + 1 } - fn is_the_only_selectable_pane(&self, pane_id: &PaneId) -> bool { - let selectable_panes = self.get_selectable_panes(); - if selectable_panes.count() == 1 { - let pane = self.panes.get(pane_id); - pane.map(|pane| pane.selectable()).unwrap_or(false) - } else { - false - } - } - fn has_panes(&self) -> bool { - let mut all_terminals = self.get_panes(); - all_terminals.next().is_some() - } fn has_selectable_panes(&self) -> bool { let mut all_terminals = self.get_selectable_panes(); all_terminals.next().is_some() @@ -1146,7 +827,7 @@ impl Tab { return None; } for (&pid, terminal) in self.get_panes() { - if terminal.x() + terminal.columns() == terminal_to_check.x() { + if terminal.x() + terminal.cols() == terminal_to_check.x() { ids.push(pid); } } @@ -1160,7 +841,7 @@ impl Tab { let mut ids = vec![]; let terminal_to_check = self.panes.get(id).unwrap(); for (&pid, terminal) in self.get_panes() { - if terminal.x() == terminal_to_check.x() + terminal_to_check.columns() { + if terminal.x() == terminal_to_check.x() + terminal_to_check.cols() { ids.push(pid); } } @@ -1221,7 +902,7 @@ impl Tab { .map(|t_id| self.panes.get(t_id).unwrap().as_ref()) .filter(|terminal| { terminal.pid() != pane.pid() - && terminal.x() + terminal.columns() == pane.x() + pane.columns() + && terminal.x() + terminal.cols() == pane.x() + pane.cols() }) .collect() } @@ -1423,14 +1104,14 @@ impl Tab { top_aligned_terminals.sort_by_key(|a| Reverse(a.x())); for terminal in top_aligned_terminals { let terminal_to_check = terminals.last().unwrap_or(&terminal_to_check); - if terminal.x() + terminal.columns() == terminal_to_check.x() { + if terminal.x() + terminal.cols() == terminal_to_check.x() { terminals.push(terminal); } } // leftmost border aligned with a pane border above let mut left_resize_border = 0; for terminal in &terminals { - let right_terminal_boundary = terminal.x() + terminal.columns(); + let right_terminal_boundary = terminal.x() + terminal.cols(); if terminal_borders_above .get(&right_terminal_boundary) .is_some() @@ -1462,7 +1143,7 @@ impl Tab { top_aligned_terminals.sort_by_key(|a| a.x()); for terminal in top_aligned_terminals { let terminal_to_check = terminals.last().unwrap_or(&terminal_to_check); - if terminal.x() == terminal_to_check.x() + terminal_to_check.columns() { + if terminal.x() == terminal_to_check.x() + terminal_to_check.cols() { terminals.push(terminal); } } @@ -1478,11 +1159,11 @@ impl Tab { right_resize_border = left_terminal_boundary; } } - terminals.retain(|terminal| terminal.x() + terminal.columns() <= right_resize_border); + terminals.retain(|terminal| terminal.x() + terminal.cols() <= right_resize_border); // if there are no adjacent panes to resize, we use the border of the main pane we're // resizing let right_resize_border = if terminals.is_empty() { - terminal_to_check.x() + terminal_to_check.columns() + terminal_to_check.x() + terminal_to_check.cols() } else { right_resize_border }; @@ -1501,14 +1182,14 @@ impl Tab { // terminals that are next to each other up to current for terminal in bottom_aligned_terminals { let terminal_to_check = terminals.last().unwrap_or(&terminal_to_check); - if terminal.x() + terminal.columns() == terminal_to_check.x() { + if terminal.x() + terminal.cols() == terminal_to_check.x() { terminals.push(terminal); } } // leftmost border aligned with a pane border above let mut left_resize_border = 0; for terminal in &terminals { - let right_terminal_boundary = terminal.x() + terminal.columns(); + let right_terminal_boundary = terminal.x() + terminal.cols(); if terminal_borders_below .get(&right_terminal_boundary) .is_some() @@ -1540,7 +1221,7 @@ impl Tab { // terminals that are next to each other up to current for terminal in bottom_aligned_terminals { let terminal_to_check = terminals.last().unwrap_or(&terminal_to_check); - if terminal.x() == terminal_to_check.x() + terminal_to_check.columns() { + if terminal.x() == terminal_to_check.x() + terminal_to_check.cols() { terminals.push(terminal); } } @@ -1556,160 +1237,30 @@ impl Tab { right_resize_border = left_terminal_boundary; } } - terminals.retain(|terminal| terminal.x() + terminal.columns() <= right_resize_border); - + terminals.retain(|terminal| terminal.x() + terminal.cols() <= right_resize_border); let right_resize_border = if terminals.is_empty() { - terminal_to_check.x() + terminal_to_check.columns() + terminal_to_check.x() + terminal_to_check.cols() } else { right_resize_border }; let terminal_ids: Vec = terminals.iter().map(|t| t.pid()).collect(); (right_resize_border, terminal_ids) } - fn reduce_pane_height_down(&mut self, id: &PaneId, count: usize) { + fn reduce_pane_height(&mut self, id: &PaneId, percent: f64) { let terminal = self.panes.get_mut(id).unwrap(); - terminal.reduce_height_down(count); - let position_and_size = terminal.position_and_size(); - - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = id { - self.os_api.set_terminal_size_using_fd( - *pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } + terminal.reduce_height(percent); } - fn reduce_pane_height_up(&mut self, id: &PaneId, count: usize) { + fn increase_pane_height(&mut self, id: &PaneId, percent: f64) { let terminal = self.panes.get_mut(id).unwrap(); - terminal.reduce_height_up(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = id { - self.os_api.set_terminal_size_using_fd( - *pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } + terminal.increase_height(percent); } - fn increase_pane_height_down(&mut self, id: &PaneId, count: usize) { + fn increase_pane_width(&mut self, id: &PaneId, percent: f64) { let terminal = self.panes.get_mut(id).unwrap(); - terminal.increase_height_down(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = terminal.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } + terminal.increase_width(percent); } - fn increase_pane_height_up(&mut self, id: &PaneId, count: usize) { + fn reduce_pane_width(&mut self, id: &PaneId, percent: f64) { let terminal = self.panes.get_mut(id).unwrap(); - terminal.increase_height_up(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = terminal.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } - } - fn increase_pane_width_right(&mut self, id: &PaneId, count: usize) { - let terminal = self.panes.get_mut(id).unwrap(); - terminal.increase_width_right(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = terminal.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } - } - fn increase_pane_width_left(&mut self, id: &PaneId, count: usize) { - let terminal = self.panes.get_mut(id).unwrap(); - terminal.increase_width_left(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = terminal.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } - } - fn reduce_pane_width_right(&mut self, id: &PaneId, count: usize) { - let terminal = self.panes.get_mut(id).unwrap(); - terminal.reduce_width_right(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = terminal.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } - } - fn reduce_pane_width_left(&mut self, id: &PaneId, count: usize) { - let terminal = self.panes.get_mut(id).unwrap(); - terminal.reduce_width_left(count); - let position_and_size = terminal.position_and_size(); - if !self.draw_pane_frames { - let (pane_columns_offset, pane_rows_offset) = - pane_content_offset(&position_and_size, &self.viewport); - terminal.offset_content_columns(pane_columns_offset); - terminal.offset_content_rows(pane_rows_offset); - } - if let PaneId::Terminal(pid) = terminal.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - terminal.get_content_columns() as u16, - terminal.get_content_rows() as u16, - ); - } + terminal.reduce_width(percent); } fn pane_is_between_vertical_borders( &self, @@ -1721,7 +1272,7 @@ impl Tab { .panes .get(id) .expect("could not find terminal to check between borders"); - terminal.x() >= left_border_x && terminal.x() + terminal.columns() <= right_border_x + terminal.x() >= left_border_x && terminal.x() + terminal.cols() <= right_border_x } fn pane_is_between_horizontal_borders( &self, @@ -1735,7 +1286,7 @@ impl Tab { .expect("could not find terminal to check between borders"); terminal.y() >= top_border_y && terminal.y() + terminal.rows() <= bottom_border_y } - fn reduce_pane_and_surroundings_up(&mut self, id: &PaneId, count: usize) { + fn reduce_pane_and_surroundings_up(&mut self, id: &PaneId, percent: f64) { let mut terminals_below = self .pane_ids_directly_below(id) .expect("can't reduce pane size up if there are no terminals below"); @@ -1751,29 +1302,30 @@ impl Tab { self.pane_is_between_vertical_borders(t, left_resize_border, right_resize_border) }); + // FIXME: This checks that we aren't violating the resize constraints of the aligned panes + // above and below this one. This should be moved to a `can_resize` function eventually. for terminal_id in terminals_to_the_left .iter() .chain(terminals_to_the_right.iter()) { let pane = self.panes.get(terminal_id).unwrap(); - if (pane.rows() as isize) - (count as isize) < pane.min_height() as isize { - // dirty, dirty hack - should be fixed by the resizing overhaul + if pane.current_geom().rows.as_percent().unwrap() - percent < RESIZE_PERCENT { return; } } - self.reduce_pane_height_up(id, count); + self.reduce_pane_height(id, percent); for terminal_id in terminals_below { - self.increase_pane_height_up(&terminal_id, count); + self.increase_pane_height(&terminal_id, percent); } for terminal_id in terminals_to_the_left .iter() .chain(terminals_to_the_right.iter()) { - self.reduce_pane_height_up(terminal_id, count); + self.reduce_pane_height(terminal_id, percent); } } - fn reduce_pane_and_surroundings_down(&mut self, id: &PaneId, count: usize) { + fn reduce_pane_and_surroundings_down(&mut self, id: &PaneId, percent: f64) { let mut terminals_above = self .pane_ids_directly_above(id) .expect("can't reduce pane size down if there are no terminals above"); @@ -1789,29 +1341,30 @@ impl Tab { self.pane_is_between_vertical_borders(t, left_resize_border, right_resize_border) }); + // FIXME: This checks that we aren't violating the resize constraints of the aligned panes + // above and below this one. This should be moved to a `can_resize` function eventually. for terminal_id in terminals_to_the_left .iter() .chain(terminals_to_the_right.iter()) { let pane = self.panes.get(terminal_id).unwrap(); - if (pane.rows() as isize) - (count as isize) < pane.min_height() as isize { - // dirty, dirty hack - should be fixed by the resizing overhaul + if pane.current_geom().rows.as_percent().unwrap() - percent < RESIZE_PERCENT { return; } } - self.reduce_pane_height_down(id, count); + self.reduce_pane_height(id, percent); for terminal_id in terminals_above { - self.increase_pane_height_down(&terminal_id, count); + self.increase_pane_height(&terminal_id, percent); } for terminal_id in terminals_to_the_left .iter() .chain(terminals_to_the_right.iter()) { - self.reduce_pane_height_down(terminal_id, count); + self.reduce_pane_height(terminal_id, percent); } } - fn reduce_pane_and_surroundings_right(&mut self, id: &PaneId, count: usize) { + fn reduce_pane_and_surroundings_right(&mut self, id: &PaneId, percent: f64) { let mut terminals_to_the_left = self .pane_ids_directly_left_of(id) .expect("can't reduce pane size right if there are no terminals to the left"); @@ -1827,23 +1380,24 @@ impl Tab { self.pane_is_between_horizontal_borders(t, top_resize_border, bottom_resize_border) }); + // FIXME: This checks that we aren't violating the resize constraints of the aligned panes + // above and below this one. This should be moved to a `can_resize` function eventually. for terminal_id in terminals_above.iter().chain(terminals_below.iter()) { let pane = self.panes.get(terminal_id).unwrap(); - if (pane.columns() as isize) - (count as isize) < pane.min_width() as isize { - // dirty, dirty hack - should be fixed by the resizing overhaul + if pane.current_geom().cols.as_percent().unwrap() - percent < RESIZE_PERCENT { return; } } - self.reduce_pane_width_right(id, count); + self.reduce_pane_width(id, percent); for terminal_id in terminals_to_the_left { - self.increase_pane_width_right(&terminal_id, count); + self.increase_pane_width(&terminal_id, percent); } for terminal_id in terminals_above.iter().chain(terminals_below.iter()) { - self.reduce_pane_width_right(terminal_id, count); + self.reduce_pane_width(terminal_id, percent); } } - fn reduce_pane_and_surroundings_left(&mut self, id: &PaneId, count: usize) { + fn reduce_pane_and_surroundings_left(&mut self, id: &PaneId, percent: f64) { let mut terminals_to_the_right = self .pane_ids_directly_right_of(id) .expect("can't reduce pane size left if there are no terminals to the right"); @@ -1859,23 +1413,24 @@ impl Tab { self.pane_is_between_horizontal_borders(t, top_resize_border, bottom_resize_border) }); + // FIXME: This checks that we aren't violating the resize constraints of the aligned panes + // above and below this one. This should be moved to a `can_resize` function eventually. for terminal_id in terminals_above.iter().chain(terminals_below.iter()) { let pane = self.panes.get(terminal_id).unwrap(); - if (pane.columns() as isize) - (count as isize) < pane.min_width() as isize { - // dirty, dirty hack - should be fixed by the resizing overhaul + if pane.current_geom().cols.as_percent().unwrap() - percent < RESIZE_PERCENT { return; } } - self.reduce_pane_width_left(id, count); + self.reduce_pane_width(id, percent); for terminal_id in terminals_to_the_right { - self.increase_pane_width_left(&terminal_id, count); + self.increase_pane_width(&terminal_id, percent); } for terminal_id in terminals_above.iter().chain(terminals_below.iter()) { - self.reduce_pane_width_left(terminal_id, count); + self.reduce_pane_width(terminal_id, percent); } } - fn increase_pane_and_surroundings_up(&mut self, id: &PaneId, count: usize) { + fn increase_pane_and_surroundings_up(&mut self, id: &PaneId, percent: f64) { let mut terminals_above = self .pane_ids_directly_above(id) .expect("can't increase pane size up if there are no terminals above"); @@ -1890,18 +1445,18 @@ impl Tab { terminals_above.retain(|t| { self.pane_is_between_vertical_borders(t, left_resize_border, right_resize_border) }); - self.increase_pane_height_up(id, count); + self.increase_pane_height(id, percent); for terminal_id in terminals_above { - self.reduce_pane_height_up(&terminal_id, count); + self.reduce_pane_height(&terminal_id, percent); } for terminal_id in terminals_to_the_left .iter() .chain(terminals_to_the_right.iter()) { - self.increase_pane_height_up(terminal_id, count); + self.increase_pane_height(terminal_id, percent); } } - fn increase_pane_and_surroundings_down(&mut self, id: &PaneId, count: usize) { + fn increase_pane_and_surroundings_down(&mut self, id: &PaneId, percent: f64) { let mut terminals_below = self .pane_ids_directly_below(id) .expect("can't increase pane size down if there are no terminals below"); @@ -1916,18 +1471,18 @@ impl Tab { terminals_below.retain(|t| { self.pane_is_between_vertical_borders(t, left_resize_border, right_resize_border) }); - self.increase_pane_height_down(id, count); + self.increase_pane_height(id, percent); for terminal_id in terminals_below { - self.reduce_pane_height_down(&terminal_id, count); + self.reduce_pane_height(&terminal_id, percent); } for terminal_id in terminals_to_the_left .iter() .chain(terminals_to_the_right.iter()) { - self.increase_pane_height_down(terminal_id, count); + self.increase_pane_height(terminal_id, percent); } } - fn increase_pane_and_surroundings_right(&mut self, id: &PaneId, count: usize) { + fn increase_pane_and_surroundings_right(&mut self, id: &PaneId, percent: f64) { let mut terminals_to_the_right = self .pane_ids_directly_right_of(id) .expect("can't increase pane size right if there are no terminals to the right"); @@ -1944,15 +1499,15 @@ impl Tab { terminals_to_the_right.retain(|t| { self.pane_is_between_horizontal_borders(t, top_resize_border, bottom_resize_border) }); - self.increase_pane_width_right(id, count); + self.increase_pane_width(id, percent); for terminal_id in terminals_to_the_right { - self.reduce_pane_width_right(&terminal_id, count); + self.reduce_pane_width(&terminal_id, percent); } for terminal_id in terminals_above.iter().chain(terminals_below.iter()) { - self.increase_pane_width_right(terminal_id, count); + self.increase_pane_width(terminal_id, percent); } } - fn increase_pane_and_surroundings_left(&mut self, id: &PaneId, count: usize) { + fn increase_pane_and_surroundings_left(&mut self, id: &PaneId, percent: f64) { let mut terminals_to_the_left = self .pane_ids_directly_left_of(id) .expect("can't increase pane size right if there are no terminals to the right"); @@ -1967,249 +1522,209 @@ impl Tab { terminals_to_the_left.retain(|t| { self.pane_is_between_horizontal_borders(t, top_resize_border, bottom_resize_border) }); - self.increase_pane_width_left(id, count); + self.increase_pane_width(id, percent); for terminal_id in terminals_to_the_left { - self.reduce_pane_width_left(&terminal_id, count); + self.reduce_pane_width(&terminal_id, percent); } for terminal_id in terminals_above.iter().chain(terminals_below.iter()) { - self.increase_pane_width_left(terminal_id, count); + self.increase_pane_width(terminal_id, percent); } } - fn can_increase_pane_and_surroundings_right( - &self, - pane_id: &PaneId, - increase_by: usize, - ) -> bool { - let pane = self.panes.get(pane_id).unwrap(); - let can_increase_pane_size = pane - .max_width() - .map(|max_width| pane.columns() + increase_by <= max_width) - .unwrap_or(true); // no max width, increase to your heart's content - if !can_increase_pane_size { - return false; - } - let mut new_pos_and_size_for_pane = pane.position_and_size(); - new_pos_and_size_for_pane.cols += increase_by; - + // FIXME: The if-let nesting and explicit `false`s are... suboptimal. + // FIXME: Quite a lot of duplication between these functions... + fn can_increase_pane_and_surroundings_right(&self, pane_id: &PaneId, increase_by: f64) -> bool { if let Some(panes_to_the_right) = self.pane_ids_directly_right_of(pane_id) { - return panes_to_the_right.iter().all(|id| { + panes_to_the_right.iter().all(|id| { let p = self.panes.get(id).unwrap(); - p.columns() > increase_by && p.columns() - increase_by >= p.min_width() - }); + if let Some(cols) = p.position_and_size().cols.as_percent() { + cols - increase_by >= RESIZE_PERCENT + } else { + false + } + }) } else { false } } - fn can_increase_pane_and_surroundings_left( - &self, - pane_id: &PaneId, - increase_by: usize, - ) -> bool { - let pane = self.panes.get(pane_id).unwrap(); - let can_increase_pane_size = pane - .max_width() - .map(|max_width| pane.columns() + increase_by <= max_width) - .unwrap_or(true); // no max width, increase to your heart's content - if !can_increase_pane_size { - return false; - } - let mut new_pos_and_size_for_pane = pane.position_and_size(); - new_pos_and_size_for_pane.x = new_pos_and_size_for_pane.x.saturating_sub(increase_by); - + fn can_increase_pane_and_surroundings_left(&self, pane_id: &PaneId, increase_by: f64) -> bool { if let Some(panes_to_the_left) = self.pane_ids_directly_left_of(pane_id) { - return panes_to_the_left.iter().all(|id| { + panes_to_the_left.iter().all(|id| { let p = self.panes.get(id).unwrap(); - p.columns() > increase_by && p.columns() - increase_by >= p.min_width() - }); + if let Some(cols) = p.position_and_size().cols.as_percent() { + cols - increase_by >= RESIZE_PERCENT + } else { + false + } + }) } else { false } } - fn can_increase_pane_and_surroundings_down( - &self, - pane_id: &PaneId, - increase_by: usize, - ) -> bool { - let pane = self.panes.get(pane_id).unwrap(); - let can_increase_pane_size = pane - .max_height() - .map(|max_height| pane.rows() + increase_by <= max_height) - .unwrap_or(true); // no max width, increase to your heart's content - if !can_increase_pane_size { - return false; - } - let mut new_pos_and_size_for_pane = pane.position_and_size(); - new_pos_and_size_for_pane.rows += increase_by; - + fn can_increase_pane_and_surroundings_down(&self, pane_id: &PaneId, increase_by: f64) -> bool { if let Some(panes_below) = self.pane_ids_directly_below(pane_id) { - return panes_below.iter().all(|id| { + panes_below.iter().all(|id| { let p = self.panes.get(id).unwrap(); - p.rows() > increase_by && p.rows() - increase_by >= p.min_height() - }); + if let Some(rows) = p.position_and_size().rows.as_percent() { + rows - increase_by >= RESIZE_PERCENT + } else { + false + } + }) } else { false } } - fn can_increase_pane_and_surroundings_up(&self, pane_id: &PaneId, increase_by: usize) -> bool { - let pane = self.panes.get(pane_id).unwrap(); - let can_increase_pane_size = pane - .max_height() - .map(|max_height| pane.rows() + increase_by <= max_height) - .unwrap_or(true); // no max width, increase to your heart's content - if !can_increase_pane_size { - return false; - } - let mut new_pos_and_size_for_pane = pane.position_and_size(); - new_pos_and_size_for_pane.y = new_pos_and_size_for_pane.y.saturating_sub(increase_by); - + fn can_increase_pane_and_surroundings_up(&self, pane_id: &PaneId, increase_by: f64) -> bool { if let Some(panes_above) = self.pane_ids_directly_above(pane_id) { - return panes_above.iter().all(|id| { + panes_above.iter().all(|id| { let p = self.panes.get(id).unwrap(); - p.rows() > increase_by && p.rows() - increase_by >= p.min_height() - }); + if let Some(rows) = p.position_and_size().rows.as_percent() { + rows - increase_by >= RESIZE_PERCENT + } else { + false + } + }) } else { false } } - fn can_reduce_pane_and_surroundings_right(&self, pane_id: &PaneId, reduce_by: usize) -> bool { + fn can_reduce_pane_and_surroundings_right(&self, pane_id: &PaneId, reduce_by: f64) -> bool { let pane = self.panes.get(pane_id).unwrap(); - let pane_columns = pane.columns(); - let can_reduce_pane_size = - pane_columns > reduce_by && pane_columns - reduce_by >= pane.min_width(); - if !can_reduce_pane_size { - return false; - } - if let Some(panes_to_the_left) = self.pane_ids_directly_left_of(pane_id) { - return panes_to_the_left.iter().all(|id| { - let p = self.panes.get(id).unwrap(); - p.max_width() - .map(|max_width| p.columns() + reduce_by <= max_width) - .unwrap_or(true) // no max width, increase to your heart's content - }); + if let Some(cols) = pane.position_and_size().cols.as_percent() { + let ids_left = self.pane_ids_directly_left_of(pane_id); + let flexible_left = self.ids_are_flexible(Direction::Horizontal, ids_left); + cols - reduce_by >= RESIZE_PERCENT && flexible_left } else { false } } - fn can_reduce_pane_and_surroundings_left(&self, pane_id: &PaneId, reduce_by: usize) -> bool { + fn can_reduce_pane_and_surroundings_left(&self, pane_id: &PaneId, reduce_by: f64) -> bool { let pane = self.panes.get(pane_id).unwrap(); - let pane_columns = pane.columns(); - let can_reduce_pane_size = - pane_columns > reduce_by && pane_columns - reduce_by >= pane.min_width(); - if !can_reduce_pane_size { - return false; - } - if let Some(panes_to_the_right) = self.pane_ids_directly_right_of(pane_id) { - return panes_to_the_right.iter().all(|id| { - let p = self.panes.get(id).unwrap(); - p.max_width() - .map(|max_width| p.columns() + reduce_by <= max_width) - .unwrap_or(true) // no max width, increase to your heart's content - }); + if let Some(cols) = pane.position_and_size().cols.as_percent() { + let ids_right = self.pane_ids_directly_right_of(pane_id); + let flexible_right = self.ids_are_flexible(Direction::Horizontal, ids_right); + cols - reduce_by >= RESIZE_PERCENT && flexible_right } else { false } } - fn can_reduce_pane_and_surroundings_down(&self, pane_id: &PaneId, reduce_by: usize) -> bool { + fn can_reduce_pane_and_surroundings_down(&self, pane_id: &PaneId, reduce_by: f64) -> bool { let pane = self.panes.get(pane_id).unwrap(); - let pane_rows = pane.rows(); - let can_reduce_pane_size = - pane_rows > reduce_by && pane_rows - reduce_by >= pane.min_height(); - if !can_reduce_pane_size { - return false; - } - if let Some(panes_above) = self.pane_ids_directly_above(pane_id) { - return panes_above.iter().all(|id| { - let p = self.panes.get(id).unwrap(); - p.max_height() - .map(|max_height| p.rows() + reduce_by <= max_height) - .unwrap_or(true) // no max height, increase to your heart's content - }); + if let Some(rows) = pane.position_and_size().rows.as_percent() { + let ids_above = self.pane_ids_directly_above(pane_id); + let flexible_above = self.ids_are_flexible(Direction::Vertical, ids_above); + rows - reduce_by >= RESIZE_PERCENT && flexible_above } else { false } } - fn can_reduce_pane_and_surroundings_up(&self, pane_id: &PaneId, reduce_by: usize) -> bool { + fn can_reduce_pane_and_surroundings_up(&self, pane_id: &PaneId, reduce_by: f64) -> bool { let pane = self.panes.get(pane_id).unwrap(); - let pane_rows = pane.rows(); - let can_reduce_pane_size = - pane_rows > reduce_by && pane_rows - reduce_by >= pane.min_height(); - if !can_reduce_pane_size { - return false; - } - if let Some(panes_below) = self.pane_ids_directly_below(pane_id) { - return panes_below.iter().all(|id| { - let p = self.panes.get(id).unwrap(); - p.max_height() - .map(|max_height| p.rows() + reduce_by <= max_height) - .unwrap_or(true) // no max height, increase to your heart's content - }); + if let Some(rows) = pane.position_and_size().rows.as_percent() { + let ids_below = self.pane_ids_directly_below(pane_id); + let flexible_below = self.ids_are_flexible(Direction::Vertical, ids_below); + rows - reduce_by >= RESIZE_PERCENT && flexible_below } else { false } } - pub fn resize_whole_tab(&mut self, new_screen_size: PositionAndSize) { - if self.fullscreen_is_active { - // this is not ideal, we can improve this - self.toggle_active_pane_fullscreen(); - } - if let Some((column_difference, row_difference)) = - PaneResizer::new(&mut self.panes, &mut self.os_api) - .resize(self.display_area, new_screen_size) - { - self.should_clear_display_before_rendering = true; - - self.viewport.cols = (self.viewport.cols as isize + column_difference) as usize; - self.viewport.rows = (self.viewport.rows as isize + row_difference) as usize; - self.display_area.cols = (self.display_area.cols as isize + column_difference) as usize; - self.display_area.rows = (self.display_area.rows as isize + row_difference) as usize; + fn ids_are_flexible(&self, direction: Direction, pane_ids: Option>) -> bool { + pane_ids.is_some() + && pane_ids.unwrap().iter().all(|id| { + let geom = self.panes[id].current_geom(); + let dimension = match direction { + Direction::Vertical => geom.rows, + Direction::Horizontal => geom.cols, + }; + !dimension.is_fixed() + }) + } + pub fn relayout_tab(&mut self, direction: Direction) { + let mut resizer = PaneResizer::new(&mut self.panes.iter_mut(), &mut self.os_api); + let result = match direction { + Direction::Horizontal => resizer.layout(direction, self.display_area.cols), + Direction::Vertical => resizer.layout(direction, self.display_area.rows), }; + if let Err(e) = &result { + log::error!("{:?} relayout of the tab failed: {}", direction, e); + } + self.set_pane_frames(self.draw_pane_frames); + } + pub fn resize_whole_tab(&mut self, new_screen_size: Size) { + // FIXME: I *think* that Rust 2021 will let me just write this: + // let panes = self.panes.iter_mut().filter(|(pid, _)| !self.panes_to_hide.contains(pid)); + // In the meantime, let's appease our borrow-checker overlords: + let temp_panes_to_hide = &self.panes_to_hide; + let panes = self + .panes + .iter_mut() + .filter(|(pid, _)| !temp_panes_to_hide.contains(pid)); + let Size { rows, cols } = new_screen_size; + let mut resizer = PaneResizer::new(panes, &mut self.os_api); + if resizer.layout(Direction::Horizontal, cols).is_ok() { + let column_difference = cols as isize - self.display_area.cols as isize; + // FIXME: Should the viewport be an Offset? + self.viewport.cols = (self.viewport.cols as isize + column_difference) as usize; + self.display_area.cols = cols; + } else { + log::error!("Failed to horizontally resize the tab!!!"); + } + if resizer.layout(Direction::Vertical, rows).is_ok() { + let row_difference = rows as isize - self.display_area.rows as isize; + self.viewport.rows = (self.viewport.rows as isize + row_difference) as usize; + self.display_area.rows = rows; + } else { + log::error!("Failed to vertically resize the tab!!!"); + } + self.should_clear_display_before_rendering = true; + self.set_pane_frames(self.draw_pane_frames); } pub fn resize_left(&mut self) { // TODO: find out by how much we actually reduced and only reduce by that much - let count = 10; if let Some(active_pane_id) = self.get_active_pane_id() { - if self.can_increase_pane_and_surroundings_left(&active_pane_id, count) { - self.increase_pane_and_surroundings_left(&active_pane_id, count); - } else if self.can_reduce_pane_and_surroundings_left(&active_pane_id, count) { - self.reduce_pane_and_surroundings_left(&active_pane_id, count); + if self.can_increase_pane_and_surroundings_left(&active_pane_id, RESIZE_PERCENT) { + self.increase_pane_and_surroundings_left(&active_pane_id, RESIZE_PERCENT); + } else if self.can_reduce_pane_and_surroundings_left(&active_pane_id, RESIZE_PERCENT) { + self.reduce_pane_and_surroundings_left(&active_pane_id, RESIZE_PERCENT); } } + self.relayout_tab(Direction::Horizontal); self.render(); } pub fn resize_right(&mut self) { // TODO: find out by how much we actually reduced and only reduce by that much - let count = 10; if let Some(active_pane_id) = self.get_active_pane_id() { - if self.can_increase_pane_and_surroundings_right(&active_pane_id, count) { - self.increase_pane_and_surroundings_right(&active_pane_id, count); - } else if self.can_reduce_pane_and_surroundings_right(&active_pane_id, count) { - self.reduce_pane_and_surroundings_right(&active_pane_id, count); + if self.can_increase_pane_and_surroundings_right(&active_pane_id, RESIZE_PERCENT) { + self.increase_pane_and_surroundings_right(&active_pane_id, RESIZE_PERCENT); + } else if self.can_reduce_pane_and_surroundings_right(&active_pane_id, RESIZE_PERCENT) { + self.reduce_pane_and_surroundings_right(&active_pane_id, RESIZE_PERCENT); } } + self.relayout_tab(Direction::Horizontal); self.render(); } pub fn resize_down(&mut self) { // TODO: find out by how much we actually reduced and only reduce by that much - let count = 2; if let Some(active_pane_id) = self.get_active_pane_id() { - if self.can_increase_pane_and_surroundings_down(&active_pane_id, count) { - self.increase_pane_and_surroundings_down(&active_pane_id, count); - } else if self.can_reduce_pane_and_surroundings_down(&active_pane_id, count) { - self.reduce_pane_and_surroundings_down(&active_pane_id, count); + if self.can_increase_pane_and_surroundings_down(&active_pane_id, RESIZE_PERCENT) { + self.increase_pane_and_surroundings_down(&active_pane_id, RESIZE_PERCENT); + } else if self.can_reduce_pane_and_surroundings_down(&active_pane_id, RESIZE_PERCENT) { + self.reduce_pane_and_surroundings_down(&active_pane_id, RESIZE_PERCENT); } } + self.relayout_tab(Direction::Vertical); self.render(); } pub fn resize_up(&mut self) { // TODO: find out by how much we actually reduced and only reduce by that much - let count = 2; if let Some(active_pane_id) = self.get_active_pane_id() { - if self.can_increase_pane_and_surroundings_up(&active_pane_id, count) { - self.increase_pane_and_surroundings_up(&active_pane_id, count); - } else if self.can_reduce_pane_and_surroundings_up(&active_pane_id, count) { - self.reduce_pane_and_surroundings_up(&active_pane_id, count); + if self.can_increase_pane_and_surroundings_up(&active_pane_id, RESIZE_PERCENT) { + self.increase_pane_and_surroundings_up(&active_pane_id, RESIZE_PERCENT); + } else if self.can_reduce_pane_and_surroundings_up(&active_pane_id, RESIZE_PERCENT) { + self.reduce_pane_and_surroundings_up(&active_pane_id, RESIZE_PERCENT); } } + self.relayout_tab(Direction::Vertical); self.render(); } pub fn move_focus(&mut self) { @@ -2451,7 +1966,7 @@ impl Tab { terminals.iter().fold(HashSet::new(), |mut borders, t| { let terminal = self.panes.get(t).unwrap(); borders.insert(terminal.y()); - borders.insert(terminal.y() + terminal.rows() + 1); // 1 for the border width + borders.insert(terminal.y() + terminal.rows()); borders }) } @@ -2459,28 +1974,32 @@ impl Tab { terminals.iter().fold(HashSet::new(), |mut borders, t| { let terminal = self.panes.get(t).unwrap(); borders.insert(terminal.x()); - borders.insert(terminal.x() + terminal.columns() + 1); // 1 for the border width + borders.insert(terminal.x() + terminal.cols()); borders }) } fn panes_to_the_left_between_aligning_borders(&self, id: PaneId) -> Option> { if let Some(terminal) = self.panes.get(&id) { let upper_close_border = terminal.y(); - let lower_close_border = terminal.y() + terminal.rows() + 1; + let lower_close_border = terminal.y() + terminal.rows(); - if let Some(mut terminals_to_the_left) = self.pane_ids_directly_left_of(&id) { - let terminal_borders_to_the_left = self.horizontal_borders(&terminals_to_the_left); + if let Some(terminals_to_the_left) = self.pane_ids_directly_left_of(&id) { + let mut selectable_panes: Vec<_> = terminals_to_the_left + .into_iter() + .filter(|pid| self.panes[pid].selectable()) + .collect(); + let terminal_borders_to_the_left = self.horizontal_borders(&selectable_panes); if terminal_borders_to_the_left.contains(&upper_close_border) && terminal_borders_to_the_left.contains(&lower_close_border) { - terminals_to_the_left.retain(|t| { + selectable_panes.retain(|t| { self.pane_is_between_horizontal_borders( t, upper_close_border, lower_close_border, ) }); - return Some(terminals_to_the_left); + return Some(selectable_panes); } } } @@ -2489,22 +2008,25 @@ impl Tab { fn panes_to_the_right_between_aligning_borders(&self, id: PaneId) -> Option> { if let Some(terminal) = self.panes.get(&id) { let upper_close_border = terminal.y(); - let lower_close_border = terminal.y() + terminal.rows() + 1; + let lower_close_border = terminal.y() + terminal.rows(); - if let Some(mut terminals_to_the_right) = self.pane_ids_directly_right_of(&id) { - let terminal_borders_to_the_right = - self.horizontal_borders(&terminals_to_the_right); + if let Some(terminals_to_the_right) = self.pane_ids_directly_right_of(&id) { + let mut selectable_panes: Vec<_> = terminals_to_the_right + .into_iter() + .filter(|pid| self.panes[pid].selectable()) + .collect(); + let terminal_borders_to_the_right = self.horizontal_borders(&selectable_panes); if terminal_borders_to_the_right.contains(&upper_close_border) && terminal_borders_to_the_right.contains(&lower_close_border) { - terminals_to_the_right.retain(|t| { + selectable_panes.retain(|t| { self.pane_is_between_horizontal_borders( t, upper_close_border, lower_close_border, ) }); - return Some(terminals_to_the_right); + return Some(selectable_panes); } } } @@ -2513,21 +2035,25 @@ impl Tab { fn panes_above_between_aligning_borders(&self, id: PaneId) -> Option> { if let Some(terminal) = self.panes.get(&id) { let left_close_border = terminal.x(); - let right_close_border = terminal.x() + terminal.columns() + 1; + let right_close_border = terminal.x() + terminal.cols(); - if let Some(mut terminals_above) = self.pane_ids_directly_above(&id) { - let terminal_borders_above = self.vertical_borders(&terminals_above); + if let Some(terminals_above) = self.pane_ids_directly_above(&id) { + let mut selectable_panes: Vec<_> = terminals_above + .into_iter() + .filter(|pid| self.panes[pid].selectable()) + .collect(); + let terminal_borders_above = self.vertical_borders(&selectable_panes); if terminal_borders_above.contains(&left_close_border) && terminal_borders_above.contains(&right_close_border) { - terminals_above.retain(|t| { + selectable_panes.retain(|t| { self.pane_is_between_vertical_borders( t, left_close_border, right_close_border, ) }); - return Some(terminals_above); + return Some(selectable_panes); } } } @@ -2536,21 +2062,25 @@ impl Tab { fn panes_below_between_aligning_borders(&self, id: PaneId) -> Option> { if let Some(terminal) = self.panes.get(&id) { let left_close_border = terminal.x(); - let right_close_border = terminal.x() + terminal.columns() + 1; + let right_close_border = terminal.x() + terminal.cols(); - if let Some(mut terminals_below) = self.pane_ids_directly_below(&id) { - let terminal_borders_below = self.vertical_borders(&terminals_below); + if let Some(terminals_below) = self.pane_ids_directly_below(&id) { + let mut selectable_panes: Vec<_> = terminals_below + .into_iter() + .filter(|pid| self.panes[pid].selectable()) + .collect(); + let terminal_borders_below = self.vertical_borders(&selectable_panes); if terminal_borders_below.contains(&left_close_border) && terminal_borders_below.contains(&right_close_border) { - terminals_below.retain(|t| { + selectable_panes.retain(|t| { self.pane_is_between_vertical_borders( t, left_close_border, right_close_border, ) }); - return Some(terminals_below); + return Some(selectable_panes); } } } @@ -2563,7 +2093,7 @@ impl Tab { self.senders .send_to_pty(PtyInstruction::ClosePane(pid)) .unwrap(); - self.close_pane_without_rerender(pid); + self.close_pane(pid); } } } @@ -2577,145 +2107,73 @@ impl Tab { self.active_terminal = self.next_active_pane(&self.get_pane_ids()) } } - } - pub fn set_pane_invisible_borders(&mut self, id: PaneId, invisible_borders: bool) { - if let Some(pane) = self.panes.get_mut(&id) { - pane.set_invisible_borders(invisible_borders); - } - } - pub fn set_pane_fixed_height(&mut self, id: PaneId, fixed_height: usize) { - if let Some(pane) = self.panes.get_mut(&id) { - pane.set_fixed_height(fixed_height); - } - } - pub fn set_pane_fixed_width(&mut self, id: PaneId, fixed_width: usize) { - if let Some(pane) = self.panes.get_mut(&id) { - pane.set_fixed_width(fixed_width); - } + // FIXME: This is a super, super nasty hack while borderless-ness is still tied to + // selectability. Delete this once those are decoupled + self.set_pane_frames(self.draw_pane_frames); + self.render(); } pub fn close_pane(&mut self, id: PaneId) { - if self.panes.get(&id).is_some() { - self.close_pane_without_rerender(id); - } - } - pub fn close_pane_without_rerender(&mut self, id: PaneId) { if self.fullscreen_is_active { self.toggle_active_pane_fullscreen(); } if let Some(pane_to_close) = self.panes.get(&id) { - let pane_to_close_width = pane_to_close.columns(); - let pane_to_close_height = pane_to_close.rows(); - if let Some(panes) = self.panes_to_the_left_between_aligning_borders(id) { - if panes.iter().all(|p| { - let pane = self.panes.get(p).unwrap(); - pane.can_increase_width_by(pane_to_close_width) - }) { + let freed_space = pane_to_close.position_and_size(); + if let (Some(freed_width), Some(freed_height)) = + (freed_space.cols.as_percent(), freed_space.rows.as_percent()) + { + if let Some(panes) = self.panes_to_the_left_between_aligning_borders(id) { + for pane_id in panes.iter() { + self.increase_pane_width(pane_id, freed_width); + } self.panes.remove(&id); if self.active_terminal == Some(id) { let next_active_pane = self.next_active_pane(&panes); self.active_terminal = next_active_pane; - if let Some(next_active_pane) = next_active_pane { - if self.is_the_only_selectable_pane(&next_active_pane) - && self.draw_pane_frames - { - let should_render_only_title = true; - self.panes - .get_mut(&next_active_pane) - .unwrap() - .show_boundaries_frame(should_render_only_title); - } - } - } - for pane_id in panes.iter() { - self.increase_pane_width_right(pane_id, pane_to_close_width); } + self.relayout_tab(Direction::Horizontal); return; } - } - if let Some(panes) = self.panes_to_the_right_between_aligning_borders(id) { - if panes.iter().all(|p| { - let pane = self.panes.get(p).unwrap(); - pane.can_increase_width_by(pane_to_close_width) - }) { + if let Some(panes) = self.panes_to_the_right_between_aligning_borders(id) { + for pane_id in panes.iter() { + self.increase_pane_width(pane_id, freed_width); + } self.panes.remove(&id); if self.active_terminal == Some(id) { let next_active_pane = self.next_active_pane(&panes); self.active_terminal = next_active_pane; - if let Some(next_active_pane) = next_active_pane { - if self.is_the_only_selectable_pane(&next_active_pane) - && self.draw_pane_frames - { - let should_render_only_title = true; - self.panes - .get_mut(&next_active_pane) - .unwrap() - .show_boundaries_frame(should_render_only_title); - } - } - } - for pane_id in panes.iter() { - self.increase_pane_width_left(pane_id, pane_to_close_width); } + self.relayout_tab(Direction::Horizontal); return; } - } - if let Some(panes) = self.panes_above_between_aligning_borders(id) { - if panes.iter().all(|p| { - let pane = self.panes.get(p).unwrap(); - pane.can_increase_height_by(pane_to_close_height) - }) { + if let Some(panes) = self.panes_above_between_aligning_borders(id) { + for pane_id in panes.iter() { + self.increase_pane_height(pane_id, freed_height); + } self.panes.remove(&id); if self.active_terminal == Some(id) { let next_active_pane = self.next_active_pane(&panes); self.active_terminal = next_active_pane; - if let Some(next_active_pane) = next_active_pane { - if self.is_the_only_selectable_pane(&next_active_pane) - && self.draw_pane_frames - { - let should_render_only_title = true; - self.panes - .get_mut(&next_active_pane) - .unwrap() - .show_boundaries_frame(should_render_only_title); - } - } - } - for pane_id in panes.iter() { - self.increase_pane_height_down(pane_id, pane_to_close_height); } + self.relayout_tab(Direction::Vertical); return; } - } - if let Some(panes) = self.panes_below_between_aligning_borders(id) { - if panes.iter().all(|p| { - let pane = self.panes.get(p).unwrap(); - pane.can_increase_height_by(pane_to_close_height) - }) { + if let Some(panes) = self.panes_below_between_aligning_borders(id) { + for pane_id in panes.iter() { + self.increase_pane_height(pane_id, freed_height); + } self.panes.remove(&id); if self.active_terminal == Some(id) { let next_active_pane = self.next_active_pane(&panes); self.active_terminal = next_active_pane; - if let Some(next_active_pane) = next_active_pane { - if self.is_the_only_selectable_pane(&next_active_pane) - && self.draw_pane_frames - { - let should_render_only_title = true; - self.panes - .get_mut(&next_active_pane) - .unwrap() - .show_boundaries_frame(should_render_only_title); - } - } - } - for pane_id in panes.iter() { - self.increase_pane_height_up(pane_id, pane_to_close_height); } + self.relayout_tab(Direction::Vertical); return; } } // if we reached here, this is either the last pane or there's some sort of // configuration error (eg. we're trying to close a pane surrounded by fixed panes) self.panes.remove(&id); + self.resize_whole_tab(self.display_area); } } pub fn close_focused_pane(&mut self) { @@ -2887,12 +2345,12 @@ impl Tab { .unwrap(); } fn is_inside_viewport(&self, pane_id: &PaneId) -> bool { - let pane_position_and_size = self.panes.get(pane_id).unwrap().position_and_size(); + let pane_position_and_size = self.panes.get(pane_id).unwrap().current_geom(); pane_position_and_size.y >= self.viewport.y - && pane_position_and_size.y + pane_position_and_size.rows + && pane_position_and_size.y + pane_position_and_size.rows.as_usize() <= self.viewport.y + self.viewport.rows } - fn offset_viewport(&mut self, position_and_size: &PositionAndSize) { + fn offset_viewport(&mut self, position_and_size: &Viewport) { if position_and_size.x == self.viewport.x && position_and_size.x + position_and_size.cols == self.viewport.x + self.viewport.cols { diff --git a/zellij-server/src/ui/boundaries.rs b/zellij-server/src/ui/boundaries.rs index b25f1cc0..a912664c 100644 --- a/zellij-server/src/ui/boundaries.rs +++ b/zellij-server/src/ui/boundaries.rs @@ -1,5 +1,4 @@ -use zellij_utils::pane_size::PositionAndSize; -use zellij_utils::zellij_tile; +use zellij_utils::{pane_size::Viewport, zellij_tile}; use crate::tab::Pane; use ansi_term::Colour::{Fixed, RGB}; @@ -39,10 +38,6 @@ impl BoundarySymbol { color: Some(PaletteColor::EightBit(colors::GRAY)), } } - pub fn invisible(mut self) -> Self { - self.invisible = true; - self - } pub fn color(&mut self, color: Option) -> Self { self.color = color; *self @@ -407,14 +402,14 @@ impl Coordinates { } pub struct Boundaries { - position_and_size: PositionAndSize, + viewport: Viewport, boundary_characters: HashMap, } impl Boundaries { - pub fn new(position_and_size: &PositionAndSize) -> Self { + pub fn new(viewport: Viewport) -> Self { Boundaries { - position_and_size: *position_and_size, + viewport, boundary_characters: HashMap::new(), } } @@ -429,26 +424,22 @@ impl Boundaries { }, false => None, }; - if rect.x() > self.position_and_size.x { + if rect.x() > self.viewport.x { // left boundary let boundary_x_coords = rect.x() - 1; let first_row_coordinates = self.rect_right_boundary_row_start(rect); let last_row_coordinates = self.rect_right_boundary_row_end(rect); for row in first_row_coordinates..last_row_coordinates { let coordinates = Coordinates::new(boundary_x_coords, row); - let mut symbol_to_add = - if row == first_row_coordinates && row != self.position_and_size.y { - BoundarySymbol::new(boundary_type::TOP_LEFT).color(color) - } else if row == last_row_coordinates - 1 - && row != self.position_and_size.y + self.position_and_size.rows - 1 - { - BoundarySymbol::new(boundary_type::BOTTOM_LEFT).color(color) - } else { - BoundarySymbol::new(boundary_type::VERTICAL).color(color) - }; - if rect.invisible_borders() { - symbol_to_add = symbol_to_add.invisible(); - } + let symbol_to_add = if row == first_row_coordinates && row != self.viewport.y { + BoundarySymbol::new(boundary_type::TOP_LEFT).color(color) + } else if row == last_row_coordinates - 1 + && row != self.viewport.y + self.viewport.rows - 1 + { + BoundarySymbol::new(boundary_type::BOTTOM_LEFT).color(color) + } else { + BoundarySymbol::new(boundary_type::VERTICAL).color(color) + }; let next_symbol = self .boundary_characters .remove(&coordinates) @@ -457,26 +448,20 @@ impl Boundaries { self.boundary_characters.insert(coordinates, next_symbol); } } - if rect.y() > self.position_and_size.y { + if rect.y() > self.viewport.y { // top boundary let boundary_y_coords = rect.y() - 1; let first_col_coordinates = self.rect_bottom_boundary_col_start(rect); let last_col_coordinates = self.rect_bottom_boundary_col_end(rect); for col in first_col_coordinates..last_col_coordinates { let coordinates = Coordinates::new(col, boundary_y_coords); - let mut symbol_to_add = if col == first_col_coordinates - && col != self.position_and_size.x - { + let symbol_to_add = if col == first_col_coordinates && col != self.viewport.x { BoundarySymbol::new(boundary_type::TOP_LEFT).color(color) - } else if col == last_col_coordinates - 1 && col != self.position_and_size.cols - 1 - { + } else if col == last_col_coordinates - 1 && col != self.viewport.cols - 1 { BoundarySymbol::new(boundary_type::TOP_RIGHT).color(color) } else { BoundarySymbol::new(boundary_type::HORIZONTAL).color(color) }; - if rect.invisible_borders() { - symbol_to_add = symbol_to_add.invisible(); - } let next_symbol = self .boundary_characters .remove(&coordinates) @@ -492,19 +477,15 @@ impl Boundaries { let last_row_coordinates = self.rect_right_boundary_row_end(rect); for row in first_row_coordinates..last_row_coordinates { let coordinates = Coordinates::new(boundary_x_coords, row); - let mut symbol_to_add = - if row == first_row_coordinates && row != self.position_and_size.y { - BoundarySymbol::new(boundary_type::TOP_RIGHT).color(color) - } else if row == last_row_coordinates - 1 - && row != self.position_and_size.y + self.position_and_size.rows - 1 - { - BoundarySymbol::new(boundary_type::BOTTOM_RIGHT).color(color) - } else { - BoundarySymbol::new(boundary_type::VERTICAL).color(color) - }; - if rect.invisible_borders() { - symbol_to_add = symbol_to_add.invisible(); - } + let symbol_to_add = if row == first_row_coordinates && row != self.viewport.y { + BoundarySymbol::new(boundary_type::TOP_RIGHT).color(color) + } else if row == last_row_coordinates - 1 + && row != self.viewport.y + self.viewport.rows - 1 + { + BoundarySymbol::new(boundary_type::BOTTOM_RIGHT).color(color) + } else { + BoundarySymbol::new(boundary_type::VERTICAL).color(color) + }; let next_symbol = self .boundary_characters .remove(&coordinates) @@ -520,19 +501,13 @@ impl Boundaries { let last_col_coordinates = self.rect_bottom_boundary_col_end(rect); for col in first_col_coordinates..last_col_coordinates { let coordinates = Coordinates::new(col, boundary_y_coords); - let mut symbol_to_add = if col == first_col_coordinates - && col != self.position_and_size.x - { + let symbol_to_add = if col == first_col_coordinates && col != self.viewport.x { BoundarySymbol::new(boundary_type::BOTTOM_LEFT).color(color) - } else if col == last_col_coordinates - 1 && col != self.position_and_size.cols - 1 - { + } else if col == last_col_coordinates - 1 && col != self.viewport.cols - 1 { BoundarySymbol::new(boundary_type::BOTTOM_RIGHT).color(color) } else { BoundarySymbol::new(boundary_type::HORIZONTAL).color(color) }; - if rect.invisible_borders() { - symbol_to_add = symbol_to_add.invisible(); - } let next_symbol = self .boundary_characters .remove(&coordinates) @@ -555,16 +530,16 @@ impl Boundaries { vte_output } fn rect_right_boundary_is_before_screen_edge(&self, rect: &dyn Pane) -> bool { - rect.x() + rect.columns() < self.position_and_size.cols + rect.x() + rect.cols() < self.viewport.cols } fn rect_bottom_boundary_is_before_screen_edge(&self, rect: &dyn Pane) -> bool { - rect.y() + rect.rows() < self.position_and_size.y + self.position_and_size.rows + rect.y() + rect.rows() < self.viewport.y + self.viewport.rows } fn rect_right_boundary_row_start(&self, rect: &dyn Pane) -> usize { - if rect.y() > self.position_and_size.y { + if rect.y() > self.viewport.y { rect.y() - 1 } else { - self.position_and_size.y + self.viewport.y } } fn rect_right_boundary_row_end(&self, rect: &dyn Pane) -> usize { @@ -578,12 +553,12 @@ impl Boundaries { } } fn rect_bottom_boundary_col_end(&self, rect: &dyn Pane) -> usize { - rect.x() + rect.columns() + rect.x() + rect.cols() } fn is_fully_inside_screen(&self, rect: &dyn Pane) -> bool { - rect.x() >= self.position_and_size.x - && rect.x() + rect.columns() <= self.position_and_size.x + self.position_and_size.cols - && rect.y() >= self.position_and_size.y - && rect.y() + rect.rows() <= self.position_and_size.y + self.position_and_size.rows + rect.x() >= self.viewport.x + && rect.x() + rect.cols() <= self.viewport.x + self.viewport.cols + && rect.y() >= self.viewport.y + && rect.y() + rect.rows() <= self.viewport.y + self.viewport.rows } } diff --git a/zellij-server/src/ui/mod.rs b/zellij-server/src/ui/mod.rs index beb70bf0..6ebc4683 100644 --- a/zellij-server/src/ui/mod.rs +++ b/zellij-server/src/ui/mod.rs @@ -1,4 +1,3 @@ pub mod boundaries; pub mod pane_boundaries_frame; pub mod pane_resizer; -pub mod pane_resizer_beta; diff --git a/zellij-server/src/ui/pane_boundaries_frame.rs b/zellij-server/src/ui/pane_boundaries_frame.rs index 0ae454d9..d3cd6d5a 100644 --- a/zellij-server/src/ui/pane_boundaries_frame.rs +++ b/zellij-server/src/ui/pane_boundaries_frame.rs @@ -1,7 +1,7 @@ use crate::ui::boundaries::boundary_type; use ansi_term::Colour::{Fixed, RGB}; use ansi_term::Style; -use zellij_utils::pane_size::PositionAndSize; +use zellij_utils::pane_size::Viewport; use zellij_utils::zellij_tile::prelude::PaletteColor; fn color_string(character: &str, color: Option) -> String { @@ -18,93 +18,15 @@ fn color_string(character: &str, color: Option) -> String { } } -pub struct PaneBoundariesFrame { - pub position_and_size: PositionAndSize, - base_title: String, - title: String, - scroll_position: (usize, usize), // (position, length) +#[derive(Default, PartialEq)] +pub struct PaneFrame { + pub geom: Viewport, + pub title: String, + pub scroll_position: (usize, usize), // (position, length) pub color: Option, - draw_title_only: bool, - should_render: bool, } -impl PaneBoundariesFrame { - pub fn new(position_and_size: PositionAndSize, title: String) -> Self { - PaneBoundariesFrame { - position_and_size, - color: None, - base_title: title.clone(), - title, - scroll_position: (0, 0), - draw_title_only: false, - should_render: true, - } - } - pub fn frame_title_only(mut self) -> Self { - // TODO: remove this? - self.draw_title_only = true; - self.should_render = true; - self - } - pub fn render_only_title(&mut self, should_render_only_title: bool) { - if should_render_only_title != self.draw_title_only { - self.should_render = true; - self.draw_title_only = should_render_only_title; - } - } - pub fn change_pos_and_size(&mut self, position_and_size: PositionAndSize) { - if position_and_size != self.position_and_size { - self.position_and_size = position_and_size; - self.should_render = true; - } - } - pub fn set_color(&mut self, color: Option) { - if color != self.color { - self.color = color; - self.should_render = true; - } - } - pub fn update_scroll(&mut self, scroll_position: (usize, usize)) { - if scroll_position != self.scroll_position { - self.scroll_position = scroll_position; - self.should_render = true; - } - } - pub fn update_title(&mut self, title: Option<&String>) { - match title { - Some(title) => { - if title != &self.title { - self.title = title.clone(); - self.should_render = true; - } - } - None => { - self.title = self.base_title.clone(); - self.should_render = true; - } - } - } - pub fn content_position_and_size(&self) -> PositionAndSize { - if self.draw_title_only { - self.position_and_size.reduce_top_line() - } else { - self.position_and_size.reduce_outer_frame(1) - } - } - pub fn content_offset(&self) -> (usize, usize) { - // (column_difference, row_difference) - let content_position_and_size = self.content_position_and_size(); - let column_difference = content_position_and_size - .x - .saturating_sub(self.position_and_size.x); - let row_difference = content_position_and_size - .y - .saturating_sub(self.position_and_size.y); - (column_difference, row_difference) - } - pub fn set_should_render(&mut self, should_render: bool) { - self.should_render = should_render; - } +impl PaneFrame { fn render_title_right_side(&self, max_length: usize) -> Option { if self.scroll_position.0 > 0 || self.scroll_position.1 > 0 { let prefix = " SCROLL: "; @@ -156,17 +78,9 @@ impl PaneBoundariesFrame { } } fn render_title(&self, vte_output: &mut String) { - let total_title_length = self.position_and_size.cols - 2; // 2 for the left and right corners - let left_boundary = if self.draw_title_only { - boundary_type::HORIZONTAL - } else { - boundary_type::TOP_LEFT - }; - let right_boundary = if self.draw_title_only { - boundary_type::HORIZONTAL - } else { - boundary_type::TOP_RIGHT - }; + let total_title_length = self.geom.cols.saturating_sub(2); // 2 for the left and right corners + let left_boundary = boundary_type::TOP_LEFT; + let right_boundary = boundary_type::TOP_RIGHT; let left_side = self.render_title_left_side(total_title_length); let right_side = left_side.as_ref().and_then(|left_side| { let space_left = total_title_length.saturating_sub(left_side.chars().count() + 1); // 1 for a middle separator @@ -205,73 +119,60 @@ impl PaneBoundariesFrame { }; vte_output.push_str(&format!( "\u{1b}[{};{}H\u{1b}[m{}", - self.position_and_size.y + 1, // +1 because goto is 1 indexed - self.position_and_size.x + 1, // +1 because goto is 1 indexed + self.geom.y + 1, // +1 because goto is 1 indexed + self.geom.x + 1, // +1 because goto is 1 indexed color_string(&title_text, self.color), )); // goto row/col + boundary character } - pub fn render(&mut self) -> Option { - if !self.should_render { - return None; - } + pub fn render(&self) -> String { let mut vte_output = String::new(); - if self.draw_title_only { - self.render_title(&mut vte_output); - } else { - for row in - self.position_and_size.y..(self.position_and_size.y + self.position_and_size.rows) - { - if row == self.position_and_size.y { - // top row - self.render_title(&mut vte_output); - } else if row == self.position_and_size.y + self.position_and_size.rows - 1 { - // bottom row - for col in self.position_and_size.x - ..(self.position_and_size.x + self.position_and_size.cols) - { - if col == self.position_and_size.x { - // bottom left corner - vte_output.push_str(&format!( - "\u{1b}[{};{}H\u{1b}[m{}", - row + 1, // +1 because goto is 1 indexed - col + 1, - color_string(boundary_type::BOTTOM_LEFT, self.color), - )); // goto row/col + boundary character - } else if col == self.position_and_size.x + self.position_and_size.cols - 1 - { - // bottom right corner - vte_output.push_str(&format!( - "\u{1b}[{};{}H\u{1b}[m{}", - row + 1, // +1 because goto is 1 indexed - col + 1, - color_string(boundary_type::BOTTOM_RIGHT, self.color), - )); // goto row/col + boundary character - } else { - vte_output.push_str(&format!( - "\u{1b}[{};{}H\u{1b}[m{}", - row + 1, // +1 because goto is 1 indexed - col + 1, - color_string(boundary_type::HORIZONTAL, self.color), - )); // goto row/col + boundary character - } + for row in self.geom.y..(self.geom.y + self.geom.rows) { + if row == self.geom.y { + // top row + self.render_title(&mut vte_output); + } else if row == self.geom.y + self.geom.rows - 1 { + // bottom row + for col in self.geom.x..(self.geom.x + self.geom.cols) { + if col == self.geom.x { + // bottom left corner + vte_output.push_str(&format!( + "\u{1b}[{};{}H\u{1b}[m{}", + row + 1, // +1 because goto is 1 indexed + col + 1, + color_string(boundary_type::BOTTOM_LEFT, self.color), + )); // goto row/col + boundary character + } else if col == self.geom.x + self.geom.cols - 1 { + // bottom right corner + vte_output.push_str(&format!( + "\u{1b}[{};{}H\u{1b}[m{}", + row + 1, // +1 because goto is 1 indexed + col + 1, + color_string(boundary_type::BOTTOM_RIGHT, self.color), + )); // goto row/col + boundary character + } else { + vte_output.push_str(&format!( + "\u{1b}[{};{}H\u{1b}[m{}", + row + 1, // +1 because goto is 1 indexed + col + 1, + color_string(boundary_type::HORIZONTAL, self.color), + )); // goto row/col + boundary character } - } else { - vte_output.push_str(&format!( - "\u{1b}[{};{}H\u{1b}[m{}", - row + 1, // +1 because goto is 1 indexed - self.position_and_size.x + 1, - color_string(boundary_type::VERTICAL, self.color), - )); // goto row/col + boundary character - vte_output.push_str(&format!( - "\u{1b}[{};{}H\u{1b}[m{}", - row + 1, // +1 because goto is 1 indexed - self.position_and_size.x + self.position_and_size.cols, - color_string(boundary_type::VERTICAL, self.color), - )); // goto row/col + boundary character } + } else { + vte_output.push_str(&format!( + "\u{1b}[{};{}H\u{1b}[m{}", + row + 1, // +1 because goto is 1 indexed + self.geom.x + 1, + color_string(boundary_type::VERTICAL, self.color), + )); // goto row/col + boundary character + vte_output.push_str(&format!( + "\u{1b}[{};{}H\u{1b}[m{}", + row + 1, // +1 because goto is 1 indexed + self.geom.x + self.geom.cols, + color_string(boundary_type::VERTICAL, self.color), + )); // goto row/col + boundary character } } - self.should_render = false; - Some(vte_output) + vte_output } } diff --git a/zellij-server/src/ui/pane_resizer.rs b/zellij-server/src/ui/pane_resizer.rs index 1b5ddabf..0213f6d5 100644 --- a/zellij-server/src/ui/pane_resizer.rs +++ b/zellij-server/src/ui/pane_resizer.rs @@ -1,537 +1,253 @@ use crate::{os_input_output::ServerOsApi, panes::PaneId, tab::Pane}; -use std::{ - cmp::Ordering, - collections::{BTreeMap, HashSet}, +use cassowary::{ + strength::{REQUIRED, STRONG}, + Expression, Solver, Variable, + WeightedRelation::EQ, +}; +use std::collections::{HashMap, HashSet}; +use zellij_utils::{ + input::layout::Direction, + pane_size::{Constraint, Dimension, PaneGeom}, }; -use zellij_utils::pane_size::PositionAndSize; -pub(crate) struct PaneResizer<'a> { - panes: &'a mut BTreeMap>, +pub struct PaneResizer<'a> { + panes: HashMap<&'a PaneId, &'a mut Box>, os_api: &'a mut Box, + vars: HashMap, + solver: Solver, } -// TODO: currently there are some functions here duplicated with Tab -// all resizing functions should move here +// FIXME: Just hold a mutable Pane reference instead of the PaneId, fixed, pos, and size? +// Do this after panes are no longer trait-objects! +#[derive(Debug, Clone, Copy)] +struct Span { + pid: PaneId, + direction: Direction, + pos: usize, + size: Dimension, + size_var: Variable, +} + +type Grid = Vec>; impl<'a> PaneResizer<'a> { pub fn new( - panes: &'a mut BTreeMap>, + panes: impl Iterator)>, os_api: &'a mut Box, ) -> Self { - PaneResizer { panes, os_api } + let panes: HashMap<_, _> = panes.collect(); + let mut vars = HashMap::new(); + for &&k in panes.keys() { + vars.insert(k, Variable::new()); + } + PaneResizer { + panes, + os_api, + vars, + solver: Solver::new(), + } } - pub fn resize( - &mut self, - mut current_size: PositionAndSize, - new_size: PositionAndSize, - ) -> Option<(isize, isize)> { - // (column_difference, row_difference) - let mut successfully_resized = false; - let mut column_difference: isize = 0; - let mut row_difference: isize = 0; - match new_size.cols.cmp(¤t_size.cols) { - Ordering::Greater => { - let increase_by = new_size.cols - current_size.cols; - if let Some(panes_to_resize) = find_increasable_vertical_chain( - self.panes, - increase_by, - current_size.cols, - current_size.rows, - ) { - self.increase_panes_right_and_push_adjacents_right( - panes_to_resize, - increase_by, - ); - column_difference = new_size.cols as isize - current_size.cols as isize; - current_size.cols = (current_size.cols as isize + column_difference) as usize; - successfully_resized = true; - }; + + pub fn layout(&mut self, direction: Direction, space: usize) -> Result<(), String> { + self.solver.reset(); + let grid = self.solve(direction, space)?; + let spans = self.discretize_spans(grid, space)?; + self.apply_spans(spans); + Ok(()) + } + + fn solve(&mut self, direction: Direction, space: usize) -> Result { + let grid: Grid = self + .grid_boundaries(direction) + .into_iter() + .map(|b| self.spans_in_boundary(direction, b)) + .collect(); + + let constraints: HashSet<_> = grid + .iter() + .flat_map(|s| constrain_spans(space, s)) + .collect(); + + self.solver + .add_constraints(&constraints) + .map_err(|e| format!("{:?}", e))?; + + Ok(grid) + } + + fn discretize_spans(&mut self, mut grid: Grid, space: usize) -> Result, String> { + let mut rounded_sizes: HashMap<_, _> = grid + .iter() + .flatten() + .map(|s| { + ( + s.size_var, + stable_round(self.solver.get_value(s.size_var)) as isize, + ) + }) + .collect(); + + // Round f64 pane sizes to usize without gaps or overlap + let mut finalised = Vec::new(); + for spans in grid.iter_mut() { + let rounded_size: isize = spans.iter().map(|s| rounded_sizes[&s.size_var]).sum(); + let mut error = space as isize - rounded_size; + let mut flex_spans: Vec<_> = spans + .iter_mut() + .filter(|s| !s.size.is_fixed() && !finalised.contains(&s.pid)) + .collect(); + flex_spans.sort_by_key(|s| rounded_sizes[&s.size_var]); + if error < 0 { + flex_spans.reverse(); } - Ordering::Less => { - let reduce_by = current_size.cols - new_size.cols; - if let Some(panes_to_resize) = find_reducible_vertical_chain( - self.panes, - reduce_by, - current_size.cols, - current_size.rows, - ) { - self.reduce_panes_left_and_pull_adjacents_left(panes_to_resize, reduce_by); - column_difference = new_size.cols as isize - current_size.cols as isize; - current_size.cols = (current_size.cols as isize + column_difference) as usize; - successfully_resized = true; - }; + for span in flex_spans { + rounded_sizes + .entry(span.size_var) + .and_modify(|s| *s += error.signum()); + error -= error.signum(); } - Ordering::Equal => (), + finalised.extend(spans.iter().map(|s| s.pid)); } - match new_size.rows.cmp(¤t_size.rows) { - Ordering::Greater => { - let increase_by = new_size.rows - current_size.rows; - if let Some(panes_to_resize) = find_increasable_horizontal_chain( - self.panes, - increase_by, - current_size.cols, - current_size.rows, - ) { - self.increase_panes_down_and_push_down_adjacents(panes_to_resize, increase_by); - row_difference = new_size.rows as isize - current_size.rows as isize; - current_size.rows = (current_size.rows as isize + row_difference) as usize; - successfully_resized = true; - }; + + // Update span positions based on their rounded sizes + for spans in grid.iter_mut() { + let mut offset = 0; + for span in spans.iter_mut() { + span.pos = offset; + let sz = rounded_sizes[&span.size_var]; + if sz < 1 { + return Err("Ran out of room for spans".into()); + } + span.size.set_inner(sz as usize); + offset += span.size.as_usize(); } - Ordering::Less => { - let reduce_by = current_size.rows - new_size.rows; - if let Some(panes_to_resize) = find_reducible_horizontal_chain( - self.panes, - reduce_by, - current_size.cols, - current_size.rows, - ) { - self.reduce_panes_up_and_pull_adjacents_up(panes_to_resize, reduce_by); - row_difference = new_size.rows as isize - current_size.rows as isize; - current_size.rows = (current_size.rows as isize + row_difference) as usize; - successfully_resized = true; - }; - } - Ordering::Equal => (), } - if successfully_resized { - Some((column_difference, row_difference)) + + Ok(grid.into_iter().flatten().collect()) + } + + fn apply_spans(&mut self, spans: Vec) { + for span in spans { + let pane = self.panes.get_mut(&span.pid).unwrap(); + let new_geom = match span.direction { + Direction::Horizontal => PaneGeom { + x: span.pos, + cols: span.size, + ..pane.current_geom() + }, + Direction::Vertical => PaneGeom { + y: span.pos, + rows: span.size, + ..pane.current_geom() + }, + }; + if pane.geom_override().is_some() { + pane.get_geom_override(new_geom); + } else { + pane.set_geom(new_geom); + } + if let PaneId::Terminal(pid) = pane.pid() { + self.os_api.set_terminal_size_using_fd( + pid, + pane.get_content_columns() as u16, + pane.get_content_rows() as u16, + ); + } + } + } + + // FIXME: Functions like this should have unit tests! + fn grid_boundaries(&self, direction: Direction) -> Vec<(usize, usize)> { + // Select the spans running *perpendicular* to the direction of resize + let spans: Vec = self + .panes + .values() + .map(|p| self.get_span(!direction, p.as_ref())) + .collect(); + + let mut last_edge = 0; + let mut bounds = Vec::new(); + let mut edges: Vec = spans.iter().map(|s| s.pos + s.size.as_usize()).collect(); + edges.sort_unstable(); + edges.dedup(); + for next in edges { + let next_edge = next; + bounds.push((last_edge, next_edge)); + last_edge = next_edge; + } + bounds + } + + fn spans_in_boundary(&self, direction: Direction, boundary: (usize, usize)) -> Vec { + let bwn = |v, (s, e)| s <= v && v < e; + let mut spans: Vec<_> = self + .panes + .values() + .filter(|p| { + let s = self.get_span(!direction, p.as_ref()); + let span_bounds = (s.pos, s.pos + s.size.as_usize()); + bwn(span_bounds.0, boundary) + || (bwn(boundary.0, span_bounds) + && (bwn(boundary.1, span_bounds) || boundary.1 == span_bounds.1)) + }) + .map(|p| self.get_span(direction, p.as_ref())) + .collect(); + spans.sort_unstable_by_key(|s| s.pos); + spans + } + + fn get_span(&self, direction: Direction, pane: &dyn Pane) -> Span { + let pas = pane.current_geom(); + let size_var = self.vars[&pane.pid()]; + match direction { + Direction::Horizontal => Span { + pid: pane.pid(), + direction, + pos: pas.x, + size: pas.cols, + size_var, + }, + Direction::Vertical => Span { + pid: pane.pid(), + direction, + pos: pas.y, + size: pas.rows, + size_var, + }, + } + } +} + +fn constrain_spans(space: usize, spans: &[Span]) -> HashSet { + let mut constraints = HashSet::new(); + + // Calculating "flexible" space (space not consumed by fixed-size spans) + let new_flex_space = spans.iter().fold(space, |a, s| { + if let Constraint::Fixed(sz) = s.size.constraint { + a.saturating_sub(sz) } else { - None - } - } - fn reduce_panes_left_and_pull_adjacents_left( - &mut self, - panes_to_reduce: Vec, - reduce_by: usize, - ) { - let mut pulled_panes: HashSet = HashSet::new(); - for pane_id in panes_to_reduce { - let (pane_x, pane_y, pane_columns, pane_rows) = { - let pane = self.panes.get(&pane_id).unwrap(); - (pane.x(), pane.y(), pane.columns(), pane.rows()) - }; - let panes_to_pull = self.panes.values_mut().filter(|p| { - p.x() >= pane_x + pane_columns - && (p.y() <= pane_y && p.y() + p.rows() >= pane_y - || p.y() >= pane_y && p.y() + p.rows() <= pane_y + pane_rows) - }); - for pane in panes_to_pull { - if !pulled_panes.contains(&pane.pid()) { - pane.pull_left(reduce_by); - pulled_panes.insert(pane.pid()); - } - } - self.reduce_pane_width_left(&pane_id, reduce_by); - } - } - fn reduce_panes_up_and_pull_adjacents_up( - &mut self, - panes_to_reduce: Vec, - reduce_by: usize, - ) { - let mut pulled_panes: HashSet = HashSet::new(); - for pane_id in panes_to_reduce { - let (pane_x, pane_y, pane_columns, pane_rows) = { - let pane = self.panes.get(&pane_id).unwrap(); - (pane.x(), pane.y(), pane.columns(), pane.rows()) - }; - let panes_to_pull = self.panes.values_mut().filter(|p| { - p.y() >= pane_y + pane_rows - && (p.x() <= pane_x && p.x() + p.columns() >= pane_x - || p.x() >= pane_x && p.x() + p.columns() <= pane_x + pane_columns) - }); - for pane in panes_to_pull { - if !pulled_panes.contains(&pane.pid()) { - pane.pull_up(reduce_by); - pulled_panes.insert(pane.pid()); - } - } - self.reduce_pane_height_up(&pane_id, reduce_by); - } - } - fn increase_panes_down_and_push_down_adjacents( - &mut self, - panes_to_increase: Vec, - increase_by: usize, - ) { - let mut pushed_panes: HashSet = HashSet::new(); - for pane_id in panes_to_increase { - let (pane_x, pane_y, pane_columns, pane_rows) = { - let pane = self.panes.get(&pane_id).unwrap(); - (pane.x(), pane.y(), pane.columns(), pane.rows()) - }; - let panes_to_push = self.panes.values_mut().filter(|p| { - p.y() >= pane_y + pane_rows - && (p.x() <= pane_x && p.x() + p.columns() >= pane_x - || p.x() >= pane_x && p.x() + p.columns() <= pane_x + pane_columns) - }); - for pane in panes_to_push { - if !pushed_panes.contains(&pane.pid()) { - pane.push_down(increase_by); - pushed_panes.insert(pane.pid()); - } - } - self.increase_pane_height_down(&pane_id, increase_by); - } - } - fn increase_panes_right_and_push_adjacents_right( - &mut self, - panes_to_increase: Vec, - increase_by: usize, - ) { - let mut pushed_panes: HashSet = HashSet::new(); - for pane_id in panes_to_increase { - let (pane_x, pane_y, pane_columns, pane_rows) = { - let pane = self.panes.get(&pane_id).unwrap(); - (pane.x(), pane.y(), pane.columns(), pane.rows()) - }; - let panes_to_push = self.panes.values_mut().filter(|p| { - p.x() >= pane_x + pane_columns - && (p.y() <= pane_y && p.y() + p.rows() >= pane_y - || p.y() >= pane_y && p.y() + p.rows() <= pane_y + pane_rows) - }); - for pane in panes_to_push { - if !pushed_panes.contains(&pane.pid()) { - pane.push_right(increase_by); - pushed_panes.insert(pane.pid()); - } - } - self.increase_pane_width_right(&pane_id, increase_by); - } - } - fn reduce_pane_height_up(&mut self, id: &PaneId, count: usize) { - let pane = self.panes.get_mut(id).unwrap(); - pane.reduce_height_up(count); - if let PaneId::Terminal(pid) = id { - self.os_api.set_terminal_size_using_fd( - *pid, - pane.get_content_columns() as u16, - pane.get_content_rows() as u16, - ); - } - } - fn increase_pane_height_down(&mut self, id: &PaneId, count: usize) { - let pane = self.panes.get_mut(id).unwrap(); - pane.increase_height_down(count); - if let PaneId::Terminal(pid) = pane.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - pane.get_content_columns() as u16, - pane.get_content_rows() as u16, - ); - } - } - fn increase_pane_width_right(&mut self, id: &PaneId, count: usize) { - let pane = self.panes.get_mut(id).unwrap(); - pane.increase_width_right(count); - if let PaneId::Terminal(pid) = pane.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - pane.get_content_columns() as u16, - pane.get_content_rows() as u16, - ); - } - } - fn reduce_pane_width_left(&mut self, id: &PaneId, count: usize) { - let pane = self.panes.get_mut(id).unwrap(); - pane.reduce_width_left(count); - if let PaneId::Terminal(pid) = pane.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - pane.get_content_columns() as u16, - pane.get_content_rows() as u16, - ); + a } + }); + + // Spans must use all of the available space + let full_size = spans + .iter() + .fold(Expression::from_constant(0.0), |acc, s| acc + s.size_var); + constraints.insert(full_size | EQ(REQUIRED) | space as f64); + + // Try to maintain ratios and lock non-flexible sizes + for span in spans { + match span.size.constraint { + Constraint::Fixed(s) => constraints.insert(span.size_var | EQ(REQUIRED) | s as f64), + Constraint::Percent(p) => constraints + .insert((span.size_var / new_flex_space as f64) | EQ(STRONG) | (p / 100.0)), + }; } + + constraints } -fn find_next_increasable_horizontal_pane( - panes: &BTreeMap>, - right_of: &dyn Pane, - increase_by: usize, -) -> Option { - let next_pane_candidates = panes.values().filter( - |p| p.x() == right_of.x() + right_of.columns() && p.horizontally_overlaps_with(right_of), // TODO: the name here is wrong, it should be vertically_overlaps_with - ); - let resizable_candidates = - next_pane_candidates.filter(|p| p.can_increase_height_by(increase_by)); - resizable_candidates.fold(None, |next_pane_id, p| match next_pane_id { - Some(next_pane) => { - let next_pane = panes.get(&next_pane).unwrap(); - if next_pane.y() < p.y() { - next_pane_id - } else { - Some(p.pid()) - } - } - None => Some(p.pid()), - }) -} - -fn find_next_increasable_vertical_pane( - panes: &BTreeMap>, - below: &dyn Pane, - increase_by: usize, -) -> Option { - let next_pane_candidates = panes.values().filter( - |p| p.y() == below.y() + below.rows() && p.vertically_overlaps_with(below), // TODO: the name here is wrong, it should be horizontally_overlaps_with - ); - let resizable_candidates = - next_pane_candidates.filter(|p| p.can_increase_width_by(increase_by)); - resizable_candidates.fold(None, |next_pane_id, p| match next_pane_id { - Some(next_pane) => { - let next_pane = panes.get(&next_pane).unwrap(); - if next_pane.x() < p.x() { - next_pane_id - } else { - Some(p.pid()) - } - } - None => Some(p.pid()), - }) -} - -fn find_next_reducible_vertical_pane( - panes: &BTreeMap>, - below: &dyn Pane, - reduce_by: usize, -) -> Option { - let next_pane_candidates = panes.values().filter( - |p| p.y() == below.y() + below.rows() && p.vertically_overlaps_with(below), // TODO: the name here is wrong, it should be horizontally_overlaps_with - ); - let resizable_candidates = next_pane_candidates.filter(|p| p.can_reduce_width_by(reduce_by)); - resizable_candidates.fold(None, |next_pane_id, p| match next_pane_id { - Some(next_pane) => { - let next_pane = panes.get(&next_pane).unwrap(); - if next_pane.x() < p.x() { - next_pane_id - } else { - Some(p.pid()) - } - } - None => Some(p.pid()), - }) -} - -fn find_next_reducible_horizontal_pane( - panes: &BTreeMap>, - right_of: &dyn Pane, - reduce_by: usize, -) -> Option { - let next_pane_candidates = panes.values().filter( - |p| p.x() == right_of.x() + right_of.columns() && p.horizontally_overlaps_with(right_of), // TODO: the name here is wrong, it should be vertically_overlaps_with - ); - let resizable_candidates = next_pane_candidates.filter(|p| p.can_reduce_height_by(reduce_by)); - resizable_candidates.fold(None, |next_pane_id, p| match next_pane_id { - Some(next_pane) => { - let next_pane = panes.get(&next_pane).unwrap(); - if next_pane.y() < p.y() { - next_pane_id - } else { - Some(p.pid()) - } - } - None => Some(p.pid()), - }) -} - -fn find_increasable_horizontal_chain( - panes: &BTreeMap>, - increase_by: usize, - screen_width: usize, - screen_height: usize, // TODO: this is the previous size (make this clearer) -) -> Option> { - let mut horizontal_coordinate = 0; - loop { - if horizontal_coordinate == screen_height { - return None; - } - - match panes - .values() - .find(|p| p.x() == 0 && p.y() == horizontal_coordinate) - { - Some(leftmost_pane) => { - if !leftmost_pane.can_increase_height_by(increase_by) { - horizontal_coordinate = leftmost_pane.y() + leftmost_pane.rows(); - continue; - } - let mut panes_to_resize = vec![]; - let mut current_pane = leftmost_pane; - loop { - panes_to_resize.push(current_pane.pid()); - if current_pane.x() + current_pane.columns() == screen_width { - return Some(panes_to_resize); - } - match find_next_increasable_horizontal_pane( - panes, - current_pane.as_ref(), - increase_by, - ) { - Some(next_pane_id) => { - current_pane = panes.get(&next_pane_id).unwrap(); - } - None => { - horizontal_coordinate = leftmost_pane.y() + leftmost_pane.rows(); - break; - } - }; - } - } - None => { - return None; - } - } - } -} - -fn find_increasable_vertical_chain( - panes: &BTreeMap>, - increase_by: usize, - screen_width: usize, - screen_height: usize, // TODO: this is the previous size (make this clearer) -) -> Option> { - let mut vertical_coordinate = 0; - loop { - if vertical_coordinate == screen_width { - return None; - } - - match panes - .values() - .find(|p| p.y() == 0 && p.x() == vertical_coordinate) - { - Some(topmost_pane) => { - if !topmost_pane.can_increase_width_by(increase_by) { - vertical_coordinate = topmost_pane.x() + topmost_pane.columns(); - continue; - } - let mut panes_to_resize = vec![]; - let mut current_pane = topmost_pane; - loop { - panes_to_resize.push(current_pane.pid()); - if current_pane.y() + current_pane.rows() == screen_height { - return Some(panes_to_resize); - } - match find_next_increasable_vertical_pane( - panes, - current_pane.as_ref(), - increase_by, - ) { - Some(next_pane_id) => { - current_pane = panes.get(&next_pane_id).unwrap(); - } - None => { - vertical_coordinate = topmost_pane.x() + topmost_pane.columns(); - break; - } - }; - } - } - None => { - return None; - } - } - } -} - -fn find_reducible_horizontal_chain( - panes: &BTreeMap>, - reduce_by: usize, - screen_width: usize, - screen_height: usize, // TODO: this is the previous size (make this clearer) -) -> Option> { - let mut horizontal_coordinate = 0; - loop { - if horizontal_coordinate == screen_height { - return None; - } - - match panes - .values() - .find(|p| p.x() == 0 && p.y() == horizontal_coordinate) - { - Some(leftmost_pane) => { - if !leftmost_pane.can_reduce_height_by(reduce_by) { - horizontal_coordinate = leftmost_pane.y() + leftmost_pane.rows(); - continue; - } - let mut panes_to_resize = vec![]; - let mut current_pane = leftmost_pane; - loop { - panes_to_resize.push(current_pane.pid()); - if current_pane.x() + current_pane.columns() == screen_width { - return Some(panes_to_resize); - } - match find_next_reducible_horizontal_pane( - panes, - current_pane.as_ref(), - reduce_by, - ) { - Some(next_pane_id) => { - current_pane = panes.get(&next_pane_id).unwrap(); - } - None => { - horizontal_coordinate = leftmost_pane.y() + leftmost_pane.rows(); - break; - } - }; - } - } - None => { - return None; - } - } - } -} - -fn find_reducible_vertical_chain( - panes: &BTreeMap>, - increase_by: usize, - screen_width: usize, - screen_height: usize, // TODO: this is the previous size (make this clearer) -) -> Option> { - let mut vertical_coordinate = 0; - loop { - if vertical_coordinate == screen_width { - return None; - } - - match panes - .values() - .find(|p| p.y() == 0 && p.x() == vertical_coordinate) - { - Some(topmost_pane) => { - if !topmost_pane.can_reduce_width_by(increase_by) { - vertical_coordinate = topmost_pane.x() + topmost_pane.columns(); - continue; - } - let mut panes_to_resize = vec![]; - let mut current_pane = topmost_pane; - loop { - panes_to_resize.push(current_pane.pid()); - if current_pane.y() + current_pane.rows() == screen_height { - return Some(panes_to_resize); - } - match find_next_reducible_vertical_pane( - panes, - current_pane.as_ref(), - increase_by, - ) { - Some(next_pane_id) => { - current_pane = panes.get(&next_pane_id).unwrap(); - } - None => { - vertical_coordinate = topmost_pane.x() + topmost_pane.columns(); - break; - } - }; - } - } - None => { - return None; - } - } - } +fn stable_round(x: f64) -> f64 { + ((x * 100.0).round() / 100.0).round() } diff --git a/zellij-server/src/ui/pane_resizer_beta.rs b/zellij-server/src/ui/pane_resizer_beta.rs deleted file mode 100644 index b6ffd784..00000000 --- a/zellij-server/src/ui/pane_resizer_beta.rs +++ /dev/null @@ -1,248 +0,0 @@ -#![allow(dead_code)] -use crate::{os_input_output::ServerOsApi, panes::PaneId, tab::Pane}; -use cassowary::{ - strength::{REQUIRED, STRONG}, - Constraint, Solver, Variable, - WeightedRelation::*, -}; -use std::{ - collections::{BTreeMap, HashSet}, - ops::Not, -}; -use zellij_utils::pane_size::PositionAndSize; - -const GAP_SIZE: usize = 1; // Panes are separated by this number of rows / columns - -pub struct PaneResizer<'a> { - panes: &'a mut BTreeMap>, - vars: BTreeMap, - solver: Solver, - os_api: &'a mut Box, -} - -#[derive(Debug, Clone, Copy)] -enum Direction { - Horizontal, - Vertical, -} - -impl Not for Direction { - type Output = Self; - - fn not(self) -> Self::Output { - match self { - Direction::Horizontal => Direction::Vertical, - Direction::Vertical => Direction::Horizontal, - } - } -} - -#[derive(Debug, Clone, Copy)] -struct Span { - pid: PaneId, - direction: Direction, - fixed: bool, - pos: usize, - size: usize, - pos_var: Variable, - size_var: Variable, -} - -// TODO: currently there are some functions here duplicated with Tab -// all resizing functions should move here - -// FIXME: -// 1. Rounding causes a loss of ratios, I need to store an internal f64 for -// each pane as well as the displayed usize and add custom rounding logic. -// 2. Vertical resizing doesn't seem to respect the space consumed by the tab -// and status bars? -// 3. A 2x2 layout and simultaneous vertical + horizontal resizing sometimes -// leads to unsolvable constraints? Maybe related to 2 (and possibly 1). -// I should sanity-check the `spans_in_boundary()` here! - -impl<'a> PaneResizer<'a> { - pub fn new( - panes: &'a mut BTreeMap>, - os_api: &'a mut Box, - ) -> Self { - let mut vars = BTreeMap::new(); - for &k in panes.keys() { - vars.insert(k, (Variable::new(), Variable::new())); - } - PaneResizer { - panes, - vars, - solver: Solver::new(), - os_api, - } - } - - pub fn resize( - &mut self, - current_size: PositionAndSize, - new_size: PositionAndSize, - ) -> Option<(isize, isize)> { - let col_delta = new_size.cols as isize - current_size.cols as isize; - let row_delta = new_size.rows as isize - current_size.rows as isize; - if col_delta != 0 { - let spans = self.solve_direction(Direction::Horizontal, new_size.cols)?; - self.collapse_spans(&spans); - } - self.solver.reset(); - if row_delta != 0 { - let spans = self.solve_direction(Direction::Vertical, new_size.rows)?; - self.collapse_spans(&spans); - } - Some((col_delta, row_delta)) - } - - fn solve_direction(&mut self, direction: Direction, space: usize) -> Option> { - let mut grid = Vec::new(); - for boundary in self.grid_boundaries(direction) { - grid.push(self.spans_in_boundary(direction, boundary)); - } - - let constraints: Vec<_> = grid - .iter() - .flat_map(|s| constrain_spans(space, s)) - .collect(); - - // FIXME: This line needs to be restored before merging! - //self.solver.add_constraints(&constraints).ok()?; - self.solver.add_constraints(&constraints).unwrap(); - Some(grid.into_iter().flatten().collect()) - } - - fn grid_boundaries(&self, direction: Direction) -> Vec<(usize, usize)> { - // Select the spans running *perpendicular* to the direction of resize - let spans: Vec = self - .panes - .values() - .map(|p| self.get_span(!direction, p.as_ref())) - .collect(); - - let mut last_edge = 0; - let mut bounds = Vec::new(); - loop { - let mut spans_on_edge: Vec<&Span> = - spans.iter().filter(|p| p.pos == last_edge).collect(); - spans_on_edge.sort_unstable_by_key(|s| s.size); - if let Some(next) = spans_on_edge.first() { - let next_edge = last_edge + next.size; - bounds.push((last_edge, next_edge)); - last_edge = next_edge + GAP_SIZE; - } else { - break; - } - } - bounds - } - - fn spans_in_boundary(&self, direction: Direction, boundary: (usize, usize)) -> Vec { - let (start, end) = boundary; - let bwn = |v| start <= v && v < end; - let mut spans: Vec<_> = self - .panes - .values() - .filter(|p| { - let s = self.get_span(!direction, p.as_ref()); - bwn(s.pos) || bwn(s.pos + s.size) - }) - .map(|p| self.get_span(direction, p.as_ref())) - .collect(); - spans.sort_unstable_by_key(|s| s.pos); - spans - } - - fn get_span(&self, direction: Direction, pane: &dyn Pane) -> Span { - let pas = pane.position_and_size(); - let (pos_var, size_var) = self.vars[&pane.pid()]; - match direction { - Direction::Horizontal => Span { - pid: pane.pid(), - direction, - fixed: pas.cols_fixed, - pos: pas.x, - size: pas.cols, - pos_var, - size_var, - }, - Direction::Vertical => Span { - pid: pane.pid(), - direction, - fixed: pas.rows_fixed, - pos: pas.y, - size: pas.rows, - pos_var, - size_var, - }, - } - } - - fn collapse_spans(&mut self, spans: &[Span]) { - for span in spans { - let solver = &self.solver; // Hand-holding the borrow-checker - let pane = self.panes.get_mut(&span.pid).unwrap(); - let fetch_usize = |v| solver.get_value(v).round() as usize; - match span.direction { - Direction::Horizontal => pane.change_pos_and_size(&PositionAndSize { - x: fetch_usize(span.pos_var), - cols: fetch_usize(span.size_var), - ..pane.position_and_size() - }), - Direction::Vertical => pane.change_pos_and_size(&PositionAndSize { - y: fetch_usize(span.pos_var), - rows: fetch_usize(span.size_var), - ..pane.position_and_size() - }), - } - if let PaneId::Terminal(pid) = pane.pid() { - self.os_api.set_terminal_size_using_fd( - pid, - pane.columns() as u16, - pane.rows() as u16, - ); - } - } - } -} - -fn constrain_spans(space: usize, spans: &[Span]) -> HashSet { - let mut constraints = HashSet::new(); - - // The first span needs to start at 0 - constraints.insert(spans[0].pos_var | EQ(REQUIRED) | 0.0); - - // Calculating "flexible" space (space not consumed by fixed-size spans) - let gap_space = GAP_SIZE * (spans.len() - 1); - let old_flex_space = spans - .iter() - .fold(0, |a, s| if !s.fixed { a + s.size } else { a }); - let new_flex_space = spans.iter().fold( - space - gap_space, - |a, s| if s.fixed { a - s.size } else { a }, - ); - - // Keep spans stuck together - for pair in spans.windows(2) { - let (ls, rs) = (pair[0], pair[1]); - constraints - .insert((ls.pos_var + ls.size_var + GAP_SIZE as f64) | EQ(REQUIRED) | rs.pos_var); - } - - // Try to maintain ratios and lock non-flexible sizes - for span in spans { - if span.fixed { - constraints.insert(span.size_var | EQ(REQUIRED) | span.size as f64); - } else { - let ratio = span.size as f64 / old_flex_space as f64; - constraints.insert((span.size_var / new_flex_space as f64) | EQ(STRONG) | ratio); - } - } - - // The last pane needs to end at the end of the space - let last = spans.last().unwrap(); - constraints.insert((last.pos_var + last.size_var) | EQ(REQUIRED) | space as f64); - - constraints -} diff --git a/zellij-server/src/unit/screen_tests.rs b/zellij-server/src/unit/screen_tests.rs index 6248ded2..2d080886 100644 --- a/zellij-server/src/unit/screen_tests.rs +++ b/zellij-server/src/unit/screen_tests.rs @@ -6,7 +6,9 @@ use crate::{ SessionState, }; use std::sync::{Arc, RwLock}; -use zellij_utils::{input::command::TerminalAction, pane_size::PositionAndSize}; +use zellij_utils::input::command::TerminalAction; +use zellij_utils::input::layout::LayoutTemplate; +use zellij_utils::pane_size::Size; use std::os::unix::io::RawFd; @@ -73,12 +75,12 @@ impl ServerOsApi for FakeInputOutput { } } -fn create_new_screen(position_and_size: PositionAndSize) -> Screen { +fn create_new_screen(size: Size) -> Screen { let mut bus: Bus = Bus::empty(); let fake_os_input = FakeInputOutput {}; bus.os_input = Some(Box::new(fake_os_input)); let mut client_attributes = ClientAttributes::default(); - client_attributes.position_and_size = position_and_size; + client_attributes.size = size; let max_panes = None; let mode_info = ModeInfo::default(); let session_state = Arc::new(RwLock::new(SessionState::Attached)); @@ -92,19 +94,20 @@ fn create_new_screen(position_and_size: PositionAndSize) -> Screen { ) } +fn new_tab(screen: &mut Screen, pid: i32) { + screen.apply_layout(LayoutTemplate::default().into(), vec![pid]); +} + #[test] fn open_new_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); assert_eq!(screen.tabs.len(), 2, "Screen now has two tabs"); assert_eq!( @@ -116,17 +119,14 @@ fn open_new_tab() { #[test] pub fn switch_to_prev_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); screen.switch_tab_prev(); assert_eq!( @@ -138,17 +138,14 @@ pub fn switch_to_prev_tab() { #[test] pub fn switch_to_next_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); screen.switch_tab_prev(); screen.switch_tab_next(); @@ -161,17 +158,14 @@ pub fn switch_to_next_tab() { #[test] pub fn close_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); screen.close_tab(); assert_eq!(screen.tabs.len(), 1, "Only one tab left"); @@ -184,20 +178,32 @@ pub fn close_tab() { #[test] pub fn close_the_middle_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); - screen.new_tab(3); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); + new_tab(&mut screen, 3); + dbg!(screen + .tabs + .values() + .map(|t| (t.index, t.position, t.name.clone(), t.get_pane_ids())) + .collect::>()); screen.switch_tab_prev(); + dbg!(screen + .tabs + .values() + .map(|t| (t.index, t.position, t.name.clone(), t.get_pane_ids())) + .collect::>()); screen.close_tab(); + dbg!(screen + .tabs + .values() + .map(|t| (t.index, t.position, t.name.clone(), t.get_pane_ids())) + .collect::>()); assert_eq!(screen.tabs.len(), 2, "Two tabs left"); assert_eq!( @@ -209,18 +215,15 @@ pub fn close_the_middle_tab() { #[test] fn move_focus_left_at_left_screen_edge_changes_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); - screen.new_tab(3); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); + new_tab(&mut screen, 3); screen.switch_tab_prev(); screen.move_focus_left_or_previous_tab(); @@ -233,18 +236,15 @@ fn move_focus_left_at_left_screen_edge_changes_tab() { #[test] fn move_focus_right_at_right_screen_edge_changes_tab() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut screen = create_new_screen(position_and_size); + let mut screen = create_new_screen(size); - screen.new_tab(1); - screen.new_tab(2); - screen.new_tab(3); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); + new_tab(&mut screen, 3); screen.switch_tab_prev(); screen.move_focus_right_or_next_tab(); @@ -257,17 +257,14 @@ fn move_focus_right_at_right_screen_edge_changes_tab() { #[test] pub fn toggle_to_previous_tab_simple() { - let position_and_size = PositionAndSize { + let position_and_size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; let mut screen = create_new_screen(position_and_size); - screen.new_tab(1); - screen.new_tab(2); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); screen.go_to_tab(1); screen.go_to_tab(2); @@ -288,18 +285,15 @@ pub fn toggle_to_previous_tab_simple() { #[test] pub fn toggle_to_previous_tab_create_tabs_only() { - let position_and_size = PositionAndSize { + let position_and_size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; let mut screen = create_new_screen(position_and_size); - screen.new_tab(1); - screen.new_tab(2); - screen.new_tab(3); + new_tab(&mut screen, 1); + new_tab(&mut screen, 2); + new_tab(&mut screen, 3); assert_eq!( screen.tab_history, @@ -341,19 +335,16 @@ pub fn toggle_to_previous_tab_create_tabs_only() { #[test] pub fn toggle_to_previous_tab_delete() { - let position_and_size = PositionAndSize { + let position_and_size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; let mut screen = create_new_screen(position_and_size); - screen.new_tab(1); // 0 - screen.new_tab(2); // 1 - screen.new_tab(3); // 2 - screen.new_tab(4); // 3 + new_tab(&mut screen, 1); // 0 + new_tab(&mut screen, 2); // 1 + new_tab(&mut screen, 3); // 2 + new_tab(&mut screen, 4); // 3 assert_eq!( screen.tab_history, diff --git a/zellij-server/src/unit/tab_tests.rs b/zellij-server/src/unit/tab_tests.rs index 08594397..ea96df62 100644 --- a/zellij-server/src/unit/tab_tests.rs +++ b/zellij-server/src/unit/tab_tests.rs @@ -7,7 +7,8 @@ use crate::{ SessionState, }; use std::sync::{Arc, RwLock}; -use zellij_utils::pane_size::PositionAndSize; +use zellij_utils::input::layout::LayoutTemplate; +use zellij_utils::pane_size::Size; use std::os::unix::io::RawFd; @@ -73,43 +74,40 @@ impl ServerOsApi for FakeInputOutput { } } -fn create_new_tab(position_and_size: PositionAndSize) -> Tab { +fn create_new_tab(size: Size) -> Tab { let index = 0; let position = 0; let name = String::new(); let os_api = Box::new(FakeInputOutput {}); let senders = ThreadSenders::default().silently_fail_on_send(); let max_panes = None; - let first_pane_id = Some(PaneId::Terminal(1)); let mode_info = ModeInfo::default(); let colors = Palette::default(); let session_state = Arc::new(RwLock::new(SessionState::Attached)); - Tab::new( + let mut tab = Tab::new( index, position, name, - &position_and_size, + size, os_api, senders, max_panes, - first_pane_id, mode_info, colors, session_state, true, // draw pane frames - ) + ); + tab.apply_layout(LayoutTemplate::default().into(), vec![1], index); + tab } #[test] fn split_panes_vertically() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.vertical_split(new_pane_id); assert_eq!(tab.panes.len(), 2, "The tab has two panes"); @@ -136,7 +134,8 @@ fn split_panes_vertically() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first pane column count" ); @@ -145,7 +144,8 @@ fn split_panes_vertically() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "first pane row count" ); @@ -172,7 +172,8 @@ fn split_panes_vertically() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "second pane column count" ); @@ -181,7 +182,8 @@ fn split_panes_vertically() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "second pane row count" ); @@ -189,14 +191,11 @@ fn split_panes_vertically() { #[test] fn split_panes_horizontally() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); assert_eq!(tab.panes.len(), 2, "The tab has two panes"); @@ -224,7 +223,8 @@ fn split_panes_horizontally() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "first pane column count" ); @@ -233,7 +233,8 @@ fn split_panes_horizontally() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "first pane row count" ); @@ -261,7 +262,8 @@ fn split_panes_horizontally() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "second pane column count" ); @@ -270,7 +272,8 @@ fn split_panes_horizontally() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "second pane row count" ); @@ -278,14 +281,11 @@ fn split_panes_horizontally() { #[test] fn split_largest_pane() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); for i in 2..5 { let new_pane_id = PaneId::Terminal(i); tab.new_pane(new_pane_id); @@ -315,7 +315,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first pane column count" ); @@ -324,7 +325,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "first pane row count" ); @@ -352,7 +354,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "second pane column count" ); @@ -361,7 +364,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "second pane row count" ); @@ -389,7 +393,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "third pane column count" ); @@ -398,7 +403,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "third pane row count" ); @@ -426,7 +432,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "fourth pane column count" ); @@ -435,7 +442,8 @@ fn split_largest_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "fourth pane row count" ); @@ -443,56 +451,35 @@ fn split_largest_pane() { #[test] pub fn cannot_split_panes_vertically_when_active_pane_is_too_small() { - let position_and_size = PositionAndSize { - cols: 8, - rows: 20, - x: 0, - y: 0, - ..Default::default() - }; - let mut tab = create_new_tab(position_and_size); + let size = Size { cols: 8, rows: 20 }; + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); assert_eq!(tab.panes.len(), 1, "Tab still has only one pane"); } #[test] pub fn cannot_split_panes_horizontally_when_active_pane_is_too_small() { - let position_and_size = PositionAndSize { - cols: 121, - rows: 4, - x: 0, - y: 0, - ..Default::default() - }; - let mut tab = create_new_tab(position_and_size); + let size = Size { cols: 121, rows: 4 }; + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); assert_eq!(tab.panes.len(), 1, "Tab still has only one pane"); } #[test] pub fn cannot_split_largest_pane_when_there_is_no_room() { - let position_and_size = PositionAndSize { - cols: 8, - rows: 4, - x: 0, - y: 0, - ..Default::default() - }; - let mut tab = create_new_tab(position_and_size); + let size = Size { cols: 8, rows: 4 }; + let mut tab = create_new_tab(size); tab.new_pane(PaneId::Terminal(2)); assert_eq!(tab.panes.len(), 1, "Tab still has only one pane"); } #[test] pub fn toggle_focused_pane_fullscreen() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); for i in 2..5 { let new_pane_id = PaneId::Terminal(i); tab.new_pane(new_pane_id); @@ -509,7 +496,7 @@ pub fn toggle_focused_pane_fullscreen() { "Pane y is on screen edge" ); assert_eq!( - tab.panes.get(&PaneId::Terminal(4)).unwrap().columns(), + tab.panes.get(&PaneId::Terminal(4)).unwrap().cols(), 121, "Pane cols match fullscreen cols" ); @@ -530,7 +517,7 @@ pub fn toggle_focused_pane_fullscreen() { "Pane y is on screen edge" ); assert_eq!( - tab.panes.get(&PaneId::Terminal(4)).unwrap().columns(), + tab.panes.get(&PaneId::Terminal(4)).unwrap().cols(), 60, "Pane cols match fullscreen cols" ); @@ -545,14 +532,11 @@ pub fn toggle_focused_pane_fullscreen() { #[test] pub fn move_focus_is_disabled_in_fullscreen() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); for i in 2..5 { let new_pane_id = PaneId::Terminal(i); tab.new_pane(new_pane_id); @@ -570,7 +554,7 @@ pub fn move_focus_is_disabled_in_fullscreen() { "Pane y is on screen edge" ); assert_eq!( - tab.panes.get(&PaneId::Terminal(4)).unwrap().columns(), + tab.panes.get(&PaneId::Terminal(4)).unwrap().cols(), 121, "Pane cols match fullscreen cols" ); @@ -592,14 +576,11 @@ pub fn close_pane_with_another_pane_above_it() { // └───────────┘ └───────────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); tab.close_focused_pane(); @@ -628,7 +609,8 @@ pub fn close_pane_with_another_pane_above_it() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "remaining pane column count" ); @@ -637,7 +619,8 @@ pub fn close_pane_with_another_pane_above_it() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "remaining pane row count" ); @@ -654,14 +637,11 @@ pub fn close_pane_with_another_pane_below_it() { // └───────────┘ └───────────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); tab.move_focus_up(); @@ -691,7 +671,8 @@ pub fn close_pane_with_another_pane_below_it() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "remaining pane column count" ); @@ -700,7 +681,8 @@ pub fn close_pane_with_another_pane_below_it() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "remaining pane row count" ); @@ -714,14 +696,11 @@ pub fn close_pane_with_another_pane_to_the_left() { // │xxxxx│█████│ │xxxxxxxxxx│ // └─────┴─────┘ └──────────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.vertical_split(new_pane_id); tab.close_focused_pane(); @@ -750,7 +729,8 @@ pub fn close_pane_with_another_pane_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "remaining pane column count" ); @@ -759,7 +739,8 @@ pub fn close_pane_with_another_pane_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "remaining pane row count" ); @@ -773,14 +754,11 @@ pub fn close_pane_with_another_pane_to_the_right() { // │█████│xxxxx│ │xxxxxxxxxx│ // └─────┴─────┘ └──────────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.vertical_split(new_pane_id); tab.move_focus_left(); @@ -810,7 +788,8 @@ pub fn close_pane_with_another_pane_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "remaining pane column count" ); @@ -819,7 +798,8 @@ pub fn close_pane_with_another_pane_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "remaining pane row count" ); @@ -835,14 +815,11 @@ pub fn close_pane_with_multiple_panes_above_it() { // │███████████│ │xxxxx│xxxxx│ // └───────────┘ └─────┴─────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); tab.horizontal_split(new_pane_id_1); @@ -875,7 +852,8 @@ pub fn close_pane_with_multiple_panes_above_it() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first remaining pane column count" ); @@ -884,7 +862,8 @@ pub fn close_pane_with_multiple_panes_above_it() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "first remaining pane row count" ); @@ -912,7 +891,8 @@ pub fn close_pane_with_multiple_panes_above_it() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "second remaining pane column count" ); @@ -921,7 +901,8 @@ pub fn close_pane_with_multiple_panes_above_it() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "second remaining pane row count" ); @@ -937,14 +918,11 @@ pub fn close_pane_with_multiple_panes_below_it() { // │xxxxx│xxxxx│ │xxxxx│xxxxx│ // └─────┴─────┘ └─────┴─────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); tab.horizontal_split(new_pane_id_1); @@ -976,7 +954,8 @@ pub fn close_pane_with_multiple_panes_below_it() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first remaining pane column count" ); @@ -985,7 +964,8 @@ pub fn close_pane_with_multiple_panes_below_it() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "first remaining pane row count" ); @@ -1013,7 +993,8 @@ pub fn close_pane_with_multiple_panes_below_it() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "second remaining pane column count" ); @@ -1022,7 +1003,8 @@ pub fn close_pane_with_multiple_panes_below_it() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "second remaining pane row count" ); @@ -1038,14 +1020,11 @@ pub fn close_pane_with_multiple_panes_to_the_left() { // │xxxxx│█████│ │xxxxxxxxxx│ // └─────┴─────┘ └──────────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); tab.vertical_split(new_pane_id_1); @@ -1078,7 +1057,8 @@ pub fn close_pane_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "first remaining pane column count" ); @@ -1087,7 +1067,8 @@ pub fn close_pane_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "first remaining pane row count" ); @@ -1115,7 +1096,8 @@ pub fn close_pane_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "second remaining pane column count" ); @@ -1124,7 +1106,8 @@ pub fn close_pane_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "second remaining pane row count" ); @@ -1140,14 +1123,11 @@ pub fn close_pane_with_multiple_panes_to_the_right() { // │█████│xxxxx│ │xxxxxxxxxx│ // └─────┴─────┘ └──────────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); tab.vertical_split(new_pane_id_1); @@ -1179,7 +1159,8 @@ pub fn close_pane_with_multiple_panes_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "first remaining pane column count" ); @@ -1188,7 +1169,8 @@ pub fn close_pane_with_multiple_panes_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "first remaining pane row count" ); @@ -1216,7 +1198,8 @@ pub fn close_pane_with_multiple_panes_to_the_right() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "second remaining pane column count" ); @@ -1225,7 +1208,8 @@ pub fn close_pane_with_multiple_panes_to_the_right() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "second remaining pane row count" ); @@ -1241,14 +1225,11 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { // │xxx│███████│xxx│ │xxx│xxx│xxx│xxx│ // └───┴───────┴───┘ └───┴───┴───┴───┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -1297,7 +1278,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first remaining pane column count" ); @@ -1306,7 +1288,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "first remaining pane row count" ); @@ -1334,7 +1317,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "second remaining pane column count" ); @@ -1343,7 +1327,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "second remaining pane row count" ); @@ -1371,7 +1356,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "third remaining pane column count" ); @@ -1380,7 +1366,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "third remaining pane row count" ); @@ -1408,7 +1395,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "fourth remaining pane column count" ); @@ -1417,7 +1405,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "fourth remaining pane row count" ); @@ -1445,7 +1434,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "sixths remaining pane column count" ); @@ -1454,7 +1444,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "sixths remaining pane row count" ); @@ -1482,7 +1473,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "seventh remaining pane column count" ); @@ -1491,7 +1483,8 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "seventh remaining pane row count" ); @@ -1508,14 +1501,11 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { // └───┴───┴───┴───┘ └───┴───┴───┴───┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -1563,7 +1553,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first remaining pane column count" ); @@ -1572,7 +1563,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "first remaining pane row count" ); @@ -1600,7 +1592,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "third remaining pane column count" ); @@ -1609,7 +1602,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "third remaining pane row count" ); @@ -1637,7 +1631,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "fourth remaining pane column count" ); @@ -1646,7 +1641,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "fourth remaining pane row count" ); @@ -1674,7 +1670,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "second remaining pane column count" ); @@ -1683,7 +1680,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "second remaining pane row count" ); @@ -1711,7 +1709,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "sixths remaining pane column count" ); @@ -1720,7 +1719,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "sixths remaining pane row count" ); @@ -1748,7 +1748,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "seventh remaining pane column count" ); @@ -1757,7 +1758,8 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "seventh remaining pane row count" ); @@ -1776,14 +1778,11 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { // └────┴──────┘ └────┴──────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -1804,6 +1803,7 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { tab.move_focus_left(); tab.resize_right(); tab.resize_up(); + tab.resize_up(); tab.horizontal_split(new_pane_id_6); tab.move_focus_right(); tab.close_focused_pane(); @@ -1833,7 +1833,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first remaining pane column count" ); @@ -1842,8 +1843,9 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 12, "first remaining pane row count" ); @@ -1862,7 +1864,7 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 13, + 12, "third remaining pane y position" ); assert_eq!( @@ -1870,7 +1872,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "third remaining pane column count" ); @@ -1879,7 +1882,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "third remaining pane row count" ); @@ -1899,7 +1903,7 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 23, + 22, "fourth remaining pane y position" ); assert_eq!( @@ -1907,7 +1911,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "fourth remaining pane column count" ); @@ -1916,8 +1921,9 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "fourth remaining pane row count" ); @@ -1944,7 +1950,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "second remaining pane column count" ); @@ -1953,8 +1960,9 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 12, "second remaining pane row count" ); @@ -1973,7 +1981,7 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 23, + 22, "sixths remaining pane y position" ); assert_eq!( @@ -1981,7 +1989,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "sixths remaining pane column count" ); @@ -1990,8 +1999,9 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "sixths remaining pane row count" ); @@ -2010,7 +2020,7 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 18, + 17, "seventh remaining pane y position" ); assert_eq!( @@ -2018,7 +2028,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "seventh remaining pane column count" ); @@ -2027,7 +2038,8 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "seventh remaining pane row count" ); @@ -2046,14 +2058,11 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { // └────┴──────┘ └────┴──────┘ // █ == pane being closed - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -2073,6 +2082,7 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { tab.move_focus_up(); tab.resize_left(); tab.resize_up(); + tab.resize_up(); tab.horizontal_split(new_pane_id_6); tab.move_focus_left(); tab.close_focused_pane(); @@ -2102,7 +2112,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "first remaining pane column count" ); @@ -2111,8 +2122,9 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 11, "first remaining pane row count" ); @@ -2131,7 +2143,7 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 23, + 22, "fourth remaining pane y position" ); assert_eq!( @@ -2139,7 +2151,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "fourth remaining pane column count" ); @@ -2148,8 +2161,9 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "fourth remaining pane row count" ); @@ -2176,7 +2190,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "second remaining pane column count" ); @@ -2185,8 +2200,9 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 11, "second remaining pane row count" ); @@ -2205,7 +2221,7 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 13, + 11, "third remaining pane y position" ); assert_eq!( @@ -2213,7 +2229,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "third remaining pane column count" ); @@ -2222,8 +2239,9 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 5, + .rows + .as_usize(), + 6, "third remaining pane row count" ); @@ -2242,7 +2260,7 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 23, + 22, "sixths remaining pane y position" ); assert_eq!( @@ -2250,7 +2268,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "sixths remaining pane column count" ); @@ -2259,8 +2278,9 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "sixths remaining pane row count" ); @@ -2279,7 +2299,7 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .unwrap() .position_and_size() .y, - 18, + 17, "seventh remaining pane y position" ); assert_eq!( @@ -2287,7 +2307,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "seventh remaining pane column count" ); @@ -2296,7 +2317,8 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "seventh remaining pane row count" ); @@ -2304,14 +2326,11 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() { #[test] pub fn move_focus_down() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); @@ -2327,14 +2346,11 @@ pub fn move_focus_down() { #[test] pub fn move_focus_down_to_the_most_recently_used_pane() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -2359,14 +2375,11 @@ pub fn move_focus_down_to_the_most_recently_used_pane() { #[test] pub fn move_focus_up() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); @@ -2381,14 +2394,11 @@ pub fn move_focus_up() { #[test] pub fn move_focus_up_to_the_most_recently_used_pane() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -2414,14 +2424,11 @@ pub fn move_focus_up_to_the_most_recently_used_pane() { #[test] pub fn move_focus_left() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.vertical_split(new_pane_id); @@ -2436,14 +2443,11 @@ pub fn move_focus_left() { #[test] pub fn move_focus_left_to_the_most_recently_used_pane() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -2469,14 +2473,11 @@ pub fn move_focus_left_to_the_most_recently_used_pane() { #[test] pub fn move_focus_right() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.vertical_split(new_pane_id); @@ -2492,14 +2493,11 @@ pub fn move_focus_right() { #[test] pub fn move_focus_right_to_the_most_recently_used_pane() { - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); let new_pane_id_3 = PaneId::Terminal(4); @@ -2533,14 +2531,11 @@ pub fn resize_down_with_pane_above() { // │███████████│ │███████████│ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); tab.resize_down(); @@ -2552,7 +2547,7 @@ pub fn resize_down_with_pane_above() { ); assert_eq!( tab.panes.get(&new_pane_id).unwrap().position_and_size().y, - 12, + 11, "focused pane y position" ); assert_eq!( @@ -2560,7 +2555,8 @@ pub fn resize_down_with_pane_above() { .get(&new_pane_id) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "focused pane column count" ); @@ -2569,8 +2565,9 @@ pub fn resize_down_with_pane_above() { .get(&new_pane_id) .unwrap() .position_and_size() - .rows, - 8, + .rows + .as_usize(), + 9, "focused pane row count" ); @@ -2597,7 +2594,8 @@ pub fn resize_down_with_pane_above() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane above column count" ); @@ -2606,8 +2604,9 @@ pub fn resize_down_with_pane_above() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 12, + .rows + .as_usize(), + 11, "pane above row count" ); } @@ -2622,14 +2621,11 @@ pub fn resize_down_with_pane_below() { // │ │ │ │ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let new_pane_id = PaneId::Terminal(2); tab.horizontal_split(new_pane_id); tab.move_focus_up(); @@ -2642,7 +2638,7 @@ pub fn resize_down_with_pane_below() { ); assert_eq!( tab.panes.get(&new_pane_id).unwrap().position_and_size().y, - 12, + 11, "pane below y position" ); assert_eq!( @@ -2650,7 +2646,8 @@ pub fn resize_down_with_pane_below() { .get(&new_pane_id) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane below column count" ); @@ -2659,8 +2656,9 @@ pub fn resize_down_with_pane_below() { .get(&new_pane_id) .unwrap() .position_and_size() - .rows, - 8, + .rows + .as_usize(), + 9, "pane below row count" ); @@ -2687,7 +2685,8 @@ pub fn resize_down_with_pane_below() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "focused pane column count" ); @@ -2696,8 +2695,9 @@ pub fn resize_down_with_pane_below() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 12, + .rows + .as_usize(), + 11, "focused pane row count" ); } @@ -2716,14 +2716,11 @@ pub fn resize_down_with_panes_above_and_below() { // │ │ │ │ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let first_pane_id = PaneId::Terminal(1); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); @@ -2747,7 +2744,8 @@ pub fn resize_down_with_panes_above_and_below() { .get(&new_pane_id_1) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "focused pane column count" ); @@ -2756,8 +2754,9 @@ pub fn resize_down_with_panes_above_and_below() { .get(&new_pane_id_1) .unwrap() .position_and_size() - .rows, - 10, + .rows + .as_usize(), + 9, "focused pane row count" ); @@ -2768,7 +2767,7 @@ pub fn resize_down_with_panes_above_and_below() { ); assert_eq!( tab.panes.get(&new_pane_id_2).unwrap().position_and_size().y, - 25, + 24, "pane below y position" ); assert_eq!( @@ -2776,7 +2775,8 @@ pub fn resize_down_with_panes_above_and_below() { .get(&new_pane_id_2) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane below column count" ); @@ -2785,8 +2785,9 @@ pub fn resize_down_with_panes_above_and_below() { .get(&new_pane_id_2) .unwrap() .position_and_size() - .rows, - 5, + .rows + .as_usize(), + 6, "pane below row count" ); @@ -2805,7 +2806,8 @@ pub fn resize_down_with_panes_above_and_below() { .get(&first_pane_id) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane above column count" ); @@ -2814,7 +2816,8 @@ pub fn resize_down_with_panes_above_and_below() { .get(&first_pane_id) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane above row count" ); @@ -2830,14 +2833,11 @@ pub fn resize_down_with_multiple_panes_above() { // │███████████│ │███████████│ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let first_pane_id = PaneId::Terminal(1); let new_pane_id_1 = PaneId::Terminal(2); let new_pane_id_2 = PaneId::Terminal(3); @@ -2854,7 +2854,7 @@ pub fn resize_down_with_multiple_panes_above() { ); assert_eq!( tab.panes.get(&new_pane_id_1).unwrap().position_and_size().y, - 17, + 16, "focused pane y position" ); assert_eq!( @@ -2862,7 +2862,8 @@ pub fn resize_down_with_multiple_panes_above() { .get(&new_pane_id_1) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "focused pane column count" ); @@ -2871,8 +2872,9 @@ pub fn resize_down_with_multiple_panes_above() { .get(&new_pane_id_1) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "focused pane row count" ); @@ -2891,7 +2893,8 @@ pub fn resize_down_with_multiple_panes_above() { .get(&new_pane_id_2) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "first pane above column count" ); @@ -2900,8 +2903,9 @@ pub fn resize_down_with_multiple_panes_above() { .get(&new_pane_id_2) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "first pane above row count" ); @@ -2920,7 +2924,8 @@ pub fn resize_down_with_multiple_panes_above() { .get(&first_pane_id) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "second pane above column count" ); @@ -2929,8 +2934,9 @@ pub fn resize_down_with_multiple_panes_above() { .get(&first_pane_id) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "second pane above row count" ); } @@ -2945,14 +2951,11 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { // │ │█████│ │ │█████│ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let pane_above_and_left = PaneId::Terminal(1); let pane_to_the_left = PaneId::Terminal(2); let focused_pane = PaneId::Terminal(3); @@ -2971,7 +2974,7 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { ); assert_eq!( tab.panes.get(&focused_pane).unwrap().position_and_size().y, - 17, + 16, "focused pane y position" ); assert_eq!( @@ -2979,7 +2982,8 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "focused pane column count" ); @@ -2988,8 +2992,9 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "focused pane row count" ); @@ -3016,7 +3021,8 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { .get(&pane_above_and_left) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane above and to the left column count" ); @@ -3025,7 +3031,8 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { .get(&pane_above_and_left) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane above and to the left row count" ); @@ -3041,13 +3048,23 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { "pane above y position" ); assert_eq!( - tab.panes.get(&pane_above).unwrap().position_and_size().cols, + tab.panes + .get(&pane_above) + .unwrap() + .position_and_size() + .cols + .as_usize(), 60, "pane above column count" ); assert_eq!( - tab.panes.get(&pane_above).unwrap().position_and_size().rows, - 17, + tab.panes + .get(&pane_above) + .unwrap() + .position_and_size() + .rows + .as_usize(), + 16, "pane above row count" ); @@ -3074,7 +3091,8 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { .get(&pane_to_the_left) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane to the left column count" ); @@ -3083,7 +3101,8 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() { .get(&pane_to_the_left) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane to the left row count" ); @@ -3100,14 +3119,11 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let pane_to_the_left = PaneId::Terminal(1); let pane_below_and_left = PaneId::Terminal(2); let pane_below = PaneId::Terminal(3); @@ -3133,7 +3149,8 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "focused pane column count" ); @@ -3142,8 +3159,9 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "focused pane row count" ); @@ -3170,7 +3188,8 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { .get(&pane_to_the_left) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane above and to the left column count" ); @@ -3179,7 +3198,8 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { .get(&pane_to_the_left) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane above and to the left row count" ); @@ -3191,17 +3211,27 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { ); assert_eq!( tab.panes.get(&pane_below).unwrap().position_and_size().y, - 17, + 16, "pane above y position" ); assert_eq!( - tab.panes.get(&pane_below).unwrap().position_and_size().cols, + tab.panes + .get(&pane_below) + .unwrap() + .position_and_size() + .cols + .as_usize(), 60, "pane above column count" ); assert_eq!( - tab.panes.get(&pane_below).unwrap().position_and_size().rows, - 13, + tab.panes + .get(&pane_below) + .unwrap() + .position_and_size() + .rows + .as_usize(), + 14, "pane above row count" ); @@ -3228,7 +3258,8 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { .get(&pane_below_and_left) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane to the left column count" ); @@ -3237,7 +3268,8 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() { .get(&pane_below_and_left) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane to the left row count" ); @@ -3254,14 +3286,11 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let pane_above = PaneId::Terminal(1); let focused_pane = PaneId::Terminal(2); let pane_to_the_right = PaneId::Terminal(3); @@ -3281,7 +3310,7 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { ); assert_eq!( tab.panes.get(&focused_pane).unwrap().position_and_size().y, - 17, + 16, "focused pane y position" ); assert_eq!( @@ -3289,7 +3318,8 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "focused pane column count" ); @@ -3298,8 +3328,9 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "focused pane row count" ); @@ -3314,13 +3345,23 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { "pane above y position" ); assert_eq!( - tab.panes.get(&pane_above).unwrap().position_and_size().cols, + tab.panes + .get(&pane_above) + .unwrap() + .position_and_size() + .cols + .as_usize(), 61, "pane above column count" ); assert_eq!( - tab.panes.get(&pane_above).unwrap().position_and_size().rows, - 17, + tab.panes + .get(&pane_above) + .unwrap() + .position_and_size() + .rows + .as_usize(), + 16, "pane above row count" ); @@ -3347,7 +3388,8 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { .get(&pane_to_the_right) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane to the right column count" ); @@ -3356,7 +3398,8 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { .get(&pane_to_the_right) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane to the right row count" ); @@ -3384,7 +3427,8 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { .get(&pane_above_and_right) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane above and to the right column count" ); @@ -3393,7 +3437,8 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() { .get(&pane_above_and_right) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane above and to the right row count" ); @@ -3410,14 +3455,11 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); let focused_pane = PaneId::Terminal(1); let pane_below = PaneId::Terminal(2); let pane_below_and_right = PaneId::Terminal(3); @@ -3444,7 +3486,8 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "focused pane column count" ); @@ -3453,8 +3496,9 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { .get(&focused_pane) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "focused pane row count" ); @@ -3465,17 +3509,27 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { ); assert_eq!( tab.panes.get(&pane_below).unwrap().position_and_size().y, - 17, + 16, "pane below y position" ); assert_eq!( - tab.panes.get(&pane_below).unwrap().position_and_size().cols, + tab.panes + .get(&pane_below) + .unwrap() + .position_and_size() + .cols + .as_usize(), 61, "pane below column count" ); assert_eq!( - tab.panes.get(&pane_below).unwrap().position_and_size().rows, - 13, + tab.panes + .get(&pane_below) + .unwrap() + .position_and_size() + .rows + .as_usize(), + 14, "pane below row count" ); @@ -3502,7 +3556,8 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { .get(&pane_below_and_right) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane below and to the right column count" ); @@ -3511,7 +3566,8 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { .get(&pane_below_and_right) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane below and to the right row count" ); @@ -3539,7 +3595,8 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { .get(&pane_to_the_right) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane to the right column count" ); @@ -3548,7 +3605,8 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() { .get(&pane_to_the_right) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane to the right row count" ); @@ -3565,14 +3623,11 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { // └───┴───┴───┘ └───┴───┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -3606,7 +3661,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -3615,7 +3671,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -3643,7 +3700,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -3652,7 +3710,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -3672,7 +3731,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .unwrap() .position_and_size() .y, - 17, + 16, "pane 3 y position" ); assert_eq!( @@ -3680,7 +3739,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 3 column count" ); @@ -3689,8 +3749,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -3717,7 +3778,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 4 column count" ); @@ -3726,7 +3788,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -3754,7 +3817,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 5 column count" ); @@ -3763,8 +3827,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 5 row count" ); @@ -3791,7 +3856,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 6 column count" ); @@ -3800,7 +3866,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -3817,14 +3884,11 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { // └───┴───┴───┘ └───┴───┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -3857,7 +3921,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -3866,7 +3931,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -3894,7 +3960,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -3903,7 +3970,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -3923,7 +3991,7 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .unwrap() .position_and_size() .y, - 17, + 16, "pane 3 y position" ); assert_eq!( @@ -3931,7 +3999,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 3 column count" ); @@ -3940,8 +4009,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -3968,7 +4038,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 4 column count" ); @@ -3977,7 +4048,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -4005,7 +4077,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 5 column count" ); @@ -4014,8 +4087,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 5 row count" ); @@ -4042,7 +4116,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 6 column count" ); @@ -4051,7 +4126,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -4068,14 +4144,11 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef // └─┴─┴───┴─┴─┘ └─┴─┴───┴─┴─┘ // █ == focused pane - let position_and_size = PositionAndSize { - cols: 121, + let size = Size { + cols: 122, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -4112,8 +4185,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 1 column count" ); assert_eq!( @@ -4121,7 +4195,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -4149,8 +4224,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 2 column count" ); assert_eq!( @@ -4158,7 +4234,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -4169,7 +4246,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .x, - 61, + 60, "pane 3 x position" ); assert_eq!( @@ -4186,8 +4263,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 3 column count" ); assert_eq!( @@ -4195,8 +4273,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 3 row count" ); @@ -4223,8 +4302,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 4 column count" ); assert_eq!( @@ -4232,7 +4312,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -4243,7 +4324,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .x, - 61, + 60, "pane 5 x position" ); assert_eq!( @@ -4252,7 +4333,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .y, - 17, + 16, "pane 5 y position" ); assert_eq!( @@ -4260,7 +4341,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "pane 5 column count" ); @@ -4269,8 +4351,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 5 row count" ); @@ -4297,8 +4380,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 6 column count" ); assert_eq!( @@ -4306,7 +4390,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -4317,7 +4402,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .x, - 76, + 75, "pane 7 x position" ); assert_eq!( @@ -4326,7 +4411,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .y, - 17, + 16, "pane 7 y position" ); assert_eq!( @@ -4334,7 +4419,8 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 8, "pane 7 column count" ); @@ -4343,8 +4429,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 7 row count" ); @@ -4354,7 +4441,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .x, - 84, + 83, "pane 8 x position" ); assert_eq!( @@ -4363,7 +4450,7 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .unwrap() .position_and_size() .y, - 17, + 16, "pane 8 y position" ); assert_eq!( @@ -4371,8 +4458,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 7, + .cols + .as_usize(), + 8, "pane 8 column count" ); assert_eq!( @@ -4380,8 +4468,9 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 8 row count" ); } @@ -4397,14 +4486,11 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ // └─┴───────┴─┘ └─┴───────┴─┘ // █ == focused pane - let position_and_size = PositionAndSize { - cols: 121, + let size = Size { + cols: 122, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -4443,8 +4529,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 1 column count" ); assert_eq!( @@ -4452,7 +4539,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -4480,8 +4568,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 2 column count" ); assert_eq!( @@ -4489,7 +4578,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -4500,7 +4590,7 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .unwrap() .position_and_size() .x, - 61, + 60, "pane 3 x position" ); assert_eq!( @@ -4517,7 +4607,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "pane 3 column count" ); @@ -4526,8 +4617,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 3 row count" ); @@ -4554,8 +4646,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 4 column count" ); assert_eq!( @@ -4563,7 +4656,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -4574,7 +4668,7 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .unwrap() .position_and_size() .x, - 76, + 75, "pane 5 x position" ); assert_eq!( @@ -4591,7 +4685,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 8, "pane 5 column count" ); @@ -4600,8 +4695,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 5 row count" ); @@ -4611,7 +4707,7 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .unwrap() .position_and_size() .x, - 84, + 83, "pane 6 x position" ); assert_eq!( @@ -4628,8 +4724,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 7, + .cols + .as_usize(), + 8, "pane 6 column count" ); assert_eq!( @@ -4637,8 +4734,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 6 row count" ); @@ -4648,7 +4746,7 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .unwrap() .position_and_size() .x, - 61, + 60, "pane 7 x position" ); assert_eq!( @@ -4657,7 +4755,7 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .unwrap() .position_and_size() .y, - 17, + 16, "pane 7 y position" ); assert_eq!( @@ -4665,8 +4763,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 7 column count" ); assert_eq!( @@ -4674,8 +4773,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 7 row count" ); @@ -4702,8 +4802,9 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 8 column count" ); assert_eq!( @@ -4711,7 +4812,8 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_ .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 8 row count" ); @@ -4726,14 +4828,11 @@ pub fn cannot_resize_down_when_pane_below_is_at_minimum_height() { // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 10, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.resize_down(); @@ -4743,7 +4842,8 @@ pub fn cannot_resize_down_when_pane_below_is_at_minimum_height() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 1 height stayed the same" ); @@ -4752,7 +4852,8 @@ pub fn cannot_resize_down_when_pane_below_is_at_minimum_height() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 2 height stayed the same" ); @@ -4767,14 +4868,11 @@ pub fn resize_left_with_pane_to_the_left() { // └─────┴─────┘ └───┴───────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.resize_left(); @@ -4801,8 +4899,9 @@ pub fn resize_left_with_pane_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 1 column count" ); assert_eq!( @@ -4810,7 +4909,8 @@ pub fn resize_left_with_pane_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 1 row count" ); @@ -4821,7 +4921,7 @@ pub fn resize_left_with_pane_to_the_left() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 2 x position" ); assert_eq!( @@ -4838,8 +4938,9 @@ pub fn resize_left_with_pane_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -4847,7 +4948,8 @@ pub fn resize_left_with_pane_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -4861,14 +4963,11 @@ pub fn resize_left_with_pane_to_the_right() { // │█████│ │ │███│ │ // └─────┴─────┘ └───┴───────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.resize_left(); @@ -4896,8 +4995,9 @@ pub fn resize_left_with_pane_to_the_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 1 column count" ); assert_eq!( @@ -4905,7 +5005,8 @@ pub fn resize_left_with_pane_to_the_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 1 row count" ); @@ -4916,7 +5017,7 @@ pub fn resize_left_with_pane_to_the_right() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 2 x position" ); assert_eq!( @@ -4933,8 +5034,9 @@ pub fn resize_left_with_pane_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -4942,7 +5044,8 @@ pub fn resize_left_with_pane_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -4957,14 +5060,11 @@ pub fn resize_left_with_panes_to_the_left_and_right() { // └─────┴─────┴─────┘ └─────┴───┴───────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.move_focus_left(); @@ -4993,8 +5093,9 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 1 column count" ); assert_eq!( @@ -5002,7 +5103,8 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 1 row count" ); @@ -5013,7 +5115,7 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 2 x position" ); assert_eq!( @@ -5030,8 +5132,9 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 40, + .cols + .as_usize(), + 36, "pane 2 column count" ); assert_eq!( @@ -5039,7 +5142,8 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -5050,7 +5154,7 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .unwrap() .position_and_size() .x, - 91, + 90, "pane 2 x position" ); assert_eq!( @@ -5067,8 +5171,9 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 2 column count" ); assert_eq!( @@ -5076,7 +5181,8 @@ pub fn resize_left_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -5090,14 +5196,11 @@ pub fn resize_left_with_multiple_panes_to_the_left() { // │ │█████│ │ │███████│ // └─────┴─────┘ └───┴───────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.horizontal_split(PaneId::Terminal(3)); @@ -5127,8 +5230,9 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 1 column count" ); assert_eq!( @@ -5136,7 +5240,8 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -5147,7 +5252,7 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 2 x position" ); assert_eq!( @@ -5164,8 +5269,9 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -5173,7 +5279,8 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -5201,8 +5308,9 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -5210,7 +5318,8 @@ pub fn resize_left_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 2 row count" ); @@ -5225,14 +5334,11 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { // └─────┴─────┘ └───┴───────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.move_focus_up(); @@ -5263,7 +5369,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -5272,7 +5379,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -5300,8 +5408,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -5309,7 +5418,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -5320,7 +5430,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 3 x position" ); assert_eq!( @@ -5337,8 +5447,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 3 column count" ); assert_eq!( @@ -5346,7 +5457,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 3 row count" ); @@ -5374,7 +5486,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -5383,7 +5496,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -5398,14 +5512,11 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { // └─────┴─────┘ └───┴───────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.move_focus_up(); @@ -5437,7 +5548,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -5446,7 +5558,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -5474,8 +5587,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -5483,7 +5597,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -5494,7 +5609,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 3 x position" ); assert_eq!( @@ -5511,8 +5626,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 3 column count" ); assert_eq!( @@ -5520,7 +5636,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 3 row count" ); @@ -5548,7 +5665,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -5557,7 +5675,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -5572,14 +5691,11 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.move_focus_up(); @@ -5609,8 +5725,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 1 column count" ); assert_eq!( @@ -5618,7 +5735,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -5646,7 +5764,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -5655,7 +5774,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -5683,7 +5803,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -5692,7 +5813,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 3 row count" ); @@ -5703,7 +5825,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 4 x position" ); assert_eq!( @@ -5720,8 +5842,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 4 column count" ); assert_eq!( @@ -5729,7 +5852,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -5744,14 +5868,11 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.move_focus_up(); @@ -5782,8 +5903,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 1 column count" ); assert_eq!( @@ -5791,7 +5913,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -5819,7 +5942,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -5828,7 +5952,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -5856,7 +5981,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -5865,7 +5991,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 3 row count" ); @@ -5876,7 +6003,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .unwrap() .position_and_size() .x, - 51, + 54, "pane 4 x position" ); assert_eq!( @@ -5893,8 +6020,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 4 column count" ); assert_eq!( @@ -5902,7 +6030,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -5919,14 +6048,11 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -5960,7 +6086,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -5969,8 +6096,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 1 row count" ); @@ -5989,7 +6117,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .unwrap() .position_and_size() .y, - 15, + 14, "pane 2 y position" ); assert_eq!( @@ -5997,8 +6125,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -6006,7 +6135,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 8, "pane 2 row count" ); @@ -6026,7 +6156,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .unwrap() .position_and_size() .y, - 23, + 22, "pane 3 y position" ); assert_eq!( @@ -6034,7 +6164,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -6043,8 +6174,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "pane 3 row count" ); @@ -6063,7 +6195,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .unwrap() .position_and_size() .y, - 23, + 22, "pane 4 y position" ); assert_eq!( @@ -6071,7 +6203,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -6080,8 +6213,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "pane 4 row count" ); @@ -6091,7 +6225,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .unwrap() .position_and_size() .x, - 51, + 54, "pane 5 x position" ); assert_eq!( @@ -6100,7 +6234,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .unwrap() .position_and_size() .y, - 15, + 14, "pane 5 y position" ); assert_eq!( @@ -6108,8 +6242,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 5 column count" ); assert_eq!( @@ -6117,7 +6252,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 8, "pane 5 row count" ); @@ -6145,7 +6281,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 6 column count" ); @@ -6154,8 +6291,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 6 row count" ); } @@ -6171,14 +6309,11 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -6213,7 +6348,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -6222,8 +6358,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 1 row count" ); @@ -6242,7 +6379,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .unwrap() .position_and_size() .y, - 15, + 14, "pane 2 y position" ); assert_eq!( @@ -6250,8 +6387,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -6259,7 +6397,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 8, "pane 2 row count" ); @@ -6279,7 +6418,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .unwrap() .position_and_size() .y, - 23, + 22, "pane 3 y position" ); assert_eq!( @@ -6287,7 +6426,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -6296,8 +6436,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "pane 3 row count" ); @@ -6316,7 +6457,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .unwrap() .position_and_size() .y, - 23, + 22, "pane 4 y position" ); assert_eq!( @@ -6324,7 +6465,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -6333,8 +6475,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "pane 4 row count" ); @@ -6344,7 +6487,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .unwrap() .position_and_size() .x, - 51, + 54, "pane 5 x position" ); assert_eq!( @@ -6353,7 +6496,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .unwrap() .position_and_size() .y, - 15, + 14, "pane 5 y position" ); assert_eq!( @@ -6361,8 +6504,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 5 column count" ); assert_eq!( @@ -6370,7 +6514,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 8, "pane 5 row count" ); @@ -6398,7 +6543,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 6 column count" ); @@ -6407,8 +6553,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 6 row count" ); } @@ -6424,14 +6571,11 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 70, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -6469,7 +6613,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -6478,7 +6623,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 35, "pane 1 row count" ); @@ -6506,8 +6652,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -6515,8 +6662,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 20, + .rows + .as_usize(), + 21, "pane 2 row count" ); @@ -6535,7 +6683,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .y, - 55, + 56, "pane 3 y position" ); assert_eq!( @@ -6543,7 +6691,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -6552,8 +6701,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -6572,7 +6722,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .y, - 55, + 56, "pane 4 y position" ); assert_eq!( @@ -6580,7 +6730,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -6589,8 +6740,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 4 row count" ); @@ -6617,7 +6769,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 5 column count" ); @@ -6626,7 +6779,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 35, "pane 5 row count" ); @@ -6637,7 +6791,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .x, - 51, + 54, "pane 6 x position" ); assert_eq!( @@ -6654,8 +6808,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 6 column count" ); assert_eq!( @@ -6663,8 +6818,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 10, + .rows + .as_usize(), + 11, "pane 6 row count" ); @@ -6674,7 +6830,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .x, - 51, + 54, "pane 7 x position" ); assert_eq!( @@ -6683,7 +6839,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .y, - 45, + 46, "pane 7 y position" ); assert_eq!( @@ -6691,8 +6847,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 7 column count" ); assert_eq!( @@ -6700,7 +6857,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 7 row count" ); @@ -6711,7 +6869,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .x, - 51, + 54, "pane 8 x position" ); assert_eq!( @@ -6720,7 +6878,7 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .unwrap() .position_and_size() .y, - 50, + 51, "pane 8 y position" ); assert_eq!( @@ -6728,8 +6886,9 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 8 column count" ); assert_eq!( @@ -6737,7 +6896,8 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 8 row count" ); @@ -6754,14 +6914,11 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 70, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -6800,7 +6957,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -6809,7 +6967,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 35, "pane 1 row count" ); @@ -6837,8 +6996,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -6846,8 +7006,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 10, + .rows + .as_usize(), + 11, "pane 2 row count" ); @@ -6866,7 +7027,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 55, + 56, "pane 3 y position" ); assert_eq!( @@ -6874,7 +7035,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -6883,8 +7045,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -6903,7 +7066,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 55, + 56, "pane 4 y position" ); assert_eq!( @@ -6911,7 +7074,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -6920,8 +7084,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 15, + .rows + .as_usize(), + 14, "pane 4 row count" ); @@ -6948,7 +7113,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 5 column count" ); @@ -6957,7 +7123,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 35, "pane 5 row count" ); @@ -6968,7 +7135,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .x, - 51, + 54, "pane 6 x position" ); assert_eq!( @@ -6985,8 +7152,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 70, + .cols + .as_usize(), + 67, "pane 6 column count" ); assert_eq!( @@ -6994,8 +7162,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 20, + .rows + .as_usize(), + 21, "pane 6 row count" ); @@ -7014,7 +7183,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 45, + 46, "pane 7 y position" ); assert_eq!( @@ -7022,8 +7191,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 7 column count" ); assert_eq!( @@ -7031,7 +7201,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 7 row count" ); @@ -7051,7 +7222,7 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 50, + 51, "pane 8 y position" ); assert_eq!( @@ -7059,8 +7230,9 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 51, + .cols + .as_usize(), + 54, "pane 8 column count" ); assert_eq!( @@ -7068,7 +7240,8 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 8 row count" ); @@ -7083,14 +7256,8 @@ pub fn cannot_resize_left_when_pane_to_the_left_is_at_minimum_width() { // └─┴─┘ └─┴─┘ // █ == focused pane - let position_and_size = PositionAndSize { - cols: 10, - rows: 20, - x: 0, - y: 0, - ..Default::default() - }; - let mut tab = create_new_tab(position_and_size); + let size = Size { cols: 10, rows: 20 }; + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.resize_left(); @@ -7099,7 +7266,8 @@ pub fn cannot_resize_left_when_pane_to_the_left_is_at_minimum_width() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 5, "pane 1 columns stayed the same" ); @@ -7108,7 +7276,8 @@ pub fn cannot_resize_left_when_pane_to_the_left_is_at_minimum_width() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 5, "pane 2 columns stayed the same" ); @@ -7123,14 +7292,11 @@ pub fn resize_right_with_pane_to_the_left() { // └─────┴─────┘ └───────┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.resize_right(); @@ -7157,8 +7323,9 @@ pub fn resize_right_with_pane_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 1 column count" ); assert_eq!( @@ -7166,7 +7333,8 @@ pub fn resize_right_with_pane_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 1 row count" ); @@ -7177,7 +7345,7 @@ pub fn resize_right_with_pane_to_the_left() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 2 x position" ); assert_eq!( @@ -7194,8 +7362,9 @@ pub fn resize_right_with_pane_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -7203,7 +7372,8 @@ pub fn resize_right_with_pane_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -7218,14 +7388,11 @@ pub fn resize_right_with_pane_to_the_right() { // └─────┴─────┘ └───────┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.resize_right(); @@ -7253,8 +7420,9 @@ pub fn resize_right_with_pane_to_the_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 1 column count" ); assert_eq!( @@ -7262,7 +7430,8 @@ pub fn resize_right_with_pane_to_the_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 1 row count" ); @@ -7273,7 +7442,7 @@ pub fn resize_right_with_pane_to_the_right() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 2 x position" ); assert_eq!( @@ -7290,8 +7459,9 @@ pub fn resize_right_with_pane_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -7299,7 +7469,8 @@ pub fn resize_right_with_pane_to_the_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -7314,14 +7485,11 @@ pub fn resize_right_with_panes_to_the_left_and_right() { // └─────┴─────┴─────┘ └─────┴───────┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.move_focus_left(); @@ -7350,7 +7518,8 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -7359,7 +7528,8 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 1 row count" ); @@ -7387,8 +7557,9 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 40, + .cols + .as_usize(), + 36, "pane 2 column count" ); assert_eq!( @@ -7396,7 +7567,8 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -7407,7 +7579,7 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .unwrap() .position_and_size() .x, - 101, + 97, "pane 2 x position" ); assert_eq!( @@ -7424,8 +7596,9 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 20, + .cols + .as_usize(), + 24, "pane 2 column count" ); assert_eq!( @@ -7433,7 +7606,8 @@ pub fn resize_right_with_panes_to_the_left_and_right() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -7448,14 +7622,11 @@ pub fn resize_right_with_multiple_panes_to_the_left() { // └─────┴─────┘ └───────┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.horizontal_split(PaneId::Terminal(3)); @@ -7485,8 +7656,9 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 1 column count" ); assert_eq!( @@ -7494,7 +7666,8 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -7505,7 +7678,7 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 2 x position" ); assert_eq!( @@ -7522,8 +7695,9 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -7531,7 +7705,8 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 20, "pane 2 row count" ); @@ -7559,8 +7734,9 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 3 column count" ); assert_eq!( @@ -7568,7 +7744,8 @@ pub fn resize_right_with_multiple_panes_to_the_left() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 3 row count" ); @@ -7583,14 +7760,11 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { // └─────┴─────┘ └───────┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.horizontal_split(PaneId::Terminal(3)); @@ -7621,7 +7795,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -7630,7 +7805,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -7658,7 +7834,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 2 column count" ); @@ -7667,7 +7844,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 2 row count" ); @@ -7695,8 +7873,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 3 column count" ); assert_eq!( @@ -7704,7 +7883,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 3 row count" ); @@ -7715,7 +7895,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 4 x position" ); assert_eq!( @@ -7732,8 +7912,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 4 column count" ); assert_eq!( @@ -7741,7 +7922,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 4 row count" ); @@ -7755,14 +7937,11 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { // │█████│ │ │███████│ │ // └─────┴─────┘ └───────┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.horizontal_split(PaneId::Terminal(3)); @@ -7794,7 +7973,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -7803,7 +7983,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -7831,7 +8012,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 2 column count" ); @@ -7840,7 +8022,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 2 row count" ); @@ -7868,8 +8051,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 3 column count" ); assert_eq!( @@ -7877,7 +8061,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 3 row count" ); @@ -7888,7 +8073,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 4 x position" ); assert_eq!( @@ -7905,8 +8090,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 4 column count" ); assert_eq!( @@ -7914,7 +8100,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 4 row count" ); @@ -7929,14 +8116,11 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.horizontal_split(PaneId::Terminal(3)); @@ -7968,8 +8152,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 1 column count" ); assert_eq!( @@ -7977,7 +8162,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -7988,7 +8174,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 2 x position" ); assert_eq!( @@ -8005,8 +8191,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -8014,7 +8201,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 2 row count" ); @@ -8042,7 +8230,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -8051,7 +8240,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 3 row count" ); @@ -8079,7 +8269,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -8088,7 +8279,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 4 row count" ); @@ -8103,14 +8295,11 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.move_focus_left(); tab.horizontal_split(PaneId::Terminal(3)); @@ -8143,8 +8332,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 1 column count" ); assert_eq!( @@ -8152,7 +8342,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -8163,7 +8354,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .unwrap() .position_and_size() .x, - 71, + 67, "pane 2 x position" ); assert_eq!( @@ -8180,8 +8371,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 2 column count" ); assert_eq!( @@ -8189,7 +8381,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 2 row count" ); @@ -8217,7 +8410,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -8226,7 +8420,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 3 row count" ); @@ -8254,7 +8449,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -8263,7 +8459,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 4 row count" ); @@ -8280,14 +8477,11 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -8321,7 +8515,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -8330,7 +8525,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -8358,8 +8554,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -8367,7 +8564,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 2 row count" ); @@ -8395,7 +8593,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -8404,7 +8603,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 3 row count" ); @@ -8432,7 +8632,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -8441,7 +8642,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 4 row count" ); @@ -8452,7 +8654,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .unwrap() .position_and_size() .x, - 71, + 67, "pane 5 x position" ); assert_eq!( @@ -8469,8 +8671,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 5 column count" ); assert_eq!( @@ -8478,7 +8681,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 5 row count" ); @@ -8506,7 +8710,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 6 column count" ); @@ -8515,7 +8720,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 6 row count" ); @@ -8531,14 +8737,11 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ // │ │ │ │ │ │ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -8573,7 +8776,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -8582,7 +8786,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 1 row count" ); @@ -8610,8 +8815,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -8619,7 +8825,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 2 row count" ); @@ -8647,7 +8854,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -8656,7 +8864,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 3 row count" ); @@ -8684,7 +8893,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -8693,7 +8903,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 4 row count" ); @@ -8704,7 +8915,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .unwrap() .position_and_size() .x, - 71, + 67, "pane 5 x position" ); assert_eq!( @@ -8721,8 +8932,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 5 column count" ); assert_eq!( @@ -8730,7 +8942,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 5 row count" ); @@ -8758,7 +8971,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 6 column count" ); @@ -8767,7 +8981,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_ .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 10, "pane 6 row count" ); @@ -8783,14 +8998,11 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo // ├─────┼─────┤ ├─────┬─┴───┤ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 70, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -8828,7 +9040,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -8837,8 +9050,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 33, + .rows + .as_usize(), + 31, "pane 1 row count" ); @@ -8857,7 +9071,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 33, + 31, "pane 2 y position" ); assert_eq!( @@ -8865,8 +9079,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -8874,8 +9089,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 20, + .rows + .as_usize(), + 21, "pane 2 row count" ); @@ -8894,7 +9110,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 53, + 52, "pane 3 y position" ); assert_eq!( @@ -8902,7 +9118,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -8911,8 +9128,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 18, "pane 3 row count" ); @@ -8931,7 +9149,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 53, + 52, "pane 4 y position" ); assert_eq!( @@ -8939,7 +9157,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -8948,8 +9167,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 18, "pane 4 row count" ); @@ -8976,7 +9196,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 5 column count" ); @@ -8985,8 +9206,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 33, + .rows + .as_usize(), + 31, "pane 5 row count" ); @@ -8996,7 +9218,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .x, - 71, + 67, "pane 6 x position" ); assert_eq!( @@ -9005,7 +9227,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 33, + 31, "pane 6 y position" ); assert_eq!( @@ -9013,8 +9235,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 6 column count" ); assert_eq!( @@ -9022,8 +9245,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 10, + .rows + .as_usize(), + 11, "pane 6 row count" ); @@ -9033,7 +9257,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .x, - 71, + 67, "pane 7 x position" ); assert_eq!( @@ -9042,7 +9266,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 43, + 42, "pane 7 y position" ); assert_eq!( @@ -9050,8 +9274,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 7 column count" ); assert_eq!( @@ -9059,7 +9284,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 7 row count" ); @@ -9070,7 +9296,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .x, - 71, + 67, "pane 8 x position" ); assert_eq!( @@ -9079,7 +9305,7 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .unwrap() .position_and_size() .y, - 48, + 47, "pane 8 y position" ); assert_eq!( @@ -9087,8 +9313,9 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 8 column count" ); assert_eq!( @@ -9096,7 +9323,8 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 8 row count" ); @@ -9112,14 +9340,11 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab // ├─────┼─────┤ ├─────┬─┴───┤ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 70, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -9158,7 +9383,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -9167,8 +9393,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 33, + .rows + .as_usize(), + 31, "pane 1 row count" ); @@ -9187,7 +9414,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .y, - 33, + 31, "pane 2 y position" ); assert_eq!( @@ -9195,8 +9422,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 2 column count" ); assert_eq!( @@ -9204,8 +9432,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 10, + .rows + .as_usize(), + 11, "pane 2 row count" ); @@ -9224,7 +9453,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .y, - 53, + 52, "pane 3 y position" ); assert_eq!( @@ -9232,7 +9461,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 3 column count" ); @@ -9241,8 +9471,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 18, "pane 3 row count" ); @@ -9261,7 +9492,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .y, - 53, + 52, "pane 4 y position" ); assert_eq!( @@ -9269,7 +9500,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -9278,8 +9510,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 18, "pane 4 row count" ); @@ -9306,7 +9539,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 5 column count" ); @@ -9315,8 +9549,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 33, + .rows + .as_usize(), + 31, "pane 5 row count" ); @@ -9326,7 +9561,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .x, - 71, + 67, "pane 6 x position" ); assert_eq!( @@ -9335,7 +9570,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .y, - 33, + 31, "pane 6 y position" ); assert_eq!( @@ -9343,8 +9578,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 50, + .cols + .as_usize(), + 54, "pane 6 column count" ); assert_eq!( @@ -9352,8 +9588,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, - 20, + .rows + .as_usize(), + 21, "pane 6 row count" ); @@ -9372,7 +9609,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .y, - 43, + 42, "pane 7 y position" ); assert_eq!( @@ -9380,8 +9617,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 7 column count" ); assert_eq!( @@ -9389,7 +9627,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 7 row count" ); @@ -9409,7 +9648,7 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .unwrap() .position_and_size() .y, - 48, + 47, "pane 8 y position" ); assert_eq!( @@ -9417,8 +9656,9 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 71, + .cols + .as_usize(), + 67, "pane 8 column count" ); assert_eq!( @@ -9426,7 +9666,8 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 8 row count" ); @@ -9440,14 +9681,8 @@ pub fn cannot_resize_right_when_pane_to_the_left_is_at_minimum_width() { // │ │█│ │ │█│ // └─┴─┘ └─┴─┘ // █ == focused pane - let position_and_size = PositionAndSize { - cols: 10, - rows: 20, - x: 0, - y: 0, - ..Default::default() - }; - let mut tab = create_new_tab(position_and_size); + let size = Size { cols: 10, rows: 20 }; + let mut tab = create_new_tab(size); tab.vertical_split(PaneId::Terminal(2)); tab.resize_right(); @@ -9456,7 +9691,8 @@ pub fn cannot_resize_right_when_pane_to_the_left_is_at_minimum_width() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 5, "pane 1 columns stayed the same" ); @@ -9465,7 +9701,8 @@ pub fn cannot_resize_right_when_pane_to_the_left_is_at_minimum_width() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 5, "pane 2 columns stayed the same" ); @@ -9481,14 +9718,11 @@ pub fn resize_up_with_pane_above() { // │███████████│ │███████████│ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.resize_up(); @@ -9515,7 +9749,8 @@ pub fn resize_up_with_pane_above() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 1 column count" ); @@ -9524,8 +9759,9 @@ pub fn resize_up_with_pane_above() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 8, + .rows + .as_usize(), + 9, "pane 1 row count" ); @@ -9544,7 +9780,7 @@ pub fn resize_up_with_pane_above() { .unwrap() .position_and_size() .y, - 8, + 9, "pane 2 y position" ); assert_eq!( @@ -9552,7 +9788,8 @@ pub fn resize_up_with_pane_above() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 2 column count" ); @@ -9561,8 +9798,9 @@ pub fn resize_up_with_pane_above() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 12, + .rows + .as_usize(), + 11, "pane 2 row count" ); } @@ -9577,14 +9815,11 @@ pub fn resize_up_with_pane_below() { // │ │ │ │ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 20, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.resize_up(); @@ -9612,7 +9847,8 @@ pub fn resize_up_with_pane_below() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 1 column count" ); @@ -9621,8 +9857,9 @@ pub fn resize_up_with_pane_below() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 8, + .rows + .as_usize(), + 9, "pane 1 row count" ); @@ -9641,7 +9878,7 @@ pub fn resize_up_with_pane_below() { .unwrap() .position_and_size() .y, - 8, + 9, "pane 2 y position" ); assert_eq!( @@ -9649,7 +9886,8 @@ pub fn resize_up_with_pane_below() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 2 column count" ); @@ -9658,8 +9896,9 @@ pub fn resize_up_with_pane_below() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 12, + .rows + .as_usize(), + 11, "pane 2 row count" ); } @@ -9677,14 +9916,11 @@ pub fn resize_up_with_panes_above_and_below() { // │ │ │ │ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.horizontal_split(PaneId::Terminal(3)); tab.move_focus_up(); @@ -9713,7 +9949,8 @@ pub fn resize_up_with_panes_above_and_below() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 1 column count" ); @@ -9722,7 +9959,8 @@ pub fn resize_up_with_panes_above_and_below() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 13, "pane 1 row count" ); @@ -9750,7 +9988,8 @@ pub fn resize_up_with_panes_above_and_below() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 2 column count" ); @@ -9759,8 +9998,9 @@ pub fn resize_up_with_panes_above_and_below() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 10, + .rows + .as_usize(), + 9, "pane 2 row count" ); @@ -9779,7 +10019,7 @@ pub fn resize_up_with_panes_above_and_below() { .unwrap() .position_and_size() .y, - 23, + 22, "pane 3 y position" ); assert_eq!( @@ -9787,7 +10027,8 @@ pub fn resize_up_with_panes_above_and_below() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 3 column count" ); @@ -9796,8 +10037,9 @@ pub fn resize_up_with_panes_above_and_below() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 7, + .rows + .as_usize(), + 8, "pane 3 row count" ); } @@ -9811,14 +10053,11 @@ pub fn resize_up_with_multiple_panes_above() { // │███████████│ │███████████│ // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -9848,7 +10087,8 @@ pub fn resize_up_with_multiple_panes_above() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -9857,8 +10097,9 @@ pub fn resize_up_with_multiple_panes_above() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 1 row count" ); @@ -9877,7 +10118,7 @@ pub fn resize_up_with_multiple_panes_above() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 2 y position" ); assert_eq!( @@ -9885,7 +10126,8 @@ pub fn resize_up_with_multiple_panes_above() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 121, "pane 2 column count" ); @@ -9894,8 +10136,9 @@ pub fn resize_up_with_multiple_panes_above() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 2 row count" ); @@ -9922,7 +10165,8 @@ pub fn resize_up_with_multiple_panes_above() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -9931,8 +10175,9 @@ pub fn resize_up_with_multiple_panes_above() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); } @@ -9945,14 +10190,11 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { // │ │█████│ │ │█████│ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -9983,7 +10225,8 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -9992,7 +10235,8 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -10020,7 +10264,8 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -10029,7 +10274,8 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -10057,7 +10303,8 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -10066,8 +10313,9 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -10086,7 +10334,7 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 4 y position" ); assert_eq!( @@ -10094,7 +10342,8 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -10103,8 +10352,9 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 4 row count" ); } @@ -10119,14 +10369,11 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { // │ │ │ │ │ │ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -10158,7 +10405,8 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -10167,7 +10415,8 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -10195,7 +10444,8 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -10204,7 +10454,8 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -10232,7 +10483,8 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -10241,8 +10493,9 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -10261,7 +10514,7 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 4 y position" ); assert_eq!( @@ -10269,7 +10522,8 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -10278,8 +10532,9 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 4 row count" ); } @@ -10294,14 +10549,11 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { // │█████│ │ │█████│ │ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -10333,7 +10585,8 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -10342,8 +10595,9 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 1 row count" ); @@ -10362,7 +10616,7 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 2 y position" ); assert_eq!( @@ -10370,7 +10624,8 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -10379,8 +10634,9 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 2 row count" ); @@ -10407,7 +10663,8 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -10416,7 +10673,8 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 3 row count" ); @@ -10444,7 +10702,8 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -10453,7 +10712,8 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -10469,14 +10729,11 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { // │ │ │ │ │ │ // └─────┴─────┘ └─────┴─────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -10509,7 +10766,8 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -10518,8 +10776,9 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 1 row count" ); @@ -10538,7 +10797,7 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 2 y position" ); assert_eq!( @@ -10546,7 +10805,8 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -10555,8 +10815,9 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 2 row count" ); @@ -10583,7 +10844,8 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 3 column count" ); @@ -10592,7 +10854,8 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 3 row count" ); @@ -10620,7 +10883,8 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 60, "pane 4 column count" ); @@ -10629,7 +10893,8 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -10645,14 +10910,11 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { // │ │███│ │ │ │███│ │ // └───┴───┴───┘ └───┴───┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -10685,7 +10947,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -10694,7 +10957,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -10722,7 +10986,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -10731,7 +10996,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -10751,7 +11017,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 3 y position" ); assert_eq!( @@ -10759,7 +11025,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 3 column count" ); @@ -10768,8 +11035,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 3 row count" ); @@ -10796,7 +11064,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 4 column count" ); @@ -10805,7 +11074,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -10833,7 +11103,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 5 column count" ); @@ -10842,8 +11113,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 5 row count" ); @@ -10870,7 +11142,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 6 column count" ); @@ -10879,7 +11152,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -10895,14 +11169,11 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { // │ │ │ │ │ │ │ │ // └───┴───┴───┘ └───┴───┴───┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.vertical_split(PaneId::Terminal(3)); tab.vertical_split(PaneId::Terminal(4)); @@ -10936,7 +11207,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 1 column count" ); @@ -10945,7 +11217,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -10973,7 +11246,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 61, "pane 2 column count" ); @@ -10982,7 +11256,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -11002,7 +11277,7 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .unwrap() .position_and_size() .y, - 13, + 14, "pane 3 y position" ); assert_eq!( @@ -11010,7 +11285,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 3 column count" ); @@ -11019,8 +11295,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 3 row count" ); @@ -11047,7 +11324,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 4 column count" ); @@ -11056,7 +11334,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -11084,7 +11363,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 5 column count" ); @@ -11093,8 +11373,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 5 row count" ); @@ -11121,7 +11402,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 30, "pane 6 column count" ); @@ -11130,7 +11412,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() { .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -11146,14 +11429,11 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ // │ │ │███│ │ │ │ │ │███│ │ │ // └─┴─┴───┴─┴─┘ └─┴─┴───┴─┴─┘ // █ == focused pane - let position_and_size = PositionAndSize { - cols: 121, + let size = Size { + cols: 122, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -11190,8 +11470,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 1 column count" ); assert_eq!( @@ -11199,7 +11480,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -11227,8 +11509,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 2 column count" ); assert_eq!( @@ -11236,7 +11519,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -11247,7 +11531,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .x, - 61, + 60, "pane 3 x position" ); assert_eq!( @@ -11264,8 +11548,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 3 column count" ); assert_eq!( @@ -11273,8 +11558,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -11301,8 +11587,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 4 column count" ); assert_eq!( @@ -11310,7 +11597,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -11321,7 +11609,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .x, - 61, + 60, "pane 5 x position" ); assert_eq!( @@ -11330,7 +11618,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .y, - 13, + 14, "pane 5 y position" ); assert_eq!( @@ -11338,7 +11626,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "pane 5 column count" ); @@ -11347,8 +11636,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 5 row count" ); @@ -11375,8 +11665,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 6 column count" ); assert_eq!( @@ -11384,7 +11675,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -11395,7 +11687,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .x, - 76, + 75, "pane 7 x position" ); assert_eq!( @@ -11404,7 +11696,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .y, - 13, + 14, "pane 7 y position" ); assert_eq!( @@ -11412,7 +11704,8 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 8, "pane 7 column count" ); @@ -11421,8 +11714,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 7 row count" ); @@ -11432,7 +11726,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .x, - 84, + 83, "pane 8 x position" ); assert_eq!( @@ -11441,7 +11735,7 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .unwrap() .position_and_size() .y, - 13, + 14, "pane 8 y position" ); assert_eq!( @@ -11449,8 +11743,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 7, + .cols + .as_usize(), + 8, "pane 8 column count" ); assert_eq!( @@ -11458,8 +11753,9 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_ .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 8 row count" ); } @@ -11474,14 +11770,11 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri // │ │ │ │ │ │ │ │ // └─┴───────┴─┘ └─┴───────┴─┘ // █ == focused pane - let position_and_size = PositionAndSize { - cols: 121, + let size = Size { + cols: 122, rows: 30, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.move_focus_up(); tab.vertical_split(PaneId::Terminal(3)); @@ -11519,8 +11812,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 1 column count" ); assert_eq!( @@ -11528,7 +11822,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 1 row count" ); @@ -11556,8 +11851,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .cols, - 61, + .cols + .as_usize(), + 60, "pane 2 column count" ); assert_eq!( @@ -11565,7 +11861,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 2 row count" ); @@ -11576,7 +11873,7 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .unwrap() .position_and_size() .x, - 61, + 60, "pane 3 x position" ); assert_eq!( @@ -11593,7 +11890,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 15, "pane 3 column count" ); @@ -11602,8 +11900,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(3)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 3 row count" ); @@ -11630,8 +11929,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 4 column count" ); assert_eq!( @@ -11639,7 +11939,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(4)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 4 row count" ); @@ -11650,7 +11951,7 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .unwrap() .position_and_size() .x, - 61, + 60, "pane 5 x position" ); assert_eq!( @@ -11659,7 +11960,7 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .unwrap() .position_and_size() .y, - 13, + 14, "pane 5 y position" ); assert_eq!( @@ -11667,8 +11968,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 5 column count" ); assert_eq!( @@ -11676,8 +11978,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(5)) .unwrap() .position_and_size() - .rows, - 17, + .rows + .as_usize(), + 16, "pane 5 row count" ); @@ -11704,8 +12007,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .cols, - 30, + .cols + .as_usize(), + 31, "pane 6 column count" ); assert_eq!( @@ -11713,7 +12017,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(6)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 15, "pane 6 row count" ); @@ -11724,7 +12029,7 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .unwrap() .position_and_size() .x, - 76, + 75, "pane 7 x position" ); assert_eq!( @@ -11741,7 +12046,8 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .cols, + .cols + .as_usize(), 8, "pane 7 column count" ); @@ -11750,8 +12056,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(7)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 7 row count" ); @@ -11761,7 +12068,7 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .unwrap() .position_and_size() .x, - 84, + 83, "pane 8 x position" ); assert_eq!( @@ -11778,8 +12085,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .cols, - 7, + .cols + .as_usize(), + 8, "pane 8 column count" ); assert_eq!( @@ -11787,8 +12095,9 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri .get(&PaneId::Terminal(8)) .unwrap() .position_and_size() - .rows, - 13, + .rows + .as_usize(), + 14, "pane 8 row count" ); } @@ -11802,14 +12111,11 @@ pub fn cannot_resize_up_when_pane_above_is_at_minimum_height() { // └───────────┘ └───────────┘ // █ == focused pane - let position_and_size = PositionAndSize { + let size = Size { cols: 121, rows: 10, - x: 0, - y: 0, - ..Default::default() }; - let mut tab = create_new_tab(position_and_size); + let mut tab = create_new_tab(size); tab.horizontal_split(PaneId::Terminal(2)); tab.resize_down(); @@ -11818,7 +12124,8 @@ pub fn cannot_resize_up_when_pane_above_is_at_minimum_height() { .get(&PaneId::Terminal(1)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 1 height stayed the same" ); @@ -11827,7 +12134,8 @@ pub fn cannot_resize_up_when_pane_above_is_at_minimum_height() { .get(&PaneId::Terminal(2)) .unwrap() .position_and_size() - .rows, + .rows + .as_usize(), 5, "pane 2 height stayed the same" ); diff --git a/zellij-server/src/wasm_vm.rs b/zellij-server/src/wasm_vm.rs index 0f6b721e..e8d9344e 100644 --- a/zellij-server/src/wasm_vm.rs +++ b/zellij-server/src/wasm_vm.rs @@ -170,9 +170,6 @@ pub(crate) fn zellij_exports(store: &Store, plugin_env: &PluginEnv) -> ImportObj zellij_export! { host_subscribe, host_unsubscribe, - host_set_invisible_borders, - host_set_fixed_height, - host_set_fixed_width, host_set_selectable, host_get_plugin_ids, host_open_file, @@ -204,42 +201,6 @@ fn host_set_selectable(plugin_env: &PluginEnv, selectable: i32) { .unwrap() } -fn host_set_fixed_height(plugin_env: &PluginEnv, fixed_height: i32) { - let fixed_height = fixed_height as usize; - plugin_env - .senders - .send_to_screen(ScreenInstruction::SetFixedHeight( - PaneId::Plugin(plugin_env.plugin_id), - fixed_height, - plugin_env.tab_index, - )) - .unwrap() -} - -fn host_set_fixed_width(plugin_env: &PluginEnv, fixed_width: i32) { - let fixed_width = fixed_width as usize; - plugin_env - .senders - .send_to_screen(ScreenInstruction::SetFixedWidth( - PaneId::Plugin(plugin_env.plugin_id), - fixed_width, - plugin_env.tab_index, - )) - .unwrap() -} - -fn host_set_invisible_borders(plugin_env: &PluginEnv, invisible_borders: i32) { - let invisible_borders = invisible_borders != 0; - plugin_env - .senders - .send_to_screen(ScreenInstruction::SetInvisibleBorders( - PaneId::Plugin(plugin_env.plugin_id), - invisible_borders, - plugin_env.tab_index, - )) - .unwrap() -} - fn host_get_plugin_ids(plugin_env: &PluginEnv) { let ids = PluginIds { plugin_id: plugin_env.plugin_id, @@ -289,7 +250,6 @@ fn host_set_timeout(plugin_env: &PluginEnv, secs: f64) { // Helper Functions --------------------------------------------------------------------------------------------------- -// FIXME: Unwrap city pub fn wasi_read_string(wasi_env: &WasiEnv) -> String { let mut state = wasi_env.state(); let wasi_file = state.fs.stdout_mut().unwrap().as_mut().unwrap(); diff --git a/zellij-tile/src/shim.rs b/zellij-tile/src/shim.rs index ed033d4b..b514b55a 100644 --- a/zellij-tile/src/shim.rs +++ b/zellij-tile/src/shim.rs @@ -17,22 +17,10 @@ pub fn unsubscribe(event_types: &[EventType]) { // Plugin Settings -pub fn set_fixed_height(fixed_height: i32) { - unsafe { host_set_fixed_height(fixed_height) }; -} - -pub fn set_fixed_width(fixed_width: i32) { - unsafe { host_set_fixed_width(fixed_width) }; -} - pub fn set_selectable(selectable: bool) { unsafe { host_set_selectable(if selectable { 1 } else { 0 }) }; } -pub fn set_invisible_borders(invisible_borders: bool) { - unsafe { host_set_invisible_borders(if invisible_borders { 1 } else { 0 }) }; -} - // Query Functions pub fn get_plugin_ids() -> PluginIds { unsafe { host_get_plugin_ids() }; @@ -68,10 +56,7 @@ pub fn object_to_stdout(object: &impl Serialize) { extern "C" { fn host_subscribe(); fn host_unsubscribe(); - fn host_set_fixed_height(fixed_height: i32); - fn host_set_fixed_width(fixed_width: i32); fn host_set_selectable(selectable: i32); - fn host_set_invisible_borders(invisible_borders: i32); fn host_get_plugin_ids(); fn host_open_file(); fn host_set_timeout(secs: f64); diff --git a/zellij-utils/src/input/actions.rs b/zellij-utils/src/input/actions.rs index cd4ca464..915f2dad 100644 --- a/zellij-utils/src/input/actions.rs +++ b/zellij-utils/src/input/actions.rs @@ -22,7 +22,7 @@ pub enum Direction { // They might need to be adjusted in the default config // as well `../../assets/config/default.yaml` /// Actions that can be bound to keys. -#[derive(Eq, Clone, Debug, PartialEq, Deserialize, Serialize)] +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] pub enum Action { /// Quit Zellij. Quit, diff --git a/zellij-utils/src/input/layout.rs b/zellij-utils/src/input/layout.rs index a3da6aba..be71130c 100644 --- a/zellij-utils/src/input/layout.rs +++ b/zellij-utils/src/input/layout.rs @@ -10,28 +10,43 @@ // then [`zellij-utils`] could be a proper place. use crate::{ input::{command::RunCommand, config::ConfigError}, - pane_size::PositionAndSize, + pane_size::{Dimension, PaneGeom}, setup, }; use crate::{serde, serde_yaml}; use serde::{Deserialize, Serialize}; -use std::path::{Path, PathBuf}; use std::vec::Vec; +use std::{ + cmp::max, + ops::Not, + path::{Path, PathBuf}, +}; use std::{fs::File, io::prelude::*}; -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)] #[serde(crate = "self::serde")] pub enum Direction { Horizontal, Vertical, } -#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +impl Not for Direction { + type Output = Self; + + fn not(self) -> Self::Output { + match self { + Direction::Horizontal => Direction::Vertical, + Direction::Vertical => Direction::Horizontal, + } + } +} + +#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq)] #[serde(crate = "self::serde")] pub enum SplitSize { - Percent(u8), // 1 to 100 - Fixed(u16), // An absolute number of columns or rows + Percent(f64), // 1 to 100 + Fixed(usize), // An absolute number of columns or rows } #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] @@ -44,7 +59,7 @@ pub enum Run { } // The layout struct ultimately used to build the layouts. -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] #[serde(crate = "self::serde")] pub struct Layout { pub direction: Direction, @@ -58,7 +73,7 @@ pub struct Layout { // The struct that is used to deserialize the layout from // a yaml configuration file -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] #[serde(crate = "self::serde")] #[serde(default)] pub struct LayoutFromYaml { @@ -148,7 +163,7 @@ impl LayoutFromYaml { // The struct that carries the information template that is used to // construct the layout -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] #[serde(crate = "self::serde")] pub struct LayoutTemplate { pub direction: Direction, @@ -191,7 +206,7 @@ impl LayoutTemplate { } // The tab-layout struct used to specify each individual tab. -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] #[serde(crate = "self::serde")] pub struct TabLayout { pub direction: Direction, @@ -238,10 +253,7 @@ impl Layout { run_instructions } - pub fn position_panes_in_space( - &self, - space: &PositionAndSize, - ) -> Vec<(Layout, PositionAndSize)> { + pub fn position_panes_in_space(&self, space: &PaneGeom) -> Vec<(Layout, PaneGeom)> { split_space(space, self) } @@ -268,149 +280,90 @@ impl Layout { } } -fn split_space_to_parts_vertically( - space_to_split: &PositionAndSize, - sizes: Vec>, -) -> Vec { - let mut split_parts = Vec::new(); - let mut current_x_position = space_to_split.x; - let mut current_width = 0; - let max_width = space_to_split.cols; - - let mut parts_to_grow = Vec::new(); - - // First fit in the parameterized sizes - for size in sizes { - let columns = match size { - Some(SplitSize::Percent(percent)) => { - (max_width as f32 * (percent as f32 / 100.0)) as usize - } // TODO: round properly - Some(SplitSize::Fixed(size)) => size as usize, - None => { - parts_to_grow.push(current_x_position); - 1 // This is grown later on - } - }; - split_parts.push(PositionAndSize { - x: current_x_position, - y: space_to_split.y, - cols: columns, - rows: space_to_split.rows, - ..Default::default() - }); - current_width += columns; - current_x_position += columns; - } - - if current_width > max_width { - panic!("Layout contained too many columns to fit onto the screen!"); - } - - let mut last_flexible_index = split_parts.len() - 1; - if let Some(new_columns) = (max_width - current_width).checked_div(parts_to_grow.len()) { - current_width = 0; - current_x_position = 0; - for (idx, part) in split_parts.iter_mut().enumerate() { - part.x = current_x_position; - if parts_to_grow.contains(&part.x) { - part.cols = new_columns; - last_flexible_index = idx; - } - current_width += part.cols; - current_x_position += part.cols; +fn layout_size(direction: Direction, layout: &Layout) -> usize { + fn child_layout_size( + direction: Direction, + parent_direction: Direction, + layout: &Layout, + ) -> usize { + let size = if parent_direction == direction { 1 } else { 0 }; + if layout.parts.is_empty() { + size + } else { + let children_size = layout + .parts + .iter() + .map(|p| child_layout_size(direction, layout.direction, p)) + .sum::(); + max(size, children_size) } } - - if current_width < max_width { - // we have some extra space left, let's add it to the last flexible part - let extra = max_width - current_width; - let mut last_part = split_parts.get_mut(last_flexible_index).unwrap(); - last_part.cols += extra; - for part in (&mut split_parts[last_flexible_index + 1..]).iter_mut() { - part.x += extra; - } - } - split_parts + child_layout_size(direction, direction, layout) } -fn split_space_to_parts_horizontally( - space_to_split: &PositionAndSize, - sizes: Vec>, -) -> Vec { - let mut split_parts = Vec::new(); - let mut current_y_position = space_to_split.y; - let mut current_height = 0; - let max_height = space_to_split.rows; - - let mut parts_to_grow = Vec::new(); - - for size in sizes { - let rows = match size { - Some(SplitSize::Percent(percent)) => { - (max_height as f32 * (percent as f32 / 100.0)) as usize - } // TODO: round properly - Some(SplitSize::Fixed(size)) => size as usize, - None => { - parts_to_grow.push(current_y_position); - 1 // This is grown later on - } - }; - split_parts.push(PositionAndSize { - x: space_to_split.x, - y: current_y_position, - cols: space_to_split.cols, - rows, - ..Default::default() - }); - current_height += rows; - current_y_position += rows; - } - - if current_height > max_height { - panic!("Layout contained too many rows to fit onto the screen!"); - } - - let mut last_flexible_index = split_parts.len() - 1; - if let Some(new_rows) = (max_height - current_height).checked_div(parts_to_grow.len()) { - current_height = 0; - current_y_position = 0; - - for (idx, part) in split_parts.iter_mut().enumerate() { - part.y = current_y_position; - if parts_to_grow.contains(&part.y) { - part.rows = new_rows; - last_flexible_index = idx; - } - current_height += part.rows; - current_y_position += part.rows; - } - } - - if current_height < max_height { - // we have some extra space left, let's add it to the last flexible part - let extra = max_height - current_height; - let mut last_part = split_parts.get_mut(last_flexible_index).unwrap(); - last_part.rows += extra; - for part in (&mut split_parts[last_flexible_index + 1..]).iter_mut() { - part.y += extra; - } - } - split_parts -} - -fn split_space( - space_to_split: &PositionAndSize, - layout: &Layout, -) -> Vec<(Layout, PositionAndSize)> { +fn split_space(space_to_split: &PaneGeom, layout: &Layout) -> Vec<(Layout, PaneGeom)> { let mut pane_positions = Vec::new(); let sizes: Vec> = layout.parts.iter().map(|part| part.split_size).collect(); - let split_parts = match layout.direction { - Direction::Vertical => split_space_to_parts_vertically(space_to_split, sizes), - Direction::Horizontal => split_space_to_parts_horizontally(space_to_split, sizes), - }; + let mut split_geom = Vec::new(); + let (mut current_position, split_dimension_space, mut inherited_dimension) = + match layout.direction { + Direction::Vertical => (space_to_split.x, space_to_split.cols, space_to_split.rows), + Direction::Horizontal => (space_to_split.y, space_to_split.rows, space_to_split.cols), + }; + + let flex_parts = sizes.iter().filter(|s| s.is_none()).count(); + + for (&size, part) in sizes.iter().zip(&layout.parts) { + let split_dimension = match size { + Some(SplitSize::Percent(percent)) => Dimension::percent(percent), + Some(SplitSize::Fixed(size)) => Dimension::fixed(size), + None => { + let free_percent = if let Some(p) = split_dimension_space.as_percent() { + p - sizes + .iter() + .map(|&s| { + if let Some(SplitSize::Percent(ip)) = s { + ip + } else { + 0.0 + } + }) + .sum::() + } else { + panic!("Implicit sizing within fixed-size panes is not supported"); + }; + Dimension::percent(free_percent / flex_parts as f64) + } + }; + inherited_dimension.set_inner( + layout + .parts + .iter() + .map(|p| layout_size(!layout.direction, p)) + .max() + .unwrap(), + ); + let geom = match layout.direction { + Direction::Vertical => PaneGeom { + x: current_position, + y: space_to_split.y, + cols: split_dimension, + rows: inherited_dimension, + }, + Direction::Horizontal => PaneGeom { + x: space_to_split.x, + y: current_position, + cols: inherited_dimension, + rows: split_dimension, + }, + }; + split_geom.push(geom); + current_position += layout_size(layout.direction, part); + } + for (i, part) in layout.parts.iter().enumerate() { - let part_position_and_size = split_parts.get(i).unwrap(); + let part_position_and_size = split_geom.get(i).unwrap(); if !part.parts.is_empty() { let mut part_positions = split_space(part_position_and_size, part); pane_positions.append(&mut part_positions); diff --git a/zellij-utils/src/input/unit/layout_test.rs b/zellij-utils/src/input/unit/layout_test.rs index 23c57b3d..abce56a4 100644 --- a/zellij-utils/src/input/unit/layout_test.rs +++ b/zellij-utils/src/input/unit/layout_test.rs @@ -163,7 +163,7 @@ fn three_panes_with_tab_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { @@ -174,14 +174,14 @@ fn three_panes_with_tab_merged_correctly() { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, ], @@ -263,7 +263,7 @@ fn three_panes_with_tab_and_default_plugins_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { @@ -274,14 +274,14 @@ fn three_panes_with_tab_and_default_plugins_merged_correctly() { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, ], @@ -380,7 +380,7 @@ fn deeply_nested_tab_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(21)), + split_size: Some(SplitSize::Percent(21.0)), run: None, }, Layout { @@ -391,7 +391,7 @@ fn deeply_nested_tab_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(22)), + split_size: Some(SplitSize::Percent(22.0)), run: None, }, Layout { @@ -402,47 +402,47 @@ fn deeply_nested_tab_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(23)), + split_size: Some(SplitSize::Percent(23.0)), run: None, }, Layout { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(24)), + split_size: Some(SplitSize::Percent(24.0)), run: None, }, ], - split_size: Some(SplitSize::Percent(78)), + split_size: Some(SplitSize::Percent(78.0)), run: None, }, ], - split_size: Some(SplitSize::Percent(79)), + split_size: Some(SplitSize::Percent(79.0)), run: None, }, ], - split_size: Some(SplitSize::Percent(90)), + split_size: Some(SplitSize::Percent(90.0)), run: None, }, Layout { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(15)), + split_size: Some(SplitSize::Percent(15.0)), run: None, }, Layout { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(15)), + split_size: Some(SplitSize::Percent(15.0)), run: None, }, Layout { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(15)), + split_size: Some(SplitSize::Percent(15.0)), run: None, }, ], @@ -484,7 +484,7 @@ fn three_tabs_tab_one_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { @@ -523,7 +523,7 @@ fn three_tabs_tab_two_merged_correctly() { direction: Direction::Horizontal, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { @@ -534,7 +534,7 @@ fn three_tabs_tab_two_merged_correctly() { run: None, }, ], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { @@ -573,7 +573,7 @@ fn three_tabs_tab_three_merged_correctly() { direction: Direction::Vertical, borderless: false, parts: vec![], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { @@ -584,7 +584,7 @@ fn three_tabs_tab_three_merged_correctly() { run: None, }, ], - split_size: Some(SplitSize::Percent(50)), + split_size: Some(SplitSize::Percent(50.0)), run: None, }, Layout { diff --git a/zellij-utils/src/ipc.rs b/zellij-utils/src/ipc.rs index 009d99a3..a7cda977 100644 --- a/zellij-utils/src/ipc.rs +++ b/zellij-utils/src/ipc.rs @@ -4,7 +4,7 @@ use crate::{ cli::CliArgs, errors::{get_current_ctx, ErrorContext}, input::{actions::Action, layout::LayoutFromYaml, options::Options}, - pane_size::PositionAndSize, + pane_size::Size, }; use interprocess::local_socket::LocalSocketStream; use nix::unistd::dup; @@ -39,7 +39,7 @@ pub enum ClientType { #[derive(Default, Serialize, Deserialize, Debug, Clone, Copy)] pub struct ClientAttributes { - pub position_and_size: PositionAndSize, + pub size: Size, pub palette: Palette, } @@ -57,13 +57,8 @@ pub enum ClientToServerMsg { DetachSession(SessionId), // Disconnect from the session we're connected to DisconnectFromSession,*/ - TerminalResize(PositionAndSize), - NewClient( - ClientAttributes, - Box, - Box, - Option, - ), + TerminalResize(Size), + NewClient(ClientAttributes, Box, Box, LayoutFromYaml), AttachClient(ClientAttributes, bool, Options), Action(Action), ClientExited, diff --git a/zellij-utils/src/pane_size.rs b/zellij-utils/src/pane_size.rs index db439b61..8ae76630 100644 --- a/zellij-utils/src/pane_size.rs +++ b/zellij-utils/src/pane_size.rs @@ -1,49 +1,144 @@ -use nix::pty::Winsize; use serde::{Deserialize, Serialize}; use crate::position::Position; /// Contains the position and size of a [`Pane`], or more generally of any terminal, measured /// in character rows and columns. +#[derive(Clone, Copy, Default, PartialEq, Debug, Serialize, Deserialize)] +pub struct PaneGeom { + pub x: usize, + pub y: usize, + pub rows: Dimension, + pub cols: Dimension, +} + #[derive(Clone, Copy, Debug, Default, Serialize, Deserialize, PartialEq, Eq)] -pub struct PositionAndSize { +pub struct Viewport { pub x: usize, pub y: usize, pub rows: usize, pub cols: usize, - // FIXME: Honestly, these shouldn't exist and rows / columns should be enums like: - // Dimension::Flex(usize) / Dimension::Fixed(usize), but 400+ compiler errors is more than - // I'm in the mood for right now... - pub rows_fixed: bool, - pub cols_fixed: bool, } -impl From for PositionAndSize { - fn from(winsize: Winsize) -> PositionAndSize { - PositionAndSize { - cols: winsize.ws_col as usize, - rows: winsize.ws_row as usize, +#[derive(Clone, Copy, Debug, Default, Serialize, Deserialize, PartialEq, Eq)] +pub struct Offset { + pub top: usize, + pub bottom: usize, + pub right: usize, + pub left: usize, +} + +#[derive(Clone, Copy, Default, PartialEq, Debug, Serialize, Deserialize)] +pub struct Size { + pub rows: usize, + pub cols: usize, +} + +#[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)] +pub struct Dimension { + pub constraint: Constraint, + inner: usize, +} + +impl Default for Dimension { + fn default() -> Self { + Self::percent(100.0) + } +} + +impl Dimension { + pub fn fixed(size: usize) -> Dimension { + Self { + constraint: Constraint::Fixed(size), + inner: 1, + } + } + + pub fn percent(percent: f64) -> Dimension { + Self { + constraint: Constraint::Percent(percent), + inner: 1, + } + } + + pub fn as_usize(&self) -> usize { + self.inner + } + + pub fn as_percent(&self) -> Option { + if let Constraint::Percent(p) = self.constraint { + Some(p) + } else { + None + } + } + + pub fn set_inner(&mut self, inner: usize) { + self.inner = inner; + } + + pub fn is_fixed(&self) -> bool { + matches!(self.constraint, Constraint::Fixed(_)) + } +} + +#[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)] +pub enum Constraint { + /// Constrains the dimension to a fixed, integer number of rows / columns + Fixed(usize), + /// Constrains the dimension to a flexible percent size of the total screen + Percent(f64), +} + +impl PaneGeom { + pub fn contains(&self, point: &Position) -> bool { + let col = point.column.0 as usize; + let row = point.line.0 as usize; + self.x <= col + && col < self.x + self.cols.as_usize() + && self.y <= row + && row < self.y + self.rows.as_usize() + } +} + +impl Offset { + pub fn frame(size: usize) -> Self { + Self { + top: size, + bottom: size, + right: size, + left: size, + } + } + + // FIXME: This should be top and left, not bottom and right, but `boundaries.rs` would need + // some changing + pub fn shift(bottom: usize, right: usize) -> Self { + Self { + bottom, + right, ..Default::default() } } } -impl PositionAndSize { - pub fn contains(&self, point: &Position) -> bool { - let col = point.column.0 as usize; - let row = point.line.0 as usize; - self.x <= col && col < self.x + self.cols && self.y <= row && row < self.y + self.rows - } - pub fn reduce_outer_frame(mut self, frame_width: usize) -> Self { - self.x += frame_width; - self.rows -= frame_width * 2; - self.y += frame_width; - self.cols -= frame_width * 2; - self - } - pub fn reduce_top_line(mut self) -> Self { - self.y += 1; - self.rows -= 1; - self +impl From for Viewport { + fn from(pane: PaneGeom) -> Self { + Self { + x: pane.x, + y: pane.y, + rows: pane.rows.as_usize(), + cols: pane.cols.as_usize(), + } + } +} + +impl From for Viewport { + fn from(size: Size) -> Self { + Self { + rows: size.rows, + cols: size.cols, + ..Default::default() + } } } diff --git a/zellij-utils/src/position.rs b/zellij-utils/src/position.rs index 71547424..56fcd638 100644 --- a/zellij-utils/src/position.rs +++ b/zellij-utils/src/position.rs @@ -1,7 +1,5 @@ use serde::{Deserialize, Serialize}; -use crate::pane_size::PositionAndSize; - #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Deserialize, Serialize)] pub struct Position { pub line: Line, @@ -16,10 +14,10 @@ impl Position { } } - pub fn relative_to(&self, position_and_size: &PositionAndSize) -> Self { + pub fn relative_to(&self, line: usize, column: usize) -> Self { Self { - line: Line(self.line.0 - position_and_size.y as isize), - column: Column(self.column.0.saturating_sub(position_and_size.x)), + line: Line(self.line.0 - line as isize), + column: Column(self.column.0.saturating_sub(column)), } } } diff --git a/zellij-utils/src/shared.rs b/zellij-utils/src/shared.rs index b1edb97f..4b3ba974 100644 --- a/zellij-utils/src/shared.rs +++ b/zellij-utils/src/shared.rs @@ -2,12 +2,11 @@ use std::{iter, str::from_utf8}; -use strip_ansi_escapes::strip; - use colors_transform::{Color, Rgb}; use std::os::unix::fs::PermissionsExt; use std::path::Path; use std::{fs, io}; +use strip_ansi_escapes::strip; use zellij_tile::data::{Palette, PaletteColor, PaletteSource, ThemeHue}; const UNIX_PERMISSIONS: u32 = 0o700;