SVG bad click detection
Reported by
ericu@chromium.org,
Apr 2 2017
|
|||
Issue descriptionVersion: 57.0.2987.88 (Official Build) beta (64-bit) OS: Linux What steps will reproduce the problem? (1) Load the attached file with the dev console open. (2) Click around the circles, *outside* the circles but *within* a square bounding box around them. (3) Look for clicks reported in the console. What is the expected result? You should get a log message only for a click on a circle, not nearby. What happens instead? For the central circle on the left diagram, and the lower-right quarter circle in both diagrams, clicks outside the circle but inside a square bounding box will trigger log messages. For the center circle, you need to click down and to the right. For the other two, it's up and to the left, as the rest isn't shown. This looks like more than one bug to me, since the two diagrams should have identical behavior, but I don't know the code involved. This is the same test file as crbug.com/118734 ; I don't know if it's related. I tried this in Firefox as well; they have different bugs than us. For graphics-related bugs, please copy/paste the contents of the about:gpu page at the end of this report. Graphics Feature Status Canvas: Software only, hardware acceleration unavailable Flash: Software only, hardware acceleration unavailable Flash Stage3D: Software only, hardware acceleration unavailable Flash Stage3D Baseline profile: Software only, hardware acceleration unavailable Compositing: Software only, hardware acceleration unavailable Multiple Raster Threads: Unavailable Native GpuMemoryBuffers: Software only. Hardware acceleration disabled Rasterization: Software only, hardware acceleration unavailable Video Decode: Software only, hardware acceleration unavailable Video Encode: Software only, hardware acceleration unavailable VPx Video Decode: Software only, hardware acceleration unavailable WebGL: Unavailable WebGL2: Unavailable Driver Bug Workarounds clear_uniforms_before_first_program_use decode_encode_srgb_for_generatemipmap disable_discard_framebuffer disable_framebuffer_cmaa force_cube_complete init_gl_position_in_vertex_shader init_vertex_attributes pack_parameters_workaround_with_pack_buffer remove_pow_with_constant_exponent scalarize_vec_and_mat_constructor_args unpack_alignment_workaround_with_unpack_buffer unpack_overlapping_rows_separately_unpack_buffer use_virtualized_gl_contexts Problems Detected GPU process was unable to boot: GPU process launch failed. Disabled Features: all Accelerated video decode is unavailable on Linux: 137247 Disabled Features: accelerated_video_decode NVIDIA linux drivers are unstable when using multiple Open GL contexts and with low memory: 145600 Disabled Features: flash_3d, accelerated_video_decode, flash_stage3d Program link fails in NVIDIA Linux if gl_Position is not set: 286468 Applied Workarounds: init_gl_position_in_vertex_shader Clear uniforms before first program use on all platforms: 124764, 349137 Applied Workarounds: clear_uniforms_before_first_program_use Linux NVIDIA drivers don't have the correct defaults for vertex attributes: 351528 Applied Workarounds: init_vertex_attributes Always rewrite vec/mat constructors to be consistent: 398694 Applied Workarounds: scalarize_vec_and_mat_constructor_args MakeCurrent is slow on Linux with NVIDIA drivers: 449150, 514510 Applied Workarounds: use_virtualized_gl_contexts NVIDIA 331 series drivers shader compiler may crash when attempting to optimize pow(): 477306 Applied Workarounds: remove_pow_with_constant_exponent NVIDIA drivers before 346 lack features in NV_path_rendering and related extensions to implement driver level path rendering.: 344330 NVIDIA fails glReadPixels from incomplete cube map texture: 518889 Applied Workarounds: force_cube_complete Pack parameters work incorrectly with pack buffer bound: 563714 Applied Workarounds: pack_parameters_workaround_with_pack_buffer Alignment works incorrectly with unpack buffer bound: 563714 Applied Workarounds: unpack_alignment_workaround_with_unpack_buffer Framebuffer discarding can hurt performance on non-tilers: 570897 Applied Workarounds: disable_discard_framebuffer Unpacking overlapping rows from unpack buffers is unstable on NVIDIA GL driver: 596774 Applied Workarounds: unpack_overlapping_rows_separately_unpack_buffer Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198 Applied Workarounds: disable_framebuffer_cmaa Decode and encode before generateMipmap for srgb format textures on os except macosx: 634519 Applied Workarounds: decode_encode_srgb_for_generatemipmap Disable KHR_blend_equation_advanced until cc shaders are updated: 661715 Native GpuMemoryBuffers have been disabled, either via about:flags or command line. Disabled Features: native_gpu_memory_buffers Version Information Data exported 4/1/2017, 5:01:15 PM Chrome version Chrome/57.0.2987.88 Operating system Linux 4.7.0-1-amd64 Software rendering list version 12.13 Driver bug list version 9.29 ANGLE commit id c1a5d16e964a 2D graphics backend Skia/57 7695359876b8f90225bc4be895c20f34fcdfaf2e Command Line Args --user-data-dir=/home/uranium/.config/google-chrome-beta --user-data-dir=/home/uranium/.config/google-chrome/Second --flag-switches-begin --flag-switches-end Driver Information Initialization time 0 In-process GPU true Passthrough Command Decoder false Sandboxed false GPU0 VENDOR = 0x10de, DEVICE= 0x0a3c Optimus false AMD switchable false Driver vendor NVIDIA Driver version 304.125 Driver date Pixel shader version Vertex shader version Max. MSAA samples Machine model name Machine model version GL_VENDOR NVIDIA Corporation GL_RENDERER Quadro FX 880M/PCIe/SSE2 GL_VERSION 3.3.0 NVIDIA 304.125 GL_EXTENSIONS Disabled Extensions GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_NV_path_rendering Window system binding vendor Window system binding version Window system binding extensions Window manager Metacity XDG_CURRENT_DESKTOP GNOME-Flashback:GNOME GDMSESSION gnome-flashback-metacity Compositing manager Yes Direct rendering Yes Reset notification strategy 0x0000 GPU process crash count 1 System visual ID 0 RGBA visual ID 0 Compositor Information Tile Update Mode One-copy Partial Raster Enabled GpuMemoryBuffers Status ATC Software only ATCIA Software only DXT1 Software only DXT5 Software only ETC1 Software only R_8 Software only RG_88 Software only BGR_565 Software only RGBA_4444 Software only RGBX_8888 Software only RGBA_8888 Software only BGRX_8888 Software only BGRA_8888 Software only YVU_420 Software only YUV_420_BIPLANAR Software only UYVY_422 Software only Log Messages GpuProcessHostUIShim: The GPU process exited with code 1024.
,
Apr 4 2017
,
Dec 14 2017
This had me puzzled for a bit, and I didn't notice this when first looking at the TC (and on the second look it took me a while to ponder the effect of it), but there's one <circle> in each <svg> that has pointer-events=visible - this means that as long as the element is visible ('visibility' is 'visible') both 'fill' and 'stroke' geometry will be considered _regardless_ of whether or not 'fill' or 'stroke' is specified (is non-'none') (see [1].) So that makes those <circle>s clickable even a bit outside of their painted shapes. (And since the initial/default stroke-width is 1, that's quite a bit of extra area in the left <svg>.)
I've attached an slightly updated test that highlights the area covered by the stroke geometry in the relevant cases. (It also highlights a bug with wide strokes...)
[1] https://svgwg.org/svg2-draft/interact.html#PointerEventsProp
|
|||
►
Sign in to add a comment |
|||
Comment 1 by f...@opera.com
, Apr 3 2017