Gtk.SelectionMode.MULTIPLE unselecting does not work

I’m trying to use Flowbox with multiple selection mode. Selection works but I can’t unselect the selection. I couldn’t find anything about unselecting. Any ideas?

import gi
import sys

gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")

from gi.repository import Gtk, Adw, Gio
import picture_finder

class MyApp(Adw.Application):
    def __init__(self, application_id="my_app", flags=Gio.ApplicationFlags.DEFAULT_FLAGS, version="1.0"):
        super().__init__(application_id=application_id, flags=flags)

    def do_activate(self) -> None:
        win = self.props.active_window
        if not win:
            win = MyWindow(application=self)
        win.present()

class MyWindow(Adw.ApplicationWindow):
    __gtype_name__ = "MyWindow"

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.pictures = []
        self.set_title("Adw Example")
        self.set_default_size(600, 400)

        self.header_bar = Adw.HeaderBar()
        self.toolbar_view = Adw.ToolbarView()
        # Use Gtk.FlowBox for selectable items
        self.flow_box = Gtk.FlowBox()
        self.flow_box.set_valign(Gtk.Align.START)
        self.flow_box.set_max_children_per_line(3)
        self.flow_box.set_selection_mode(Gtk.SelectionMode.MULTIPLE)
        self.flow_box.connect("selected-children-changed", self.on_flowbox_selection_changed)

        # Primary menu setup
        primary_menu = Gio.Menu()
        primary_menu.append("Preferences", "app.preferences")
        primary_menu_button = Gtk.MenuButton(primary=True, icon_name="open-menu-symbolic")
        primary_menu_button.set_menu_model(primary_menu)
        self.header_bar.pack_end(primary_menu_button)

        # Navigation split view setup
        self.nav_split_view = Adw.NavigationSplitView()

        overlay_content = Adw.NavigationPage()
        overlay_content.set_title("Overlay")

        overlay_sidebar = Adw.NavigationPage()
        overlay_sidebar.set_title("Sidebar")
        overlay_sidebar.set_child(Gtk.Label(label="Sidebar Content"))

        self.nav_split_view.set_content(overlay_content)
        self.nav_split_view.set_sidebar(overlay_sidebar)

        # Action bar setup
        self.action_bar = Gtk.ActionBar()
        action_bar_button = Gtk.Button(label="Select Folder")
        action_bar_button.connect("clicked", self.on_file_dialog_button_clicked)
        self.action_bar.pack_start(action_bar_button)

        # Toolbar view setup
        self.toolbar_view.add_top_bar(self.header_bar)
        self.toolbar_view.set_content(self.nav_split_view)
        self.toolbar_view.add_bottom_bar(self.action_bar)

        # Add scrolled window for the flow box
        scrolled_window = Gtk.ScrolledWindow()
        scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scrolled_window.set_child(self.flow_box)

        # Set content
        overlay_content.set_child(scrolled_window)
        self.set_content(self.toolbar_view)

    def on_file_dialog_button_clicked(self, button):
        file_dialog = Gtk.FileDialog()

        def on_file_dialog_response(dialog, result):
            try:
                file = dialog.select_folder_finish(result)
                print(file.get_path())
                if file:
                    self.pictures = picture_finder.PictureLister(file.get_path()).get_picture_list()
                    for pic in self.pictures:
                        image = Gtk.Image.new_from_file(pic)
                        image.set_pixel_size(300)
                        self.flow_box.append(image)
            except Exception as e:
                print(f"Error: {e}")

        file_dialog.select_folder(callback=on_file_dialog_response)

    def on_flowbox_selection_changed(self, flowbox):
        # Get all selected children
        selected_children = flowbox.get_selected_children()
        if selected_children:
            for child in selected_children:
                index = child.get_index()
                print(f"Selected image: {self.pictures[index]}")
        else:
            print("No images selected")

if __name__ == "__main__":
    app = MyApp()
    app.run(sys.argv)