compose-multiplatform icon indicating copy to clipboard operation
compose-multiplatform copied to clipboard

SelectionContainer and TextField: Unable to select words with blank chars (space, \n, ...)

Open TsihenHo opened this issue 2 years ago • 1 comments

https://user-images.githubusercontent.com/52124236/190847396-c6c73dc7-fcd8-4778-9662-c9fa58118183.mp4

this problem also remains in TextField

Os windows 7 Version 1.2.0-beta01

the error msg:

Shader compilation error
------------------------
   1	#version 420 compatibility
   2	
   3	const float PRECISION = 4.0;
   4	const float MAX_FIXED_RESOLVE_LEVEL = 5.0;
   5	const float MAX_FIXED_SEGMENTS = 32.0;
   6	uniform vec4 sk_RTAdjust;
   7	uniform vec4 uaffineMatrix_S0;
   8	uniform vec2 utranslate_S0;
   9	in vec2 resolveLevel_and_idx;
  10	in vec4 p01;
  11	in vec4 p23;
  12	in vec2 fanPointAttrib;
  13	float wangs_formula_max_fdiff_p2_ff2f2f2f2f22(vec2 p0, vec2 p1, vec2 p2, vec2 p3, mat2 matrix) {
  14	    vec2 d0 = matrix * (fma(vec2(-2.0), p1, p2) + p0);
  15	    vec2 d1 = matrix * (fma(vec2(-2.0), p2, p3) + p1);
  16	    return max(dot(d0, d0), dot(d1, d1));
  17	}
  18	float wangs_formula_conic_p2_fff2f2f2f(float _precision_, vec2 p0, vec2 p1, vec2 p2, float w) {
  19	    vec2 C = (min(min(p0, p1), p2) + max(max(p0, p1), p2)) * 0.5;
  20	    p0 -= C;
  21	    p1 -= C;
  22	    p2 -= C;
  23	    float m = sqrt(max(max(dot(p0, p0), dot(p1, p1)), dot(p2, p2)));
  24	    vec2 dp = fma(vec2(-2.0 * w), p1, p0) + p2;
  25	    float dw = abs(fma(-2.0, w, 2.0));
  26	    float rp_minus_1 = max(0.0, fma(m, _precision_, -1.0));
  27	    float numer = length(dp) * _precision_ + rp_minus_1 * dw;
  28	    float denom = 4.0 * min(w, 1.0);
  29	    return numer / denom;
  30	}
  31	void main() {
  32	    mat2 AFFINE_MATRIX = mat2(uaffineMatrix_S0);
  33	    vec2 TRANSLATE = utranslate_S0;
  34	    float resolveLevel = resolveLevel_and_idx.x;
  35	    float idxInResolveLevel = resolveLevel_and_idx.y;
  36	    vec2 localcoord;
  37	    if (resolveLevel < 0.0) {
  38	        localcoord = fanPointAttrib;
  39	    } else if (isinf(p23.z)) {
  40	        localcoord = resolveLevel != 0.0 ? p01.zw : (idxInResolveLevel != 0.0 ? p23.xy : p01.xy);
  41	    } else {
  42	        vec2 p0 = p01.xy;
  43	        vec2 p1 = p01.zw;
  44	        vec2 p2 = p23.xy;
  45	        vec2 p3 = p23.zw;
  46	        float w = -1.0;
  47	        float maxResolveLevel;
  48	        if (isinf(p23.w)) {
  49	            w = p3.x;
  50	            float _0_n2 = wangs_formula_conic_p2_fff2f2f2f(PRECISION, AFFINE_MATRIX * p0, AFFINE_MATRIX * p1, AFFINE_MATRIX * p2, w);
  51	            maxResolveLevel = ceil(log2(max(_0_n2, 1.0)) * 0.5);
  52	            p1 *= w;
  53	            p3 = p2;
  54	        } else {
  55	            float _1_m = wangs_formula_max_fdiff_p2_ff2f2f2f2f22(p0, p1, p2, p3, AFFINE_MATRIX);
  56	            maxResolveLevel = ceil(log2(max(9.0 * _1_m, 1.0)) * 0.25);
  57	        }
  58	        if (resolveLevel > maxResolveLevel) {
  59	            idxInResolveLevel = floor(ldexp(idxInResolveLevel, int(maxResolveLevel - resolveLevel)));
  60	            resolveLevel = maxResolveLevel;
  61	        }
  62	        float fixedVertexID = floor(0.5 + ldexp(idxInResolveLevel, int(MAX_FIXED_RESOLVE_LEVEL - resolveLevel)));
  63	        if (0.0 < fixedVertexID && fixedVertexID < MAX_FIXED_SEGMENTS) {
  64	            float T = fixedVertexID * 0.03125;
  65	            vec2 ab = mix(p0, p1, T);
  66	            vec2 bc = mix(p1, p2, T);
  67	            vec2 cd = mix(p2, p3, T);
  68	            vec2 abc = mix(ab, bc, T);
  69	            vec2 bcd = mix(bc, cd, T);
  70	            vec2 abcd = mix(abc, bcd, T);
  71	            float u = mix(1.0, w, T);
  72	            float v = (w + 1.0) - u;
  73	            float uv = mix(u, v, T);
  74	            localcoord = w < 0.0 ? abcd : abc / uv;
  75	        } else {
  76	            localcoord = fixedVertexID == 0.0 ? p0 : p3;
  77	        }
  78	    }
  79	    vec2 vertexpos = AFFINE_MATRIX * localcoord + TRANSLATE;
  80	    gl_Position = vec4(vertexpos, 0.0, 1.0);
  81	    gl_Position = vec4(gl_Position.xy * sk_RTAdjust.xz + gl_Position.ww * sk_RTAdjust.yw, 0.0, gl_Position.w);
  82	}
  83	
Errors:
Vertex shader failed to compile with the following errors:
ERROR: 0:32: error(#53) Built-in function parameter type check fail: an operation which requires matrix parameters is used on a non matrix type!
ERROR: 0:32: error(#53) Built-in function parameter type check fail: an operation which requires matrix parameters is used on a non matrix type!
ERROR: error(#273) 2 compilation errors.  No code generated

TsihenHo avatar Sep 17 '22 08:09 TsihenHo

#1576 #2135 are similar and maybe related

TsihenHo avatar Sep 17 '22 08:09 TsihenHo