darktable-org / darktable

darktable is an open source photography workflow application and raw developer
https://www.darktable.org
GNU General Public License v3.0
9.52k stars 1.12k forks source link

The Map page #16275

Open brucewilliamsphotography opened 7 months ago

brucewilliamsphotography commented 7 months ago

Describe the bug

Hi devs, Not sure who looks after the code for the Maps page in darktable, but the manual needs to be updated. When I did my original video on the Maps feature, you could use ctrl+alt+left click to select an initial image in the filmstrip, and shift+click to select a final image (and thus, selecting all images in between). That functionality no longer works. After asking for confirmation on pixls.us, user PD1 told me that you have to select the images in the lighttable view first, and then switch to the Map age. That is not how it used to be, and is a ridiculous expectation. You SHOULD be able to make selections, and de-select images, from the filmstrip below the Map page. At the moment, it doesn't appear that a selection can be made from the filmstrip, and to de-select, you have to ctrl+click EACH INDIVIDUAL IMAGE! That's crazy. If I've dragged 100 images onto the map, I either have to manually de-select them all (no thank you) or switch back to the lighttable view. When I started writing this, I thought it was just the manual that needed updating, but now I'm thinking that the functionality of the Map page has been broken somewhere along the line. Keen to hear your thoughts.

Steps to reproduce

Try selecting images from the filmstrip in the Map page.

Expected behavior

No response

Logfile | Screenshot | Screencast

No response

Commit

No response

Where did you obtain darktable from?

GitHub nightly

darktable version

4.7.0+98~gbce83d51a9

What OS are you using?

Linux

What is the version of your OS?

mx linux 23.2, xfce v4.18.1

Describe your system?

[CODE]System: Kernel: 6.1.0-17-amd64 [6.1.69-1] arch: x86_64 bits: 64 compiler: gcc v: 12.2.0 parameters: BOOT_IMAGE=/boot/vmlinuz-6.1.0-17-amd64 root=UUID= ro quiet splash init=/lib/systemd/systemd Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 info: xfce4-panel wm: xfwm v: 4.18.0 vt: 7 dm: LightDM v: 1.26.0 Distro: MX-23.2_x64 Libretto October 15 2023 base: Debian GNU/Linux 12 (bookworm) Machine: Type: Desktop System: Micro-Star product: MS-7B79 v: 2.0 serial: Mobo: Micro-Star model: X470 GAMING PLUS (MS-7B79) v: 2.0 serial: UEFI: American Megatrends v: A.B0 date: 07/04/2019 Battery: Device-1: hidpp_battery_0 model: Logitech Wireless Mouse M325 serial: charge: 100% (should be ignored) rechargeable: yes status: discharging CPU: Info: model: AMD Ryzen 7 2700X bits: 64 type: MT MCP arch: Zen+ gen: 2 level: v3 note: check built: 2018-21 process: GF 12nm family: 0x17 (23) model-id: 8 stepping: 2 microcode: 0x800820D Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache: L1: 768 KiB desc: d-8x32 KiB; i-8x64 KiB L2: 4 MiB desc: 8x512 KiB L3: 16 MiB desc: 2x8 MiB Speed (MHz): avg: 2128 high: 2200 min/max: 2200/3700 boost: enabled scaling: driver: acpi-cpufreq governor: ondemand cores: 1: 1891 2: 2035 3: 1886 4: 2200 5: 2032 6: 2016 7: 2200 8: 2200 9: 2200 10: 2200 11: 2200 12: 2200 13: 2200 14: 2200 15: 2200 16: 2200 bogomips: 118384 Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm Vulnerabilities: Type: gather_data_sampling status: Not affected Type: itlb_multihit status: Not affected Type: l1tf status: Not affected Type: mds status: Not affected Type: meltdown status: Not affected Type: mmio_stale_data status: Not affected Type: retbleed mitigation: untrained return thunk; SMT vulnerable Type: spec_rstack_overflow mitigation: safe RET Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via prctl Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, STIBP: disabled, RSB filling, PBRSB-eIBRS: Not affected Type: srbds status: Not affected Type: tsx_async_abort status: Not affected Graphics: Device-1: NVIDIA GA104 [GeForce RTX 3070] vendor: ASUSTeK driver: nvidia v: 525.147.05 non-free: 530.xx+ status: current (as of 2023-03) arch: Ampere code: GAxxx process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 3 speed: 8 GT/s lanes: 16 link-max: gen: 4 speed: 16 GT/s bus-ID: 27:00.0 chip-ID: 10de:2484 class-ID: 0300 Display: x11 server: X.Org v: 1.21.1.7 compositor: xfwm v: 4.18.0 driver: X: loaded: nvidia unloaded: fbdev,modesetting,nouveau,vesa alternate: nv gpu: nvidia display-ID: :0.0 screens: 1 Screen-1: 0 s-res: 7680x2160 s-dpi: 96 s-size: 2032x572mm (80.00x22.52") s-diag: 2111mm (83.11") Monitor-1: HDMI-0 pos: primary,left res: 3840x2160 hz: 60 dpi: 163 size: 597x336mm (23.5x13.23") diag: 685mm (26.97") modes: N/A Monitor-2: HDMI-1 pos: right res: 3840x2160 hz: 60 dpi: 187 size: 521x293mm (20.51x11.54") diag: 598mm (23.53") modes: N/A API: OpenGL v: 4.6.0 NVIDIA 525.147.05 renderer: NVIDIA GeForce RTX 3070/PCIe/SSE2 direct-render: Yes Audio: Device-1: NVIDIA GA104 High Definition Audio vendor: ASUSTeK driver: snd_hda_intel v: kernel bus-ID: 3-2:3 chip-ID: 1235:8201 pcie: gen: 3 class-ID: 0103 speed: 8 GT/s serial: lanes: 16 link-max: gen: 4 speed: 16 GT/s bus-ID: 27:00.1 chip-ID: 10de:228b class-ID: 0403 Device-2: Focusrite-Novation Scarlett 18i20 USB type: USB driver: snd-usb-audio API: ALSA v: k6.1.0-17-amd64 status: kernel-api tools: alsamixer,amixer Server-1: PipeWire v: 1.0.0 status: active with: 1: pipewire-pulse status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Micro-Star MSI driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 22:00.0 chip-ID: 10ec:8168 class-ID: 0200 IF: eth0 state: up speed: 1000 Mbps duplex: full mac: Drives: Local Storage: total: 6.94 TiB used: 4.77 TiB (68.7%) SMART Message: Unable to run smartctl. Root privileges required. ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: MZVLW256HEHP-000H1 size: 238.47 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: rev: CXB73H1Q temp: 41.9 C scheme: GPT ID-2: /dev/sda maj-min: 8:0 vendor: Seagate model: ST4000DM004-2CV104 size: 3.64 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 5425 serial: rev: 0001 scheme: GPT ID-3: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 840 EVO 120GB size: 111.79 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s type: SSD serial: rev: BB6Q scheme: GPT ID-4: /dev/sdc maj-min: 8:32 vendor: Seagate model: ST3000DM008-2DM166 size: 2.73 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 7200 serial: rev: CC26 scheme: GPT ID-5: /dev/sdd maj-min: 8:48 vendor: Samsung model: SSD 850 EVO 250GB size: 232.89 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s type: SSD serial: rev: 2B6Q scheme: GPT Partition: ID-1: / raw-size: 112.3 GiB size: 112.3 GiB (100.00%) used: 7.19 GiB (6.4%) fs: btrfs dev: /dev/nvme0n1p6 maj-min: 259:6 ID-2: /boot/efi raw-size: 473 MiB size: 472 MiB (99.80%) used: 592 KiB (0.1%) fs: vfat dev: /dev/sdd1 maj-min: 8:49 ID-3: /home raw-size: 232.42 GiB size: 232.42 GiB (100.00%) used: 93.49 GiB (40.2%) fs: btrfs dev: /dev/sdd2 maj-min: 8:50 Swap: Kernel: swappiness: 15 (default 60) cache-pressure: 100 (default) ID-1: swap-1 type: partition size: 8 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/sda2 maj-min: 8:2 Sensors: System Temperatures: cpu: 47.2 C mobo: N/A gpu: nvidia temp: 57 C Fan Speeds (RPM): N/A gpu: nvidia fan: 0% Repos: Packages: 2366 pm: dpkg pkgs: 2359 libs: 1258 tools: apt,apt-get,aptitude,nala,synaptic pm: rpm pkgs: 0 pm: appimage pkgs: 0 pm: flatpak pkgs: 0 pm: snap pkgs: 7 No active apt repos in: /etc/apt/sources.list Active apt repos in: /etc/apt/sources.list.d/debian-stable-updates.list 1: deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware Active apt repos in: /etc/apt/sources.list.d/debian.list 1: deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware 2: deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware Active apt repos in: /etc/apt/sources.list.d/mx.list 1: deb http://mx.debian.nz/mx/repo/ bookworm main non-free Info: Processes: 390 Uptime: 2h 31m wakeups: 6 Memory: 31.29 GiB used: 8.75 GiB (28.0%) Init: systemd v: 252 target: graphical (5) default: graphical tool: systemctl Compilers: gcc: 12.2.0 alt: 12 Client: shell wrapper v: 5.2.15-release inxi: 3.3.26 Boot Mode: UEFI[/CODE]

Are you using OpenCL GPU in darktable?

Yes

If yes, what is the GPU card and driver?

NVidia GeForce RTX3070, driver version 525.147.05

Please provide additional context if applicable. You can attach files too, but might need to rename to .txt or .zip

Have not yet tried with another build.

ralfbrown commented 7 months ago

Ctrl-Click + Shift-Click on the filmstrip works just fine in both 4.6.0 and master. Note that there's no Alt for the first image selected (Ctrl-Alt-Click does nothing).

To deselect all, use Ctrl-Shift-A.

zisoft commented 7 months ago

What was the exact reason to set DT_THUMBNAIL_SEL_MODE_MOD_ONLY for the filmstrip?

If I comment out line 2588 I can use the filmstrip in a much more intuitive way: Single click selects the first image, shift+click selects the last image of a range. Single click again on any image selects that image and deselects the range. Exactly as in lighttable.

https://github.com/darktable-org/darktable/blob/986da0340c534c2f34540acc9dd868c2e4b0cdf9/src/dtgtk/thumbtable.c#L2586-L2590

With DT_THUMBNAIL_SEL_MODE_MOD_ONLY I need to remember strange key combinations. Even worse: On Mac I need to use Ctrl-Click to select the first image, to deselect all I need to use CMD+shift+A.

TurboGit commented 7 months ago

I agree with @zisoft, I already discussed that with @AlicVB but I have never been comfortable with the behavior of the filmstrip. It has even been harmful one or two times because the selection was kept after a single click and I had pasted a change to all the collection...

@AlicVB do you remember why this is done so?

ralfbrown commented 7 months ago

I suspect it has something to do with the behavior in darkroom view, where a simple click switches editing to the clicked image, so you need to use Ctrl-Click to (de)select an image on the filmstrip.

github-actions[bot] commented 4 months ago

This issue has been marked as stale due to inactivity for the last 60 days. It will be automatically closed in 300 days if no update occurs. Please check if the master branch has fixed it and report again or close the issue.

ralfbrown commented 2 months ago

Once mouse-click handling is moved to the GtkGesture API (as started in #16919), we should be able to go back to using double-click to switch the active image in darkroom view. Right now, using double-click would wipe out the current selection since the first click would reset the selection. But it looks like the gesture API allows you to have entirely separate handlers for single and double clicks, with the downside being that single clicks won't get handled until the double-click timeout expires (much like our shortcut system when double/triple presses are defined for a key).

github-actions[bot] commented 3 weeks ago

This issue has been marked as stale due to inactivity for the last 60 days. It will be automatically closed in 300 days if no update occurs. Please check if the master branch has fixed it and report again or close the issue.