Bug 459849

Summary: Using "Copy/Cut Selection to New Layer" on the "File Layer" is not valid.
Product: [Applications] krita Reporter: Eranthis stellata Maxim <1012468643>
Component: Layer StackAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: griffinvalley
Priority: NOR Keywords: triaged
Version: 5.1.1   
Target Milestone: ---   
Platform: Compiled Sources   
OS: All   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Eranthis stellata Maxim 2022-09-30 09:30:18 UTC
SUMMARY
Using "Copy/Cut Selection to New Layer" on the "File Layer" is not valid.
In 5.0.6, using "Copy/Cut Select to New Layer" on a "File Layer" is valid.


STEPS TO REPRODUCE
1. Add a "File Layer".
2. Select an area of the File Layer.
3. Use "Copy/Cut Select to New Layer".

OBSERVED RESULT
The result looks like I used copy and paste for the File layer.

EXPECTED RESULT
As in 5.0.6, using "Copy/Cut Select to New Layer" produces the effect of copying the selection to a new layer.

SOFTWARE/OS VERSIONS
Krita

 Version: 5.1.1
 Installation type: installer / portable package
 Hidpi: true

Qt

  Version (compiled): 5.12.12
  Version (loaded): 5.12.12

OS Information

  Build ABI: x86_64-little_endian-llp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: winnt
  Kernel Version: 10.0.19044
  Pretty Productname: Windows 10 (10.0)
  Product Type: windows
  Product Version: 10

Locale

  Languages: en_US, en_US
  C locale: C
  QLocale current: en
  QLocale system: zh
  QTextCodec for locale: UTF-8
  Process ACP: 65001 (UTF-8)
  System locale default ACP: 936   (ANSI/OEM - 简体中文 GBK)

OpenGL Info
 
  Vendor:  "Google Inc. (NVIDIA)" 
  Renderer:  "ANGLE (NVIDIA, NVIDIA GeForce GTX 970 Direct3D11 vs_5_0 ps_5_0, D3D11-31.0.15.1694)" 
  Version:  "OpenGL ES 3.0.0 (ANGLE 2.1.0 git hash: f2280c0c5f93+krita_qt5.12.12)" 
  Shading language:  "OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0 git hash: f2280c0c5f93+krita_qt5.12.12)" 
  Requested format:  QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::CompatibilityProfile) 
  Current format:  QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile) 
     Version: 3.0
     Supports deprecated functions false 
     is OpenGL ES: true 
  supportsBufferMapping: true 
  supportsBufferInvalidation: false 
  forceDisableTextureBuffers: true 
  Extensions: 
     "GL_ANGLE_base_vertex_base_instance_shader_builtin" 
     "GL_OES_compressed_ETC2_sRGB8_texture" 
     "GL_ANGLE_depth_texture" 
     "GL_WEBGL_video_texture" 
     "GL_ANGLE_get_serialized_context_string" 
     "GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture" 
     "GL_ANGLE_request_extension" 
     "GL_NV_pack_subimage" 
     "GL_OES_EGL_image" 
     "GL_CHROMIUM_bind_uniform_location" 
     "GL_OES_EGL_image_external_essl3" 
     "GL_EXT_draw_buffers" 
     "GL_ANGLE_program_cache_control" 
     "GL_EXT_texture_rg" 
     "GL_OES_draw_buffers_indexed" 
     "GL_OES_element_index_uint" 
     "GL_EXT_map_buffer_range" 
     "GL_OES_texture_float_linear" 
     "GL_EXT_texture_compression_bptc" 
     "GL_EXT_read_format_bgra" 
     "GL_ANGLE_framebuffer_blit" 
     "GL_EXT_color_buffer_half_float" 
     "GL_EXT_discard_framebuffer" 
     "GL_EXT_robustness" 
     "GL_OES_compressed_EAC_RG11_signed_texture" 
     "GL_EXT_disjoint_timer_query" 
     "GL_OES_texture_npot" 
     "GL_ANGLE_texture_multisample" 
     "GL_EXT_shader_texture_lod" 
     "GL_ANGLE_client_arrays" 
     "GL_OES_EGL_image_external" 
     "GL_CHROMIUM_sync_query" 
     "GL_ANGLE_memory_size" 
     "GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture" 
     "GL_CHROMIUM_copy_compressed_texture" 
     "GL_KHR_parallel_shader_compile" 
     "GL_NV_EGL_stream_consumer_external" 
     "GL_OES_texture_stencil8" 
     "GL_EXT_instanced_arrays" 
     "GL_OES_texture_float" 
     "GL_EXT_debug_label" 
     "GL_EXT_frag_depth" 
     "GL_NV_framebuffer_blit" 
     "GL_OES_get_program_binary" 
     "GL_EXT_occlusion_query_boolean" 
     "GL_EXT_color_buffer_float" 
     "GL_OES_rgb8_rgba8" 
     "GL_ANGLE_copy_texture_3d" 
     "GL_ANGLE_texture_compression_dxt5" 
     "GL_AMD_performance_monitor" 
     "GL_OVR_multiview" 
     "GL_OES_depth24" 
     "GL_OES_depth32" 
     "GL_CHROMIUM_copy_texture" 
     "GL_EXT_blend_func_extended" 
     "GL_OES_compressed_EAC_R11_unsigned_texture" 
     "GL_CHROMIUM_lose_context" 
     "GL_EXT_blend_minmax" 
     "GL_NV_pixel_buffer_object" 
     "GL_OES_compressed_EAC_R11_signed_texture" 
     "GL_OES_packed_depth_stencil" 
     "GL_EXT_texture_compression_rgtc" 
     "GL_ANGLE_framebuffer_multisample" 
     "GL_EXT_EGL_image_external_wrap_modes" 
     "GL_OES_texture_half_float" 
     "GL_EXT_texture_filter_anisotropic" 
     "GL_EXT_multi_draw_indirect" 
     "GL_EXT_texture_format_BGRA8888" 
     "GL_OES_compressed_ETC2_sRGB8_alpha8_texture" 
     "GL_ANGLE_provoking_vertex" 
     "GL_ANGLE_robust_client_memory" 
     "GL_EXT_texture_norm16" 
     "GL_ANGLE_multi_draw" 
     "GL_EXT_float_blend" 
     "GL_OES_standard_derivatives" 
     "GL_OES_fbo_render_mipmap" 
     "GL_ANGLE_lossy_etc_decode" 
     "GL_OES_draw_elements_base_vertex" 
     "GL_OES_texture_half_float_linear" 
     "GL_ANGLE_pack_reverse_row_order" 
     "GL_EXT_clip_control" 
     "GL_ANGLE_translated_shader_source" 
     "GL_EXT_draw_elements_base_vertex" 
     "GL_EXT_debug_marker" 
     "GL_ANGLE_base_vertex_base_instance" 
     "GL_EXT_draw_buffers_indexed" 
     "GL_EXT_sRGB" 
     "GL_CHROMIUM_bind_generates_resource" 
     "GL_ANGLE_get_tex_level_parameter" 
     "GL_ANGLE_texture_usage" 
     "GL_EXT_texture_compression_s3tc_srgb" 
     "GL_ANGLE_texture_compression_dxt3" 
     "" 
     "GL_EXT_texture_compression_dxt1" 
     "GL_EXT_texture_storage" 
     "GL_KHR_debug" 
     "GL_OVR_multiview2" 
     "GL_OES_compressed_ETC2_RGBA8_texture" 
     "GL_ANGLE_multiview_multisample" 
     "GL_NV_fence" 
     "GL_OES_compressed_ETC2_RGB8_texture" 
     "GL_EXT_texture_type_2_10_10_10_REV" 
     "GL_EXT_multisampled_render_to_texture" 
     "GL_EXT_unpack_subimage" 
     "GL_OES_surfaceless_context" 
     "GL_OES_texture_border_clamp" 
     "GL_OES_vertex_array_object" 
     "GL_ANGLE_instanced_arrays" 
     "GL_OES_compressed_EAC_RG11_unsigned_texture" 
     "GL_OES_mapbuffer" 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsAngleD3D11: true 
  isQtPreferAngle: true 

useBufferInvalidation (config option): false


Hardware Information

  GPU Acceleration: auto
  Memory: 32693 Mb
  Number of Cores: 16
  Swap Location: C:/Users/xi/AppData/Local/Temp
  Built for: sse2
  Base instruction set: sse2
  Supported instruction sets: fma3+avx2 avx2 fma3+avx avx fma4 fma3+sse4.2 sse4.2 sse4.1 ssse3 sse3 sse2 

Current Settings

  Current Swap Location: C:/Users/xi/AppData/Local/Temp
  Current Swap Location writable: true
  Undo Enabled: true
  Undo Stack Limit: 200
  Use OpenGL: true
  Use OpenGL Texture Buffer: true
  Disable Vector Optimizations: false
  Disable AVX Optimizations: false
  Canvas State: OPENGL_NOT_TRIED
  Autosave Interval: 420
  Use Backup Files: true
  Number of Backups Kept: 1
  Backup File Suffix: ~
  Backup Location: Same Folder as the File
  Backup Location writable: false
  Use Win8 Pointer Input: false
  Use RightMiddleTabletButton Workaround: false
  Levels of Detail Enabled: false
  Use Zip64: false


Display Information
Number of screens: 2
	Screen: 0
		Name: \\.\DISPLAY1
		Depth: 32
		Scale: 1
		Physical DPI117.596
		Logical DPI96
		Physical Size: 553, 311
		Position: 0, 0
		Resolution in pixels: 2560x1440
		Manufacturer: 
		Model: 
		Refresh Rate: 59
	Screen: 1
		Name: \\.\DISPLAY2
		Depth: 32
		Scale: 1
		Physical DPI141.951
		Logical DPI96
		Physical Size: 344, 193
		Position: 638, 1440
		Resolution in pixels: 1920x1080
		Manufacturer: 
		Model: 
		Refresh Rate: 60


---------------------
================================================================================
SESSION: 30 Sep 2022 17:15:04 +0800. Executing C:\Program Files\Krita (x64)\bin\krita.exe

Krita Version: 5.1.1, Qt version compiled: 5.12.12, loaded: 5.12.12. Process ID: 8892
-- -- -- -- -- -- -- --
30 Sep 2022 17:15:04 +0800: Style: fusion. Available styles: windowsvista, Windows, Fusion
30 Sep 2022 17:15:05 +0800: Creating database from scratch (database didn't exist, new schema version: 0.0.17).
30 Sep 2022 17:15:14 +0800: Non-store package - creating updater
30 Sep 2022 17:15:27 +0800: Created image "Unnamed", 2480 * 3508 pixels, 300 dpi. Color model: 8-bit integer/channel RGB/Alpha (sRGB-elle-V2-srgbtrc.icc). Layers: 2
30 Sep 2022 17:15:41 +0800: Importing image/png to application/x-krita. Location: C:/Users/xi/AppData/Local/Temp/krita_file_layer_copy_8892_29503.png. Real location: C:/Users/xi/AppData/Local/Temp/krita_file_layer_copy_8892_29503.png. Batchmode: 1
30 Sep 2022 17:15:41 +0800: Loaded image from image/png. Size: 1024 * 512 pixels, 1 dpi. Color model: 8-bit integer/channel RGB/Alpha (sRGB-elle-V2-srgbtrc.icc). Layers: 2

---------------------
Comment 1 wolthera 2023-01-16 14:26:01 UTC
Hi, thank you for your report.

I can confirm with the Krita Version: 5.2.0-prealpha (git 5c98a72) Appimage with Qt 5.15.7

I guess we should initialize the layer as empty and then only have the filled selection painted.
Comment 2 Freya Lupen 2024-06-12 19:18:15 UTC
Git commit 09ff812f8316eea0a6bf55d49ec093c6a3ea41d2 by Freya Lupen.
Committed on 12/06/2024 at 19:17.
Pushed by freyalupen into branch 'master'.

Fix copy-pasting selection of File Layer

If there's a selection, it should paste a new paint layer containing
the selection, instead of duplicating the entire File Layer.

M  +1    -1    libs/ui/actions/kis_selection_action_factories.cpp

https://invent.kde.org/graphics/krita/-/commit/09ff812f8316eea0a6bf55d49ec093c6a3ea41d2
Comment 3 Freya Lupen 2024-06-12 19:19:09 UTC
Git commit eb29ed416fa3dc6f49b5d65996570e39e5abba70 by Freya Lupen.
Committed on 12/06/2024 at 19:19.
Pushed by freyalupen into branch 'krita/5.2'.

Fix copy-pasting selection of File Layer

If there's a selection, it should paste a new paint layer containing
the selection, instead of duplicating the entire File Layer.


(cherry picked from commit 09ff812f8316eea0a6bf55d49ec093c6a3ea41d2)

Co-authored-by: Freya Lupen <penguinflyer2222@gmail.com>

M  +1    -1    libs/ui/actions/kis_selection_action_factories.cpp

https://invent.kde.org/graphics/krita/-/commit/eb29ed416fa3dc6f49b5d65996570e39e5abba70