Bug 509741

Summary: Incorrect deform mode displayed in popup palette
Product: [Applications] krita Reporter: oct5sys
Component: UsabilityAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: michelist.tracksbugs
Priority: NOR    
Version First Reported In: 5.2.11   
Target Milestone: ---   
Platform: EndeavourOS   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Screenshot showing the popup palette and the brush settings window

Description oct5sys 2025-09-21 07:52:17 UTC
Created attachment 185130 [details]
Screenshot showing the popup palette and the brush settings window

SUMMARY
The Deform Mode dropdown menu displays a different mode than what is currently selected

STEPS TO REPRODUCE
1. Switch to a Deform Engine brush
2. Open the popup palette
3. Select a mode in the Deform Mode dropdown menu

OBSERVED RESULT
The mode you selected will be different than the one that's actually selected (ex. selecting Lens Zoom In will actually be the Move mode)

EXPECTED RESULT
The selected mode matches the one that is actually selected

SOFTWARE/OS VERSIONS
Linux: EndeavorOS  6.16.8-arch1-1
XFCE Version: 4.20 
GTK Version: 3.24.50
Qt Version: 5.15.17

ADDITIONAL INFORMATION
Bug first reported on Krita Artists: https://krita-artists.org/t/incorrect-deform-mode-displayed-in-pop-up-palette/142106?u=zomhara
Comment 1 Michael Strothotte 2025-09-21 08:36:41 UTC
I can confirm that the same happens to me using Windows too.

System:
Windows 10 Pro
Tested Krita versions:
5.2.11 (git a4da714)
5.3.0-prealpha (git f2a0b62)
6.0.0-prealpha (git 01205ab)

Michelist / Michael Strothotte

Show system information for bug reports:

Krita

 Version: 5.2.11 (git a4da714)
 Installation type: installer / portable package
 Hidpi: true

Qt

  Version (compiled): 5.15.7
  Version (loaded): 5.15.7

OS Information

  Build ABI: x86_64-little_endian-llp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: winnt
  Kernel Version: 10.0.19045
  Pretty Productname: Windows 10 Version 2009
  Product Type: windows
  Product Version: 10

Locale

  Languages: en_GB, en_GB
  C locale: C
  QLocale current: en-GB
  QLocale system: de
  QTextCodec for locale: UTF-8
  Process ACP: 65001 (UTF-8)
  System locale default ACP: 1252  (ANSI - Lateinisch I)

OpenGL Info
 
  Vendor:  "ATI Technologies Inc." 
  Renderer:  "Radeon RX 580 Series" 
  Driver version:  "4.6.0 Compatibility Profile Context 25.8.1.250617" 
  Shading language:  "4.60" 
  Requested format:  QSurfaceFormat(version 3.3, 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 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::CompatibilityProfile) 
  GL version: 4.6 
  Supports deprecated functions true 
  Is OpenGL ES: false 
  supportsBufferMapping: true 
  supportsBufferInvalidation: true 
  forceDisableTextureBuffers: false 
  Extensions: 
     GL_ARB_gl_spirv 
     GL_ARB_base_instance 
     GL_KHR_texture_compression_astc_ldr 
     GL_AMD_pinned_memory 
     GL_ARB_texture_compression 
     GL_ARB_vertex_attrib_64bit 
     GL_ARB_shadow_ambient 
     GL_EXT_texture_rectangle 
     GL_ARB_shader_image_size 
     GL_ARB_compute_shader 
     GL_ARB_get_program_binary 
     GL_ARB_vertex_program 
     GL_EXT_memory_object_win32 
     GL_ARB_arrays_of_arrays 
     GL_ARB_ES3_compatibility 
     GL_EXT_polygon_offset_clamp 
     GL_EXT_texture_object 
     GL_NV_copy_image 
     GL_ARB_texture_buffer_range 
     GL_ARB_direct_state_access 
     GL_SGIS_texture_edge_clamp 
     GL_OVR_multiview 
     GL_ARB_texture_buffer_object_rgb32 
     GL_ARB_texture_multisample_no_array 
     GL_ARB_multitexture 
     GL_ARB_window_pos 
     GL_ARB_vertex_shader 
     GL_ARB_derivative_control 
     GL_ARB_sample_locations 
     GL_ARB_program_interface_query 
     GL_ARB_vertex_array_object 
     GL_ARB_shader_texture_image_samples 
     GL_ARB_pixel_buffer_object 
     GL_ARB_depth_clamp 
     GL_ARB_seamless_cube_map 
     GL_ARB_parallel_shader_compile 
     GL_EXT_provoking_vertex 
     GL_AMD_vertex_shader_layer 
     GL_ARB_spirv_extensions 
     GL_KHR_shader_subgroup 
     GL_ATI_texture_env_combine3 
     GL_AMD_gpu_shader_half_float 
     GL_ARB_copy_buffer 
     GL_EXT_transform_feedback 
     GL_EXT_blend_func_separate 
     GL_OES_EGL_image 
     GL_NV_primitive_restart 
     GL_EXT_semaphore 
     GL_EXT_texture_compression_bptc 
     GL_ARB_texture_non_power_of_two 
     GL_ARB_viewport_array 
     GL_NV_timeline_semaphore 
     GL_AMD_blend_minmax_factor 
     GL_ARB_shader_subroutine 
     GL_KHR_no_error 
     GL_EXT_texture_filter_anisotropic 
     GL_EXT_texture_mirror_clamp 
     GL_EXT_texture_shared_exponent 
     GL_ATI_draw_buffers 
     GL_EXT_gpu_program_parameters 
     GL_ARB_transform_feedback3 
     GL_ARB_texture_swizzle 
     GL_EXT_packed_float 
     GL_ARB_buffer_storage 
     GL_ARB_texture_compression_bptc 
     GL_ARB_framebuffer_no_attachments 
     GL_EXT_shader_image_load_store 
     GL_AMD_gpu_shader_int64 
     GL_AMD_depth_clamp_separate 
     GL_AMD_multi_draw_indirect 
     GL_ARB_gpu_shader_fp64 
     GL_ARB_geometry_shader4 
     GL_NV_shader_atomic_int64 
     GL_EXT_bgra 
     GL_ARB_instanced_arrays 
     GL_ARB_clip_control 
     GL_ARB_texture_query_lod 
     GL_ARB_shader_precision 
     GL_ARB_transform_feedback2 
     GL_EXT_copy_buffer 
     GL_EXT_texture_lod 
     GL_ARB_fragment_shader 
     GL_AMD_gpu_shader_int16 
     GL_EXT_texture_buffer_object 
     GL_ARB_pipeline_statistics_query 
     GL_ATI_meminfo 
     GL_EXT_semaphore_win32 
     GL_NV_texture_barrier 
     GL_ARB_fragment_coord_conventions 
     GL_EXT_texture_swizzle 
     GL_EXT_pixel_buffer_object 
     GL_ARB_occlusion_query 
     GL_ARB_ES2_compatibility 
     GL_EXT_texture_lod_bias 
     GL_ARB_vertex_attrib_binding 
     GL_ARB_timer_query 
     GL_ARB_texture_rectangle 
     GL_EXT_texture_cube_map 
     GL_ARB_tessellation_shader 
     GL_EXT_framebuffer_sRGB 
     GL_ARB_robustness 
     GL_ARB_point_parameters 
     GL_ARB_texture_mirror_clamp_to_edge 
     GL_EXT_texture3D 
     GL_ARB_texture_cube_map_array 
     GL_SGIS_texture_lod 
     GL_EXT_timer_query 
     GL_EXT_gpu_shader4 
     GL_S3_s3tc 
     GL_EXT_texture_sRGB_RG8 
     GL_EXT_texture_sRGB_decode 
     GL_KHR_robust_buffer_access_behavior 
     GL_ARB_shader_atomic_counter_ops 
     GL_ARB_texture_rgb10_a2ui 
     GL_ARB_draw_indirect 
     GL_EXT_vertex_attrib_64bit 
     GL_EXT_texture_storage 
     GL_ARB_shading_language_420pack 
     GL_ARB_texture_query_levels 
     GL_EXT_packed_depth_stencil 
     GL_EXT_debug_label 
     GL_EXT_secondary_color 
     GL_NV_half_float 
     GL_EXT_compiled_vertex_array 
     GL_ARB_shader_bit_encoding 
     GL_EXT_draw_range_elements 
     GL_ARB_shader_clock 
     GL_ARB_texture_mirrored_repeat 
     GL_ARB_bindless_texture 
     GL_EXT_texture_sRGB 
     GL_ARB_texture_storage 
     GL_NV_depth_buffer_float 
     GL_ARB_query_buffer_object 
     GL_EXT_geometry_shader4 
     GL_KHR_robustness 
     GL_ARB_shader_storage_buffer_object 
     GL_ARB_framebuffer_object 
     GL_ARB_depth_buffer_float 
     GL_ARB_color_buffer_float 
     GL_ARB_shader_ballot 
     GL_ATI_texture_float 
     GL_SGIS_generate_mipmap 
     GL_EXT_texture_array 
     GL_ARB_texture_cube_map 
     GL_EXT_rescale_normal 
     GL_NV_conditional_render 
     GL_EXT_vertex_array_bgra 
     GL_ARB_half_float_pixel 
     GL_ATI_shader_texture_lod 
     GL_ARB_texture_barrier 
     GL_ARB_transpose_matrix 
     GL_EXT_draw_instanced 
     GL_ARB_texture_gather 
     GL_ARB_fragment_layer_viewport 
     GL_EXT_texture_compression_latc 
     GL_ARB_draw_buffers 
     GL_ARB_texture_filter_minmax 
     GL_EXT_multi_draw_arrays 
     GL_EXT_packed_pixels 
     GL_EXT_point_parameters 
     GL_NV_blend_square 
     GL_EXT_abgr 
     GL_EXT_nonuniform_qualifier 
     GL_ARB_multi_draw_indirect 
     GL_EXT_texture_compression_s3tc 
     GL_EXT_framebuffer_multisample 
     GL_EXT_shadow_funcs 
     GL_ARB_debug_output 
     GL_EXT_blend_subtract 
     GL_EXT_blend_minmax 
     GL_ARB_vertex_buffer_object 
     GL_ARB_draw_buffers_blend 
     GL_ARB_shader_stencil_export 
     GL_OVR_multiview2 
     GL_ARB_shader_atomic_counters 
     GL_ARB_fragment_program 
     GL_ARB_texture_border_clamp 
     GL_ARB_vertex_type_10f_11f_11f_rev 
     GL_IBM_texture_mirrored_repeat 
     GL_ARB_texture_storage_multisample 
     GL_AMD_query_buffer_object 
     GL_ARB_compressed_texture_pixel_storage 
     GL_ARB_separate_shader_objects 
     GL_ATI_texture_mirror_once 
     GL_EXT_shader_integer_mix 
     GL_ARB_stencil_texturing 
     GL_ARB_compatibility 
     GL_KHR_parallel_shader_compile 
     GL_EXT_texture_sRGB_R8 
     GL_ARB_clear_texture 
     GL_ARB_transform_feedback_instanced 
     GL_ARB_draw_instanced 
     GL_EXT_draw_buffers2 
     GL_EXT_vertex_array 
     GL_EXT_texture_env_add 
     GL_ARB_sampler_objects 
     GL_ARB_shader_group_vote 
     GL_NV_texgen_reflection 
     GL_EXT_fog_coord 
     GL_EXT_memory_object 
     GL_ARB_texture_rg 
     GL_ARB_shader_texture_lod 
     GL_ARB_vertex_type_2_10_10_10_rev 
     GL_ARB_texture_float 
     GL_ARB_internalformat_query2 
     GL_EXT_bindable_uniform 
     GL_KHR_blend_equation_advanced 
     GL_ARB_map_buffer_range 
     GL_EXT_depth_bounds_test 
     GL_EXT_separate_specular_color 
     GL_ARB_texture_multisample 
     GL_ARB_shading_language_100 
     GL_EXT_texture_env_dot3 
     GL_EXT_texture_snorm 
     GL_EXT_subtexture 
     WGL_EXT_swap_control 
     GL_ARB_texture_filter_anisotropic 
     GL_ARB_copy_image 
     GL_ARB_polygon_offset_clamp 
     GL_ATI_separate_stencil 
     GL_ARB_texture_view 
     GL_ARB_uniform_buffer_object 
     GL_ARB_conditional_render_inverted 
     GL_EXT_framebuffer_object 
     GL_ARB_clear_buffer_object 
     GL_ARB_shading_language_packing 
     GL_EXT_texture_compression_rgtc 
     GL_ARB_indirect_parameters 
     GL_ARB_multi_bind 
     GL_ARB_sparse_buffer 
     GL_ARB_occlusion_query2 
     GL_EXT_blend_color 
     GL_AMD_vertex_shader_viewport_index 
     GL_ARB_draw_elements_base_vertex 
     GL_EXT_direct_state_access 
     GL_EXT_framebuffer_blit 
     GL_ARB_shader_image_load_store 
     GL_EXT_texture_env_combine 
     GL_EXT_blend_equation_separate 
     GL_ARB_explicit_uniform_location 
     GL_ARB_transform_feedback 
     GL_ARB_cull_distance 
     GL_NV_float_buffer 
     GL_ARB_gpu_shader5 
     GL_ARB_vertex_array_bgra 
     GL_ARB_sync 
     GL_EXT_texture_edge_clamp 
     GL_ARB_texture_env_crossbar 
     GL_SUN_multi_draw_arrays 
     GL_ARB_texture_env_add 
     GL_ARB_conservative_depth 
     GL_ARB_fragment_program_shadow 
     GL_ARB_enhanced_layouts 
     GL_ARB_framebuffer_sRGB 
     GL_KHR_debug 
     GL_AMD_texture_cube_map_array 
     GL_ARB_shadow 
     GL_ARB_get_texture_sub_image 
     GL_ARB_texture_compression_rgtc 
     GL_ARB_provoking_vertex 
     GL_ARB_point_sprite 
     GL_EXT_copy_texture 
     GL_AMD_seamless_cubemap_per_texture 
     GL_ARB_seamless_cubemap_per_texture 
     GL_ARB_depth_texture 
     GL_EXT_texture_integer 
     GL_ARB_texture_buffer_object 
     GL_ARB_internalformat_query 
     GL_AMD_shader_trinary_minmax 
     GL_EXT_stencil_wrap 
     GL_ARB_shader_objects 
     GL_ARB_sample_shading 
     GL_ARB_texture_stencil8 
     GL_AMD_conservative_depth 
     GL_ARB_explicit_attrib_location 
     GL_ARB_texture_env_combine 
     GL_ARB_shader_viewport_layer_array 
     GL_ARB_blend_func_extended 
     GL_AMD_sample_positions 
     GL_EXT_texture 
     GL_ARB_shader_draw_parameters 
     GL_ARB_invalidate_subdata 
     GL_ARB_multisample 
     GL_ARB_half_float_vertex 
     GL_ARB_texture_env_dot3 
     GL_ARB_sparse_texture 
     GL_ARB_transform_feedback_overflow_query 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsAngleD3D11: true 
  isQtPreferAngle: true 
  Detected renderers: 
    (Supported) ANGLE (Microsoft, Microsoft Basic Render Driver Direct3D11 vs_5_0 ps_5_0, D3D11-6.2.19041.5794) (OpenGL ES 3.0.0 (ANGLE 2.1.0 git hash: f2280c0c5f93+krita_qt5)) 
    (Supported) Radeon RX 580 Series (4.6.0 Compatibility Profile Context 25.8.1.250617) 
    (Supported) ANGLE (AMD, Radeon RX 580 Series Direct3D11 vs_5_0 ps_5_0, D3D11-31.0.21923.11000) (OpenGL ES 3.0.0 (ANGLE 2.1.0 git hash: f2280c0c5f93+krita_qt5))  

useBufferInvalidation (config option): false


Hardware Information

  GPU Acceleration: desktop
  Memory: 98231 Mb
  Number of Cores: 24
  Swap Location: f:\TEMP\KRITA_TEMP\
  Built for: sse2
  Base instruction set: avx
  Supported instruction sets: avx sse4.2 sse4.1 ssse3 sse3 sse2 

Current Settings

  Current Swap Location: f:\TEMP\KRITA_TEMP\
  Current Swap Location writable: true
  Undo Enabled: true
  Undo Stack Limit: 800
  Use OpenGL: true
  Use OpenGL Texture Buffer: true
  Disable Vector Optimizations: false
  Disable AVX Optimizations: false
  Canvas State: OPENGL_SUCCESS
  Autosave Interval: 420
  Use Backup Files: true
  Number of Backups Kept: 6
  Backup File Suffix: ~
  Backup Location: Same Folder as the File
  Backup Location writable: false
  Resource Location: C:/Users/Krita5/AppData/Roaming/krita
  Use Win8 Pointer Input: false
  Use RightMiddleTabletButton Workaround: false
  Levels of Detail Enabled: false
  Use Zip64: true


Loaded Python Plugins
	ColdToWarmPalette
	CustomBrushCursor
	Krisenter
	LazyTextTool
	OpenDocumentsDocker
	PaletteGenerator
	PluginDevTools
	ShadeMaker
	ShapesAndLayers
	TenBrushSizesPlugin
	actuator
	boundify_offset
	bulibrushswitch
	bulicommander
	bulinotes
	canvas_expander
	compositionhelper
	cursor_zoomer_plugin
	directshortcuts
	dockerundercursor
	hclsliders
	henriks_krita_buttons
	imagine_board
	jpegexport
	krita_batch_manager
	label-box
	loomis_head
	new_layer_and_rename
	newspaper
	notes_board
	paint_select
	pigment_o
	pixel-borders
	project_pages
	python_reference
	quick_access_manager
	reference
	reference_tabs
	scratchpad
	selection_tools_docker
	shortcut_composer
	smallselectiondocker
	spritesheetgenerator
	style_sheet_loader
	tablet_tester
	tenbrushslots
	tfeasycolorsmap
	theme_creator
	timer_watch
	touchify-brush-options
	touchify-color-options
	touchify-compact-brush-toggler
	touchify-reference-tabs
	touchify
	touchify_pie_wheels
	wojtrybExtension
	zen_picker
	assignprofiledialog
	batch_exporter
	channels2layers
	colorspace
	comics_project_management_tools
	documenttools
	exportlayers
	filtermanager
	krita_script_starter
	lastdocumentsdocker
	mixer_slider_docker
	plugin_importer
	quick_settings_docker
	scripter
	tenbrushes
	tenscripts


Display Information
Number of screens: 2
	Screen: 0
		Name: \\.\DISPLAY1
		Depth: 32
		Scale: 1.7
		Physical DPI82.28
		Logical DPI96
		Physical Size: 698, 392
		Position: 0, 0
		Resolution in pixels: 2259x1271
		Manufacturer: Samsung Electric Company
		Model: Smart M70D
		Refresh Rate: 59
		Serial Number: H1AK500000
	Screen: 1
		Name: \\.\DISPLAY2
		Depth: 32
		Scale: 0.85
		Physical DPI110.732
		Logical DPI96
		Physical Size: 518, 324
		Position: -1920, 0
		Resolution in pixels: 2259x1412
		Manufacturer: DENON, Ltd.
		Model: DENON-AVAMP
		Refresh Rate: 60
		Serial Number: YV2E013191
Comment 2 Freya Lupen 2025-09-28 15:53:32 UTC
Git commit 93c283a335f3aaa2dfa33643e4a8e0739263af35 by Freya Lupen.
Committed on 28/09/2025 at 15:52.
Pushed by freyalupen into branch 'master'.

Fix off-by-1 in BrushHud Deform Modes combobox

The DeformModes enum starts at 1, the combobox indices start at 0,
account for this in the read-write of the combobox
which is shown in the On-Canvas Brush Editor.

M  +2    -2    plugins/paintops/deform/kis_deform_paintop_settings.cpp

https://invent.kde.org/graphics/krita/-/commit/93c283a335f3aaa2dfa33643e4a8e0739263af35
Comment 3 Freya Lupen 2025-09-28 15:54:34 UTC
Git commit 2197e56eec118564fa025a72a89e3646c58556aa by Freya Lupen.
Committed on 28/09/2025 at 15:54.
Pushed by freyalupen into branch 'krita/5.2'.

Fix off-by-1 in BrushHud Deform Modes combobox

The DeformModes enum starts at 1, the combobox indices start at 0,
account for this in the read-write of the combobox
which is shown in the On-Canvas Brush Editor.


(cherry picked from commit 93c283a335f3aaa2dfa33643e4a8e0739263af35)

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

M  +2    -2    plugins/paintops/deform/kis_deform_paintop_settings.cpp

https://invent.kde.org/graphics/krita/-/commit/2197e56eec118564fa025a72a89e3646c58556aa