From c5020eb15951d29c279dbc218bbe4180316f4a07 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 03:14:41 +0000 Subject: [PATCH 1/4] Initial plan From 726e8b1c90a7a94e889b387c9a97384c751159e1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 03:22:01 +0000 Subject: [PATCH 2/4] Fix floating window positioning when view size changes with gravity settings Co-authored-by: Petterpx <41142188+Petterpx@users.noreply.github.com> --- META-INF/main.kotlin_module | Bin 0 -> 24 bytes .../floatingx/assist/FxAdsorbDirection.class | Bin 0 -> 2107 bytes .../floatingx/assist/FxBorderMargin.class | Bin 0 -> 3597 bytes .../floatingx/assist/FxBoundaryConfig.class | Bin 0 -> 4093 bytes .../floatingx/assist/FxDisplayMode.class | Bin 0 -> 2059 bytes .../floatingx/assist/FxScopeType.class | Bin 0 -> 2049 bytes .../floatingx/listener/IKeyBackListener.class | Bin 0 -> 425 bytes .../listener/control/IFxSystemControl.class | Bin 0 -> 432 bytes .../view/helper/FxViewLocationHelper.kt | 24 ++++++++++++++---- 9 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 META-INF/main.kotlin_module create mode 100644 com/petterp/floatingx/assist/FxAdsorbDirection.class create mode 100644 com/petterp/floatingx/assist/FxBorderMargin.class create mode 100644 com/petterp/floatingx/assist/FxBoundaryConfig.class create mode 100644 com/petterp/floatingx/assist/FxDisplayMode.class create mode 100644 com/petterp/floatingx/assist/FxScopeType.class create mode 100644 com/petterp/floatingx/listener/IKeyBackListener.class create mode 100644 com/petterp/floatingx/listener/control/IFxSystemControl.class diff --git a/META-INF/main.kotlin_module b/META-INF/main.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..ef915de2ec8bf18a9c861cecd52841cc1946b03e GIT binary patch literal 24 YcmZQzU|?ooU|@n`AjQC-#Gu6h00D0RQ~&?~ literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxAdsorbDirection.class b/com/petterp/floatingx/assist/FxAdsorbDirection.class new file mode 100644 index 0000000000000000000000000000000000000000..5ef051d68f09080969e2040cca8388c83861e42d GIT binary patch literal 2107 zcmbVNZF3q`6n^gVvdd=MQj9U7u~v%;qzNQxVj>vxMp6uc8Yo&(;{w~b3G8;*C6kZw zi{Jbc{sJX4Hlw4%^rJt@@!Y$_;>30)0(b8{_ndp)o@XzA{`Ko00Pe$Jm}%JU)KkNC zjn325la{T!rgdKYVrKAxyuJ*XV3t`#2T$_%qtKCR(3 zjD{fLb%yYZ=9TJ)1dWV07y^x!ZBaF&@x)L)osALfTqc6i^hbXwiFv3Cl2fXR{B`>c)Q^PKbDheo3_=~RY8m`{dU7eaP zwU2#tZAttAdL57Wg03U!#N?|qt(w%n?f$8zO5>6$g~O_(D9ZEipMNKf_fO}Ph(98w z`=@EP9#W*|KL-7Z6!slTil0V+Mv#U~L!m*Ji`1NBJksc;YjEbsCEzyfCcSMp3Z`Wg zyY0Hssp$2VxJ~Sa-m2;ylgoq6P}w}Nbhq0fgIjxD%Qf3Z-a0lNlWf*ru#EU$w!58% zv1M{!69d!gCBxNOLMlLoE2|TnP5{lsA~6$p#7u+{GtooLLqeixK6#|s~ZT@37ysw6ohaS z5z=tiW5NPZdl>r#lYPAT6YYX*ZsVq})TMoK$*PDJMP83O=T~JTE`MPd)(sH%N~otG;JgJ3~qc>wY2331K53gasjN z28FOBgq$pdj1aaIA*`I^!5PM=OMQHDj)!NM;xI4)LzK!P)T!YiM4?h)BlKUcVU2ct zgSPw7AR7r^p-FR|PJT*U*{i{qM_K$Tc$7yKpXKp69@oGee1TdGssqizmkxpsWCzm@ O(hlYwEIL?rko_B`aquDl literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxBorderMargin.class b/com/petterp/floatingx/assist/FxBorderMargin.class new file mode 100644 index 0000000000000000000000000000000000000000..e857b2d80b382fb349d7f81df8e04e98e40fb6aa GIT binary patch literal 3597 zcmb7H-%}h_7XG^FnQ4X@Xc&HF^3yI=L-5s~y zaD&zQ2TSYTa-2hlf$X#&`0?8Ya+MkWRTm6&RH_RFWRT0lf^EPcn=w;B9$lRA-H0!Sfr_K; zRNW1NFyTYd$!3wohd4AvL zsnTty3ivbLl%2_agvbA!Z|lOhWTD97^oa&p&ug?qByu=?A|kpZ+g$wPZDwSf_Y0WB zSwXX`%bKg!E`}?f79?NvJT1eF^llFGq+oor1zg1kd0fMX%sKKDrOu|JOV;~x+ikF! z23iY{wDMH-Qv;)aq!`M@U21r&LQa(IMhqoGVG7|bd?JLm`6i6lyvRUbOPNvzxe*S@ zG5>`}wAYyPUhJ;8vCD1E&7BV3O{P4+h&KfA+A;6?f+!AiWx_Ca9^V_yo5N<_bROT! z^J6->ylD?`?BXcz?c{a0{p7wq{P^CaIc{92_u01Tm}PUkLnEt+GEI~f^yJ&DW#=6G zN~cp2`|>aMJBa&R@IVV5Y~l%Lh?sOuB8@bWMw&=Y!DwMJ|_5jIZ5D?C-=J!Z2xpoPj~BS9l`$T z9zE^oX&u)7>0UkE=kU%pS9n+PV4i8OS2rjxE0Jc;oF91Cwl|l&=%$E8bPz7PjRiOI z#ZF%qZ^Z8M#=N_g+J~=i2eH5D%?3NZ^11Har&kqK`Rwe6Zscxyyv+A4%ijpMqh)W# z7urLq&%$&2VS);@s3(gfzmSMb`6|*Qzl8M2uOE*6Og4iopAA|KuFG&N*B+s>Hu4a~ z+UP?#wNnpKsts8WG5Edq-Q-hzgdyPbT;hcx4AY{&W|jG}<~21EW>I-rzWQJ}!h9%Y zzDb{2YFh_g>-G+{whp>3?H%}Qf^w6dy+P$m&lZ1%d3&!d{>>MO zW73+%rYeig)+{z#vnanzb!!%r*2I=*ojaTXoKCz7X&xclYt!kZO>OC=v{MB;X|oD0 z?e%LXjlsQ^-Ni%_TiUXPuC5~Y=8u3hozFSSk(~b-uibux*Zbbs#kA1u;+?*C6YL1S znBbD&_Yyov>{NGgc^6lnRvqrr8HQ!k2xm={3l1b18>#FzC*@(F!o=V-yqZRVC*r> zdEq{-`9I|y*zrL4X)}hVU82n}n)V=VMv~Z;1Y<&KTSPWz{}25+m_0o`TGmNN+-geU z78datBmI)gbJ7S41ac|!KOr4#O(WimwJ!cSJ;oz^E*;-0$wIoFiHI{MHlR5EgKPfE zoxWH^$1Gg^S;F!xR^ZLz4ptXoD6GL>#BqgTg>{9zes(MLD)cL46tW6O6pkt!Q?l$O kg_8;+3Zn|A6kb+%MWLclRj4V9DcsaMEGk^pV3N<@05BYaCjbBd literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxBoundaryConfig.class b/com/petterp/floatingx/assist/FxBoundaryConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..b68c55caf5cb74944aa9dd2a96226d8c777ee31e GIT binary patch literal 4093 zcmb7H-BTOa6+d@bX;^W+;h&Z|MS0p z{)>p_>9>L|RqDH?Jtqj9#$M@Bt!@Xdw|P*qec$zi($c~8def`gjmJ0Y-XnL@AR)-w zw)gE)&Gt4+pKNS9mB64rLD5CmbAzjbjKUIrrtS&qD@@%>QiO~+>0}DhcU^B?kXTAm zoDwn8D9M}l!FrO?Y9phhmXp-4HU^XgHU`y34jaLi>kBHaoCy1Zpm!y-^2$yjv?qFVy*w|KoE zgEkhibLm4)1dAfLP)JcqeYvg3l#*-h*$1HXN`3FKpofJM#yE9Cc|j8^^~Ppt+X*%r zw(I#N+wo3$D;7pVtZPQ#?4pz&VWD|omW1@~h?W>8mY5j0qs>aZOqOVH3!O4Z)= zrdz8z4TC<2(^YP~e0LugxD!7x=^Fah-rIA$Dkeea-L!7v2mV6a3rV_8H`x45L8nmp zZxmc&!JnYgFTTay4##E1xZX0DpSDhzS!H`S-fZs^w)bh07HE;FJIKU`O>YZxrK&P=qf@N+?vZ)z3v ziM>&C&?^QPtla>V2+EKhJ|vqRZU`Fa$Wv&UC*%lUHWd0>qiNL%?5Z8uFsJSA_hDLV z{2(CRVFF`VJ8+pohiKJVA%6ez$=SFzti?6!<&!vmHOq)=W*%!ov8Gzm=BuaX@XIH2 z+Kjkf8Zb@G(nhtJK1u0qD$=H+OuhO#s+)#o-b!0p@KBFhgOa!vvvMr4{Qc8D(D@E} zsDmDE)3YrLZP#;5N!OB+t|cX1!?3uOwMJlIbk2lVeOSzhFoG%N*<@>u|#nEI3tfOc`RWaKkk>u0~X$B zS{1ViH${Nq=xAJ{K)X-dqxYCte68MWRGcN3-HwDh_kLiHW>J(nN=(O!7d9x3 z-_vr%>shXND`U+e+z3VS48T2sTmfWbZL$os zhz$Nfpcww8;VBE7BiP%=$-J^eLo^JI*QBg8eb96Yzf?Yl-+1<`kU{QIxPU>PYb)l=>?OO`7AB5lnHYNhJ`5+E3$j z20NV4_aV)JMrAUOlGmx7R}$?+Md>X-!APOEdxEgKLBx83INKY9)eS;vzaGRyPY~H| z5b>TMCVPX(c7ssbuLp6iCy0DEh(u2i=X-O8fO7E>Hor%GX*8ueC5eF#Rpf z7N=1f+$>lv?iZ|CZW*k3G)?hu&{1WRM@>gj|7prl9yK_QYd()UO0czx4M~grxevhNwxEnYEP6@d!nR}6g5#&YNB*z&x+BH=sj3tXLrNt zvZ$tu$?Y8u7^bao#xR|2jhPsjd~4Di()$WqIBAlJL<+X?X%mL?ORRh)*S@2x_g~P5 z10NmI$L!{imIrPr+G2V|(OIT%D>@I_nmVMP9n#uS2GpRr7G|KcE(GHFc^KJ!_~oH9 z%f7y)&lkt6Gh3i7&<|Towv)*#=2<({T#6=Y>;e5khAR2LKYu`=QXJ>ntMS(3@noJPNv zzJ2-));~aI6PC6fP+yr``MXU!WekDcGI>;gK*Faz`tkvt@oCtnhEH+%O#9UD)1Xfg zpQ1jU^69is<35YM?bBJGCVZOo>6}mJeY)UN(Wg0|F8eg^(-oh-kVfvx=K`Mp2ie&F APXGV_ literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxDisplayMode.class b/com/petterp/floatingx/assist/FxDisplayMode.class new file mode 100644 index 0000000000000000000000000000000000000000..04872d40ee7641799f39e1cfb49275a8fe5d2a4b GIT binary patch literal 2059 zcmb7E-BTM?6#w0ukKHT*LZB1^YPG2*Y3T+8TN^|^8Z;#YB{a1}AC|Dih0QLL-7xeG zU;IOS&=(&RW?Du^C&Od^sE+6EE;b!(M`n}zaqju}o!>e4zIge^-vFlZ9Yd~RH`RUJ zb@kT1`oy#~*RXaDRn2h>$5odP?;Fm(sXbk_w{;1OVXnNZ9cZelSvzXcYBy)g|KCAj zuE5auy1j%jLv+@#40n!UIMe06>b3|=p_HvLgfiJ$98pLLB8V}B-R}*D;nroMGbm}D zAg3*@sWT)mhGOXTHSE^5VQD40^eT;L7>( z8DIVhMVf6;-gHf53@YR*CSyv*OdONAD)yf-4Ai?w_867$IRSeUWh>Mr3lvds`7g&4 znG0UtLV6raxUXOlMGAjTz^d+Q+nTEpKfHMmqPK>N0d$}C#Dd-terSkQo>tqF439cT zLkb_^3Qr^yE=OtZp_$8PKc4--M>MYWf$bz0n8XwZGh!A}w z&D|V-4&`@Ra@1&y5)(rC5slY;74!&)p0pQz!FfLtWbqA2Ib;mbm!uQndXXf;M{n*J zSAK>R{srOCuOtZJF^v)Mo_W?4E9u3G`!+$W7>02*@Hgz80Ln4Op5grtKKPB?05N(C z(t%DUh^Zub?i3$&z=aNV4UN8M1sTFFtg^@v6oE7mcn%*U@B8%gxrt3W6-?an2&DTH z#JNG1BDc}#U*Idb5M@}+k@<8r7dghAYR-2f<1Ufn)3J##836bG1b>|TH1r(zPH@HB z6vEzS+S|-Vyv?0c%$;D2a_wOL6w4>bi{ki%^?3z}p_h_Mp`Ug>;1KGh!?A&HX)crY z7sT_Ib%aVNdA|o(Dbc}d2^Fl>!5n;ruj}Y>5O=WdAnHJJFz8^)!Hk2dCme8){0FW? B-h%)D literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxScopeType.class b/com/petterp/floatingx/assist/FxScopeType.class new file mode 100644 index 0000000000000000000000000000000000000000..b70f734f25f2442e329af2bf6d51f13b57a882a1 GIT binary patch literal 2049 zcmb7E>r)$56#w0u$8MH|hCnF<)M`^rf;0ia)`G~xAd&Ep4XF?vX9-)nknA$q4TInC zi+_kSj$izsFk=}VoeUrSqa4rO-P&}pos!3WocH;ibI;%Z{Qeh!Nqo(auGx*;k>R>V z^C?5Q6?U5mYG0c<>^kY3&*RB0r!D=;TO0TOvJv+_N z^P;wdFhg|4v`lxFVIbXMTyvWg$8<4MVF;x&6%|oP3L=Oxgxx2m!;pP_-waC1pm0-` z-Y^&vR~<2Q`x16@&$RS911mDb_YHShcQ%Y>!z4g#%L`_Q*7=PM6@5@+;OM6$j`e!W zprFRmnd)`ol2VoV(pEuZ7`=v`ia`ts*GY=;Ii~Bo2S&}6Fv1Y2)oqJX?N4VqlJy0q zRlJF}6ug1k5{4KgFZlJx472}Jg3NW&nd&sKSf?(U?rblMwd zc+@`aSNI@Tcs#CfIZAsM?OeY6{_;CM*gl<*6X68Uw@>qIAtv+7AEIHI$3vUFaVg33 z@`EL!M3Z4T7FQ0q9HxJS{!w9mf(g&vPhNbwJss2R-l0o_WYONEH*%w7TE<$dv1>HT z`flAD5Oz(kSM;VS?g25TnfsRRwwff+t+{&ba8*AFc*C15%QYKD(Kc6~Vc2s%eBEip&j(*#gi`UE=N36+k>G9=^9zYmuZx8Z;Pb-J)9o zA^H+EJ38_d%CB_fsL&cEG=MN3(R$k#L6H`EgLz*eJ$&ok@0{)@!{AZFvaKLAK=@Gk3vuJ z@EkY2%XHYgOnR4@hwN_ literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/listener/IKeyBackListener.class b/com/petterp/floatingx/listener/IKeyBackListener.class new file mode 100644 index 0000000000000000000000000000000000000000..346fde48d02e5baec9f19fb2e0a138da13d77c86 GIT binary patch literal 425 zcmb7AO;5r=6r8u^%OY6(M1O!$4=xZB51#a3tYS2pc#u=wNB;Nc{ z#x3#W&E#d?WZ%oq%=`L&{{V1?JpvEYF`o!y#B{<3Ng5cbh6|oZZG;k2?%#>Gt00WK zzYk>)!5anhfG2?(@`wINgr*FKP)k+5`8X9?i-_PH9lsJ9-8eOgRQz6;APP)yL15## zV-2tzK%h7$_FuM;Icr%KwFxK7tnRWVbD6iyTwBbmRtC*w)?qEWt$6H!wVa#7&#YwC zS=1r4yZ?-1%~%6le^Z{uhTuM@vuP-lvW#J8h1=M*{oHDl?WEF!<6~`AE~-A(QS(v9Mh~Rnq0vJ@V^d>GqiFF5T`FW5 literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/listener/control/IFxSystemControl.class b/com/petterp/floatingx/listener/control/IFxSystemControl.class new file mode 100644 index 0000000000000000000000000000000000000000..51ac85310b829d86e5731c7d3bad3d5ddc7274c9 GIT binary patch literal 432 zcmbVI%Sr=55Uiff%T?pX_=tXhs0SwoA&4gtf{}<|AeWprn@OBxcP8vkV!Z8ld60lN zKT4d9H;+P7U35cNReycIe*n0`A)y)Qh|h#EBA)S4sC^^Vc*#SV7@zsraKX{?Ir64S_`q z$Lg~TK%i+x>^ZiS8LL}1yd<2j(z45H%w^sxb!{<^l}5Ey+F*5hD0%Fd)t&p3&$M7g z*|0&l?))>2HD!%d|AxGn8iL!^^EePK84AMD^IRDjiJna4AQZPsX=7ieRZ_4XkjoN* za)dkzmND$FaSsQ!H?2m|Zc2SPZEUQ|#bz5@*lweYojxdmhf3f65W5Mg3Gx onSizeChanged: recalculated position by gravity, x:$newX, y:$newY") } else { basicView?.internalMoveToXY(safeX(x), safeY(y)) } @@ -196,21 +201,22 @@ class FxViewLocationHelper : FxViewBasicHelper(), View.OnLayoutChangeListener { } } - private fun updateViewSize() { - val view = basicView ?: return - val (pW, pH) = view.parentSize() ?: return + private fun updateViewSize(): Boolean { + val view = basicView ?: return false + val (pW, pH) = view.parentSize() ?: return false val viewH = view.height.toFloat() val viewW = view.width.toFloat() // 如果大小没有变化,则不更新 if (this.parentW == pW.toFloat() && this.parentH == pH.toFloat() && this.viewW == viewW && this.viewH == viewH - ) return + ) return false this.parentW = pW.toFloat() this.parentH = pH.toFloat() this.viewW = viewW this.viewH = viewH updateMoveBoundary() config.fxLog.d("fxView -> updateSize: parentW:$parentW,parentH:$parentH,viewW:$viewW,viewH:$viewH") + return true } private fun isNearestLeft(x: Float): Boolean { @@ -268,6 +274,14 @@ class FxViewLocationHelper : FxViewBasicHelper(), View.OnLayoutChangeListener { } } + /** + * 根据当前Gravity设置重新计算位置 + * 当View大小改变时,根据Gravity重新定位 + */ + private fun recalculatePositionByGravity(): Pair { + return getDefaultXY(parentW, parentH, viewW, viewH) + } + internal fun updateMoveBoundary() { config.apply { // 如果启用了半隐藏,这里需要单独处理 From 7e705292a1f8914ee5b39c9e508cf2ecfb3f0e34 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 25 Aug 2025 03:22:48 +0000 Subject: [PATCH 3/4] Update .gitignore to exclude compiled class files --- .gitignore | 3 ++- META-INF/main.kotlin_module | Bin 24 -> 0 bytes .../floatingx/assist/FxAdsorbDirection.class | Bin 2107 -> 0 bytes .../floatingx/assist/FxBorderMargin.class | Bin 3597 -> 0 bytes .../floatingx/assist/FxBoundaryConfig.class | Bin 4093 -> 0 bytes com/petterp/floatingx/assist/FxDisplayMode.class | Bin 2059 -> 0 bytes com/petterp/floatingx/assist/FxScopeType.class | Bin 2049 -> 0 bytes .../floatingx/listener/IKeyBackListener.class | Bin 425 -> 0 bytes .../listener/control/IFxSystemControl.class | Bin 432 -> 0 bytes 9 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 META-INF/main.kotlin_module delete mode 100644 com/petterp/floatingx/assist/FxAdsorbDirection.class delete mode 100644 com/petterp/floatingx/assist/FxBorderMargin.class delete mode 100644 com/petterp/floatingx/assist/FxBoundaryConfig.class delete mode 100644 com/petterp/floatingx/assist/FxDisplayMode.class delete mode 100644 com/petterp/floatingx/assist/FxScopeType.class delete mode 100644 com/petterp/floatingx/listener/IKeyBackListener.class delete mode 100644 com/petterp/floatingx/listener/control/IFxSystemControl.class diff --git a/.gitignore b/.gitignore index dfee9d9e..853deedd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ .externalNativeBuild .cxx /check/detekt/reports -.idea \ No newline at end of file +.idea*.class +META-INF/ diff --git a/META-INF/main.kotlin_module b/META-INF/main.kotlin_module deleted file mode 100644 index ef915de2ec8bf18a9c861cecd52841cc1946b03e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 YcmZQzU|?ooU|@n`AjQC-#Gu6h00D0RQ~&?~ diff --git a/com/petterp/floatingx/assist/FxAdsorbDirection.class b/com/petterp/floatingx/assist/FxAdsorbDirection.class deleted file mode 100644 index 5ef051d68f09080969e2040cca8388c83861e42d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2107 zcmbVNZF3q`6n^gVvdd=MQj9U7u~v%;qzNQxVj>vxMp6uc8Yo&(;{w~b3G8;*C6kZw zi{Jbc{sJX4Hlw4%^rJt@@!Y$_;>30)0(b8{_ndp)o@XzA{`Ko00Pe$Jm}%JU)KkNC zjn325la{T!rgdKYVrKAxyuJ*XV3t`#2T$_%qtKCR(3 zjD{fLb%yYZ=9TJ)1dWV07y^x!ZBaF&@x)L)osALfTqc6i^hbXwiFv3Cl2fXR{B`>c)Q^PKbDheo3_=~RY8m`{dU7eaP zwU2#tZAttAdL57Wg03U!#N?|qt(w%n?f$8zO5>6$g~O_(D9ZEipMNKf_fO}Ph(98w z`=@EP9#W*|KL-7Z6!slTil0V+Mv#U~L!m*Ji`1NBJksc;YjEbsCEzyfCcSMp3Z`Wg zyY0Hssp$2VxJ~Sa-m2;ylgoq6P}w}Nbhq0fgIjxD%Qf3Z-a0lNlWf*ru#EU$w!58% zv1M{!69d!gCBxNOLMlLoE2|TnP5{lsA~6$p#7u+{GtooLLqeixK6#|s~ZT@37ysw6ohaS z5z=tiW5NPZdl>r#lYPAT6YYX*ZsVq})TMoK$*PDJMP83O=T~JTE`MPd)(sH%N~otG;JgJ3~qc>wY2331K53gasjN z28FOBgq$pdj1aaIA*`I^!5PM=OMQHDj)!NM;xI4)LzK!P)T!YiM4?h)BlKUcVU2ct zgSPw7AR7r^p-FR|PJT*U*{i{qM_K$Tc$7yKpXKp69@oGee1TdGssqizmkxpsWCzm@ O(hlYwEIL?rko_B`aquDl diff --git a/com/petterp/floatingx/assist/FxBorderMargin.class b/com/petterp/floatingx/assist/FxBorderMargin.class deleted file mode 100644 index e857b2d80b382fb349d7f81df8e04e98e40fb6aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3597 zcmb7H-%}h_7XG^FnQ4X@Xc&HF^3yI=L-5s~y zaD&zQ2TSYTa-2hlf$X#&`0?8Ya+MkWRTm6&RH_RFWRT0lf^EPcn=w;B9$lRA-H0!Sfr_K; zRNW1NFyTYd$!3wohd4AvL zsnTty3ivbLl%2_agvbA!Z|lOhWTD97^oa&p&ug?qByu=?A|kpZ+g$wPZDwSf_Y0WB zSwXX`%bKg!E`}?f79?NvJT1eF^llFGq+oor1zg1kd0fMX%sKKDrOu|JOV;~x+ikF! z23iY{wDMH-Qv;)aq!`M@U21r&LQa(IMhqoGVG7|bd?JLm`6i6lyvRUbOPNvzxe*S@ zG5>`}wAYyPUhJ;8vCD1E&7BV3O{P4+h&KfA+A;6?f+!AiWx_Ca9^V_yo5N<_bROT! z^J6->ylD?`?BXcz?c{a0{p7wq{P^CaIc{92_u01Tm}PUkLnEt+GEI~f^yJ&DW#=6G zN~cp2`|>aMJBa&R@IVV5Y~l%Lh?sOuB8@bWMw&=Y!DwMJ|_5jIZ5D?C-=J!Z2xpoPj~BS9l`$T z9zE^oX&u)7>0UkE=kU%pS9n+PV4i8OS2rjxE0Jc;oF91Cwl|l&=%$E8bPz7PjRiOI z#ZF%qZ^Z8M#=N_g+J~=i2eH5D%?3NZ^11Har&kqK`Rwe6Zscxyyv+A4%ijpMqh)W# z7urLq&%$&2VS);@s3(gfzmSMb`6|*Qzl8M2uOE*6Og4iopAA|KuFG&N*B+s>Hu4a~ z+UP?#wNnpKsts8WG5Edq-Q-hzgdyPbT;hcx4AY{&W|jG}<~21EW>I-rzWQJ}!h9%Y zzDb{2YFh_g>-G+{whp>3?H%}Qf^w6dy+P$m&lZ1%d3&!d{>>MO zW73+%rYeig)+{z#vnanzb!!%r*2I=*ojaTXoKCz7X&xclYt!kZO>OC=v{MB;X|oD0 z?e%LXjlsQ^-Ni%_TiUXPuC5~Y=8u3hozFSSk(~b-uibux*Zbbs#kA1u;+?*C6YL1S znBbD&_Yyov>{NGgc^6lnRvqrr8HQ!k2xm={3l1b18>#FzC*@(F!o=V-yqZRVC*r> zdEq{-`9I|y*zrL4X)}hVU82n}n)V=VMv~Z;1Y<&KTSPWz{}25+m_0o`TGmNN+-geU z78datBmI)gbJ7S41ac|!KOr4#O(WimwJ!cSJ;oz^E*;-0$wIoFiHI{MHlR5EgKPfE zoxWH^$1Gg^S;F!xR^ZLz4ptXoD6GL>#BqgTg>{9zes(MLD)cL46tW6O6pkt!Q?l$O kg_8;+3Zn|A6kb+%MWLclRj4V9DcsaMEGk^pV3N<@05BYaCjbBd diff --git a/com/petterp/floatingx/assist/FxBoundaryConfig.class b/com/petterp/floatingx/assist/FxBoundaryConfig.class deleted file mode 100644 index b68c55caf5cb74944aa9dd2a96226d8c777ee31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4093 zcmb7H-BTOa6+d@bX;^W+;h&Z|MS0p z{)>p_>9>L|RqDH?Jtqj9#$M@Bt!@Xdw|P*qec$zi($c~8def`gjmJ0Y-XnL@AR)-w zw)gE)&Gt4+pKNS9mB64rLD5CmbAzjbjKUIrrtS&qD@@%>QiO~+>0}DhcU^B?kXTAm zoDwn8D9M}l!FrO?Y9phhmXp-4HU^XgHU`y34jaLi>kBHaoCy1Zpm!y-^2$yjv?qFVy*w|KoE zgEkhibLm4)1dAfLP)JcqeYvg3l#*-h*$1HXN`3FKpofJM#yE9Cc|j8^^~Ppt+X*%r zw(I#N+wo3$D;7pVtZPQ#?4pz&VWD|omW1@~h?W>8mY5j0qs>aZOqOVH3!O4Z)= zrdz8z4TC<2(^YP~e0LugxD!7x=^Fah-rIA$Dkeea-L!7v2mV6a3rV_8H`x45L8nmp zZxmc&!JnYgFTTay4##E1xZX0DpSDhzS!H`S-fZs^w)bh07HE;FJIKU`O>YZxrK&P=qf@N+?vZ)z3v ziM>&C&?^QPtla>V2+EKhJ|vqRZU`Fa$Wv&UC*%lUHWd0>qiNL%?5Z8uFsJSA_hDLV z{2(CRVFF`VJ8+pohiKJVA%6ez$=SFzti?6!<&!vmHOq)=W*%!ov8Gzm=BuaX@XIH2 z+Kjkf8Zb@G(nhtJK1u0qD$=H+OuhO#s+)#o-b!0p@KBFhgOa!vvvMr4{Qc8D(D@E} zsDmDE)3YrLZP#;5N!OB+t|cX1!?3uOwMJlIbk2lVeOSzhFoG%N*<@>u|#nEI3tfOc`RWaKkk>u0~X$B zS{1ViH${Nq=xAJ{K)X-dqxYCte68MWRGcN3-HwDh_kLiHW>J(nN=(O!7d9x3 z-_vr%>shXND`U+e+z3VS48T2sTmfWbZL$os zhz$Nfpcww8;VBE7BiP%=$-J^eLo^JI*QBg8eb96Yzf?Yl-+1<`kU{QIxPU>PYb)l=>?OO`7AB5lnHYNhJ`5+E3$j z20NV4_aV)JMrAUOlGmx7R}$?+Md>X-!APOEdxEgKLBx83INKY9)eS;vzaGRyPY~H| z5b>TMCVPX(c7ssbuLp6iCy0DEh(u2i=X-O8fO7E>Hor%GX*8ueC5eF#Rpf z7N=1f+$>lv?iZ|CZW*k3G)?hu&{1WRM@>gj|7prl9yK_QYd()UO0czx4M~grxevhNwxEnYEP6@d!nR}6g5#&YNB*z&x+BH=sj3tXLrNt zvZ$tu$?Y8u7^bao#xR|2jhPsjd~4Di()$WqIBAlJL<+X?X%mL?ORRh)*S@2x_g~P5 z10NmI$L!{imIrPr+G2V|(OIT%D>@I_nmVMP9n#uS2GpRr7G|KcE(GHFc^KJ!_~oH9 z%f7y)&lkt6Gh3i7&<|Towv)*#=2<({T#6=Y>;e5khAR2LKYu`=QXJ>ntMS(3@noJPNv zzJ2-));~aI6PC6fP+yr``MXU!WekDcGI>;gK*Faz`tkvt@oCtnhEH+%O#9UD)1Xfg zpQ1jU^69is<35YM?bBJGCVZOo>6}mJeY)UN(Wg0|F8eg^(-oh-kVfvx=K`Mp2ie&F APXGV_ diff --git a/com/petterp/floatingx/assist/FxDisplayMode.class b/com/petterp/floatingx/assist/FxDisplayMode.class deleted file mode 100644 index 04872d40ee7641799f39e1cfb49275a8fe5d2a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 zcmb7E-BTM?6#w0ukKHT*LZB1^YPG2*Y3T+8TN^|^8Z;#YB{a1}AC|Dih0QLL-7xeG zU;IOS&=(&RW?Du^C&Od^sE+6EE;b!(M`n}zaqju}o!>e4zIge^-vFlZ9Yd~RH`RUJ zb@kT1`oy#~*RXaDRn2h>$5odP?;Fm(sXbk_w{;1OVXnNZ9cZelSvzXcYBy)g|KCAj zuE5auy1j%jLv+@#40n!UIMe06>b3|=p_HvLgfiJ$98pLLB8V}B-R}*D;nroMGbm}D zAg3*@sWT)mhGOXTHSE^5VQD40^eT;L7>( z8DIVhMVf6;-gHf53@YR*CSyv*OdONAD)yf-4Ai?w_867$IRSeUWh>Mr3lvds`7g&4 znG0UtLV6raxUXOlMGAjTz^d+Q+nTEpKfHMmqPK>N0d$}C#Dd-terSkQo>tqF439cT zLkb_^3Qr^yE=OtZp_$8PKc4--M>MYWf$bz0n8XwZGh!A}w z&D|V-4&`@Ra@1&y5)(rC5slY;74!&)p0pQz!FfLtWbqA2Ib;mbm!uQndXXf;M{n*J zSAK>R{srOCuOtZJF^v)Mo_W?4E9u3G`!+$W7>02*@Hgz80Ln4Op5grtKKPB?05N(C z(t%DUh^Zub?i3$&z=aNV4UN8M1sTFFtg^@v6oE7mcn%*U@B8%gxrt3W6-?an2&DTH z#JNG1BDc}#U*Idb5M@}+k@<8r7dghAYR-2f<1Ufn)3J##836bG1b>|TH1r(zPH@HB z6vEzS+S|-Vyv?0c%$;D2a_wOL6w4>bi{ki%^?3z}p_h_Mp`Ug>;1KGh!?A&HX)crY z7sT_Ib%aVNdA|o(Dbc}d2^Fl>!5n;ruj}Y>5O=WdAnHJJFz8^)!Hk2dCme8){0FW? B-h%)D diff --git a/com/petterp/floatingx/assist/FxScopeType.class b/com/petterp/floatingx/assist/FxScopeType.class deleted file mode 100644 index b70f734f25f2442e329af2bf6d51f13b57a882a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2049 zcmb7E>r)$56#w0u$8MH|hCnF<)M`^rf;0ia)`G~xAd&Ep4XF?vX9-)nknA$q4TInC zi+_kSj$izsFk=}VoeUrSqa4rO-P&}pos!3WocH;ibI;%Z{Qeh!Nqo(auGx*;k>R>V z^C?5Q6?U5mYG0c<>^kY3&*RB0r!D=;TO0TOvJv+_N z^P;wdFhg|4v`lxFVIbXMTyvWg$8<4MVF;x&6%|oP3L=Oxgxx2m!;pP_-waC1pm0-` z-Y^&vR~<2Q`x16@&$RS911mDb_YHShcQ%Y>!z4g#%L`_Q*7=PM6@5@+;OM6$j`e!W zprFRmnd)`ol2VoV(pEuZ7`=v`ia`ts*GY=;Ii~Bo2S&}6Fv1Y2)oqJX?N4VqlJy0q zRlJF}6ug1k5{4KgFZlJx472}Jg3NW&nd&sKSf?(U?rblMwd zc+@`aSNI@Tcs#CfIZAsM?OeY6{_;CM*gl<*6X68Uw@>qIAtv+7AEIHI$3vUFaVg33 z@`EL!M3Z4T7FQ0q9HxJS{!w9mf(g&vPhNbwJss2R-l0o_WYONEH*%w7TE<$dv1>HT z`flAD5Oz(kSM;VS?g25TnfsRRwwff+t+{&ba8*AFc*C15%QYKD(Kc6~Vc2s%eBEip&j(*#gi`UE=N36+k>G9=^9zYmuZx8Z;Pb-J)9o zA^H+EJ38_d%CB_fsL&cEG=MN3(R$k#L6H`EgLz*eJ$&ok@0{)@!{AZFvaKLAK=@Gk3vuJ z@EkY2%XHYgOnR4@hwN_ diff --git a/com/petterp/floatingx/listener/IKeyBackListener.class b/com/petterp/floatingx/listener/IKeyBackListener.class deleted file mode 100644 index 346fde48d02e5baec9f19fb2e0a138da13d77c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmb7AO;5r=6r8u^%OY6(M1O!$4=xZB51#a3tYS2pc#u=wNB;Nc{ z#x3#W&E#d?WZ%oq%=`L&{{V1?JpvEYF`o!y#B{<3Ng5cbh6|oZZG;k2?%#>Gt00WK zzYk>)!5anhfG2?(@`wINgr*FKP)k+5`8X9?i-_PH9lsJ9-8eOgRQz6;APP)yL15## zV-2tzK%h7$_FuM;Icr%KwFxK7tnRWVbD6iyTwBbmRtC*w)?qEWt$6H!wVa#7&#YwC zS=1r4yZ?-1%~%6le^Z{uhTuM@vuP-lvW#J8h1=M*{oHDl?WEF!<6~`AE~-A(QS(v9Mh~Rnq0vJ@V^d>GqiFF5T`FW5 diff --git a/com/petterp/floatingx/listener/control/IFxSystemControl.class b/com/petterp/floatingx/listener/control/IFxSystemControl.class deleted file mode 100644 index 51ac85310b829d86e5731c7d3bad3d5ddc7274c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmbVI%Sr=55Uiff%T?pX_=tXhs0SwoA&4gtf{}<|AeWprn@OBxcP8vkV!Z8ld60lN zKT4d9H;+P7U35cNReycIe*n0`A)y)Qh|h#EBA)S4sC^^Vc*#SV7@zsraKX{?Ir64S_`q z$Lg~TK%i+x>^ZiS8LL}1yd<2j(z45H%w^sxb!{<^l}5Ey+F*5hD0%Fd)t&p3&$M7g z*|0&l?))>2HD!%d|AxGn8iL!^^EePK84AMD^IRDjiJna4AQZPsX=7ieRZ_4XkjoN* za)dkzmND$FaSsQ!H?2m|Zc2SPZEUQ|#bz5@*lweYojxdmhf3f65W5Mg3Gx Date: Mon, 25 Aug 2025 03:24:50 +0000 Subject: [PATCH 4/4] Clean up gitignore and validate gravity positioning fix implementation Co-authored-by: Petterpx <41142188+Petterpx@users.noreply.github.com> --- .../floatingx/assist/FxAdsorbDirection.class | Bin 0 -> 2107 bytes .../floatingx/assist/FxBorderMargin.class | Bin 0 -> 3597 bytes .../floatingx/assist/FxBoundaryConfig.class | Bin 0 -> 4093 bytes com/petterp/floatingx/assist/FxDisplayMode.class | Bin 0 -> 2059 bytes com/petterp/floatingx/assist/FxScopeType.class | Bin 0 -> 2049 bytes .../floatingx/listener/IKeyBackListener.class | Bin 0 -> 425 bytes .../listener/control/IFxSystemControl.class | Bin 0 -> 432 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 com/petterp/floatingx/assist/FxAdsorbDirection.class create mode 100644 com/petterp/floatingx/assist/FxBorderMargin.class create mode 100644 com/petterp/floatingx/assist/FxBoundaryConfig.class create mode 100644 com/petterp/floatingx/assist/FxDisplayMode.class create mode 100644 com/petterp/floatingx/assist/FxScopeType.class create mode 100644 com/petterp/floatingx/listener/IKeyBackListener.class create mode 100644 com/petterp/floatingx/listener/control/IFxSystemControl.class diff --git a/com/petterp/floatingx/assist/FxAdsorbDirection.class b/com/petterp/floatingx/assist/FxAdsorbDirection.class new file mode 100644 index 0000000000000000000000000000000000000000..5ef051d68f09080969e2040cca8388c83861e42d GIT binary patch literal 2107 zcmbVNZF3q`6n^gVvdd=MQj9U7u~v%;qzNQxVj>vxMp6uc8Yo&(;{w~b3G8;*C6kZw zi{Jbc{sJX4Hlw4%^rJt@@!Y$_;>30)0(b8{_ndp)o@XzA{`Ko00Pe$Jm}%JU)KkNC zjn325la{T!rgdKYVrKAxyuJ*XV3t`#2T$_%qtKCR(3 zjD{fLb%yYZ=9TJ)1dWV07y^x!ZBaF&@x)L)osALfTqc6i^hbXwiFv3Cl2fXR{B`>c)Q^PKbDheo3_=~RY8m`{dU7eaP zwU2#tZAttAdL57Wg03U!#N?|qt(w%n?f$8zO5>6$g~O_(D9ZEipMNKf_fO}Ph(98w z`=@EP9#W*|KL-7Z6!slTil0V+Mv#U~L!m*Ji`1NBJksc;YjEbsCEzyfCcSMp3Z`Wg zyY0Hssp$2VxJ~Sa-m2;ylgoq6P}w}Nbhq0fgIjxD%Qf3Z-a0lNlWf*ru#EU$w!58% zv1M{!69d!gCBxNOLMlLoE2|TnP5{lsA~6$p#7u+{GtooLLqeixK6#|s~ZT@37ysw6ohaS z5z=tiW5NPZdl>r#lYPAT6YYX*ZsVq})TMoK$*PDJMP83O=T~JTE`MPd)(sH%N~otG;JgJ3~qc>wY2331K53gasjN z28FOBgq$pdj1aaIA*`I^!5PM=OMQHDj)!NM;xI4)LzK!P)T!YiM4?h)BlKUcVU2ct zgSPw7AR7r^p-FR|PJT*U*{i{qM_K$Tc$7yKpXKp69@oGee1TdGssqizmkxpsWCzm@ O(hlYwEIL?rko_B`aquDl literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxBorderMargin.class b/com/petterp/floatingx/assist/FxBorderMargin.class new file mode 100644 index 0000000000000000000000000000000000000000..e857b2d80b382fb349d7f81df8e04e98e40fb6aa GIT binary patch literal 3597 zcmb7H-%}h_7XG^FnQ4X@Xc&HF^3yI=L-5s~y zaD&zQ2TSYTa-2hlf$X#&`0?8Ya+MkWRTm6&RH_RFWRT0lf^EPcn=w;B9$lRA-H0!Sfr_K; zRNW1NFyTYd$!3wohd4AvL zsnTty3ivbLl%2_agvbA!Z|lOhWTD97^oa&p&ug?qByu=?A|kpZ+g$wPZDwSf_Y0WB zSwXX`%bKg!E`}?f79?NvJT1eF^llFGq+oor1zg1kd0fMX%sKKDrOu|JOV;~x+ikF! z23iY{wDMH-Qv;)aq!`M@U21r&LQa(IMhqoGVG7|bd?JLm`6i6lyvRUbOPNvzxe*S@ zG5>`}wAYyPUhJ;8vCD1E&7BV3O{P4+h&KfA+A;6?f+!AiWx_Ca9^V_yo5N<_bROT! z^J6->ylD?`?BXcz?c{a0{p7wq{P^CaIc{92_u01Tm}PUkLnEt+GEI~f^yJ&DW#=6G zN~cp2`|>aMJBa&R@IVV5Y~l%Lh?sOuB8@bWMw&=Y!DwMJ|_5jIZ5D?C-=J!Z2xpoPj~BS9l`$T z9zE^oX&u)7>0UkE=kU%pS9n+PV4i8OS2rjxE0Jc;oF91Cwl|l&=%$E8bPz7PjRiOI z#ZF%qZ^Z8M#=N_g+J~=i2eH5D%?3NZ^11Har&kqK`Rwe6Zscxyyv+A4%ijpMqh)W# z7urLq&%$&2VS);@s3(gfzmSMb`6|*Qzl8M2uOE*6Og4iopAA|KuFG&N*B+s>Hu4a~ z+UP?#wNnpKsts8WG5Edq-Q-hzgdyPbT;hcx4AY{&W|jG}<~21EW>I-rzWQJ}!h9%Y zzDb{2YFh_g>-G+{whp>3?H%}Qf^w6dy+P$m&lZ1%d3&!d{>>MO zW73+%rYeig)+{z#vnanzb!!%r*2I=*ojaTXoKCz7X&xclYt!kZO>OC=v{MB;X|oD0 z?e%LXjlsQ^-Ni%_TiUXPuC5~Y=8u3hozFSSk(~b-uibux*Zbbs#kA1u;+?*C6YL1S znBbD&_Yyov>{NGgc^6lnRvqrr8HQ!k2xm={3l1b18>#FzC*@(F!o=V-yqZRVC*r> zdEq{-`9I|y*zrL4X)}hVU82n}n)V=VMv~Z;1Y<&KTSPWz{}25+m_0o`TGmNN+-geU z78datBmI)gbJ7S41ac|!KOr4#O(WimwJ!cSJ;oz^E*;-0$wIoFiHI{MHlR5EgKPfE zoxWH^$1Gg^S;F!xR^ZLz4ptXoD6GL>#BqgTg>{9zes(MLD)cL46tW6O6pkt!Q?l$O kg_8;+3Zn|A6kb+%MWLclRj4V9DcsaMEGk^pV3N<@05BYaCjbBd literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxBoundaryConfig.class b/com/petterp/floatingx/assist/FxBoundaryConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..b68c55caf5cb74944aa9dd2a96226d8c777ee31e GIT binary patch literal 4093 zcmb7H-BTOa6+d@bX;^W+;h&Z|MS0p z{)>p_>9>L|RqDH?Jtqj9#$M@Bt!@Xdw|P*qec$zi($c~8def`gjmJ0Y-XnL@AR)-w zw)gE)&Gt4+pKNS9mB64rLD5CmbAzjbjKUIrrtS&qD@@%>QiO~+>0}DhcU^B?kXTAm zoDwn8D9M}l!FrO?Y9phhmXp-4HU^XgHU`y34jaLi>kBHaoCy1Zpm!y-^2$yjv?qFVy*w|KoE zgEkhibLm4)1dAfLP)JcqeYvg3l#*-h*$1HXN`3FKpofJM#yE9Cc|j8^^~Ppt+X*%r zw(I#N+wo3$D;7pVtZPQ#?4pz&VWD|omW1@~h?W>8mY5j0qs>aZOqOVH3!O4Z)= zrdz8z4TC<2(^YP~e0LugxD!7x=^Fah-rIA$Dkeea-L!7v2mV6a3rV_8H`x45L8nmp zZxmc&!JnYgFTTay4##E1xZX0DpSDhzS!H`S-fZs^w)bh07HE;FJIKU`O>YZxrK&P=qf@N+?vZ)z3v ziM>&C&?^QPtla>V2+EKhJ|vqRZU`Fa$Wv&UC*%lUHWd0>qiNL%?5Z8uFsJSA_hDLV z{2(CRVFF`VJ8+pohiKJVA%6ez$=SFzti?6!<&!vmHOq)=W*%!ov8Gzm=BuaX@XIH2 z+Kjkf8Zb@G(nhtJK1u0qD$=H+OuhO#s+)#o-b!0p@KBFhgOa!vvvMr4{Qc8D(D@E} zsDmDE)3YrLZP#;5N!OB+t|cX1!?3uOwMJlIbk2lVeOSzhFoG%N*<@>u|#nEI3tfOc`RWaKkk>u0~X$B zS{1ViH${Nq=xAJ{K)X-dqxYCte68MWRGcN3-HwDh_kLiHW>J(nN=(O!7d9x3 z-_vr%>shXND`U+e+z3VS48T2sTmfWbZL$os zhz$Nfpcww8;VBE7BiP%=$-J^eLo^JI*QBg8eb96Yzf?Yl-+1<`kU{QIxPU>PYb)l=>?OO`7AB5lnHYNhJ`5+E3$j z20NV4_aV)JMrAUOlGmx7R}$?+Md>X-!APOEdxEgKLBx83INKY9)eS;vzaGRyPY~H| z5b>TMCVPX(c7ssbuLp6iCy0DEh(u2i=X-O8fO7E>Hor%GX*8ueC5eF#Rpf z7N=1f+$>lv?iZ|CZW*k3G)?hu&{1WRM@>gj|7prl9yK_QYd()UO0czx4M~grxevhNwxEnYEP6@d!nR}6g5#&YNB*z&x+BH=sj3tXLrNt zvZ$tu$?Y8u7^bao#xR|2jhPsjd~4Di()$WqIBAlJL<+X?X%mL?ORRh)*S@2x_g~P5 z10NmI$L!{imIrPr+G2V|(OIT%D>@I_nmVMP9n#uS2GpRr7G|KcE(GHFc^KJ!_~oH9 z%f7y)&lkt6Gh3i7&<|Towv)*#=2<({T#6=Y>;e5khAR2LKYu`=QXJ>ntMS(3@noJPNv zzJ2-));~aI6PC6fP+yr``MXU!WekDcGI>;gK*Faz`tkvt@oCtnhEH+%O#9UD)1Xfg zpQ1jU^69is<35YM?bBJGCVZOo>6}mJeY)UN(Wg0|F8eg^(-oh-kVfvx=K`Mp2ie&F APXGV_ literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxDisplayMode.class b/com/petterp/floatingx/assist/FxDisplayMode.class new file mode 100644 index 0000000000000000000000000000000000000000..04872d40ee7641799f39e1cfb49275a8fe5d2a4b GIT binary patch literal 2059 zcmb7E-BTM?6#w0ukKHT*LZB1^YPG2*Y3T+8TN^|^8Z;#YB{a1}AC|Dih0QLL-7xeG zU;IOS&=(&RW?Du^C&Od^sE+6EE;b!(M`n}zaqju}o!>e4zIge^-vFlZ9Yd~RH`RUJ zb@kT1`oy#~*RXaDRn2h>$5odP?;Fm(sXbk_w{;1OVXnNZ9cZelSvzXcYBy)g|KCAj zuE5auy1j%jLv+@#40n!UIMe06>b3|=p_HvLgfiJ$98pLLB8V}B-R}*D;nroMGbm}D zAg3*@sWT)mhGOXTHSE^5VQD40^eT;L7>( z8DIVhMVf6;-gHf53@YR*CSyv*OdONAD)yf-4Ai?w_867$IRSeUWh>Mr3lvds`7g&4 znG0UtLV6raxUXOlMGAjTz^d+Q+nTEpKfHMmqPK>N0d$}C#Dd-terSkQo>tqF439cT zLkb_^3Qr^yE=OtZp_$8PKc4--M>MYWf$bz0n8XwZGh!A}w z&D|V-4&`@Ra@1&y5)(rC5slY;74!&)p0pQz!FfLtWbqA2Ib;mbm!uQndXXf;M{n*J zSAK>R{srOCuOtZJF^v)Mo_W?4E9u3G`!+$W7>02*@Hgz80Ln4Op5grtKKPB?05N(C z(t%DUh^Zub?i3$&z=aNV4UN8M1sTFFtg^@v6oE7mcn%*U@B8%gxrt3W6-?an2&DTH z#JNG1BDc}#U*Idb5M@}+k@<8r7dghAYR-2f<1Ufn)3J##836bG1b>|TH1r(zPH@HB z6vEzS+S|-Vyv?0c%$;D2a_wOL6w4>bi{ki%^?3z}p_h_Mp`Ug>;1KGh!?A&HX)crY z7sT_Ib%aVNdA|o(Dbc}d2^Fl>!5n;ruj}Y>5O=WdAnHJJFz8^)!Hk2dCme8){0FW? B-h%)D literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/assist/FxScopeType.class b/com/petterp/floatingx/assist/FxScopeType.class new file mode 100644 index 0000000000000000000000000000000000000000..b70f734f25f2442e329af2bf6d51f13b57a882a1 GIT binary patch literal 2049 zcmb7E>r)$56#w0u$8MH|hCnF<)M`^rf;0ia)`G~xAd&Ep4XF?vX9-)nknA$q4TInC zi+_kSj$izsFk=}VoeUrSqa4rO-P&}pos!3WocH;ibI;%Z{Qeh!Nqo(auGx*;k>R>V z^C?5Q6?U5mYG0c<>^kY3&*RB0r!D=;TO0TOvJv+_N z^P;wdFhg|4v`lxFVIbXMTyvWg$8<4MVF;x&6%|oP3L=Oxgxx2m!;pP_-waC1pm0-` z-Y^&vR~<2Q`x16@&$RS911mDb_YHShcQ%Y>!z4g#%L`_Q*7=PM6@5@+;OM6$j`e!W zprFRmnd)`ol2VoV(pEuZ7`=v`ia`ts*GY=;Ii~Bo2S&}6Fv1Y2)oqJX?N4VqlJy0q zRlJF}6ug1k5{4KgFZlJx472}Jg3NW&nd&sKSf?(U?rblMwd zc+@`aSNI@Tcs#CfIZAsM?OeY6{_;CM*gl<*6X68Uw@>qIAtv+7AEIHI$3vUFaVg33 z@`EL!M3Z4T7FQ0q9HxJS{!w9mf(g&vPhNbwJss2R-l0o_WYONEH*%w7TE<$dv1>HT z`flAD5Oz(kSM;VS?g25TnfsRRwwff+t+{&ba8*AFc*C15%QYKD(Kc6~Vc2s%eBEip&j(*#gi`UE=N36+k>G9=^9zYmuZx8Z;Pb-J)9o zA^H+EJ38_d%CB_fsL&cEG=MN3(R$k#L6H`EgLz*eJ$&ok@0{)@!{AZFvaKLAK=@Gk3vuJ z@EkY2%XHYgOnR4@hwN_ literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/listener/IKeyBackListener.class b/com/petterp/floatingx/listener/IKeyBackListener.class new file mode 100644 index 0000000000000000000000000000000000000000..346fde48d02e5baec9f19fb2e0a138da13d77c86 GIT binary patch literal 425 zcmb7AO;5r=6r8u^%OY6(M1O!$4=xZB51#a3tYS2pc#u=wNB;Nc{ z#x3#W&E#d?WZ%oq%=`L&{{V1?JpvEYF`o!y#B{<3Ng5cbh6|oZZG;k2?%#>Gt00WK zzYk>)!5anhfG2?(@`wINgr*FKP)k+5`8X9?i-_PH9lsJ9-8eOgRQz6;APP)yL15## zV-2tzK%h7$_FuM;Icr%KwFxK7tnRWVbD6iyTwBbmRtC*w)?qEWt$6H!wVa#7&#YwC zS=1r4yZ?-1%~%6le^Z{uhTuM@vuP-lvW#J8h1=M*{oHDl?WEF!<6~`AE~-A(QS(v9Mh~Rnq0vJ@V^d>GqiFF5T`FW5 literal 0 HcmV?d00001 diff --git a/com/petterp/floatingx/listener/control/IFxSystemControl.class b/com/petterp/floatingx/listener/control/IFxSystemControl.class new file mode 100644 index 0000000000000000000000000000000000000000..51ac85310b829d86e5731c7d3bad3d5ddc7274c9 GIT binary patch literal 432 zcmbVI%Sr=55Uiff%T?pX_=tXhs0SwoA&4gtf{}<|AeWprn@OBxcP8vkV!Z8ld60lN zKT4d9H;+P7U35cNReycIe*n0`A)y)Qh|h#EBA)S4sC^^Vc*#SV7@zsraKX{?Ir64S_`q z$Lg~TK%i+x>^ZiS8LL}1yd<2j(z45H%w^sxb!{<^l}5Ey+F*5hD0%Fd)t&p3&$M7g z*|0&l?))>2HD!%d|AxGn8iL!^^EePK84AMD^IRDjiJna4AQZPsX=7ieRZ_4XkjoN* za)dkzmND$FaSsQ!H?2m|Zc2SPZEUQ|#bz5@*lweYojxdmhf3f65W5Mg3Gx