diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js
index e31a1b03ca6afd68f61729f768d335ec45167e05..24fc256e80556dd2a6780e3a3b2624743c65aa59 100644
--- a/packages/file-handling/src/nextcloud-file-picker.js
+++ b/packages/file-handling/src/nextcloud-file-picker.js
@@ -146,6 +146,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
     disconnectedCallback() {
         window.removeEventListener('message', this._onReceiveWindowMessage);
         window.removeEventListener('resize', this.boundRefreshOnWindowSizeChange);
+        this.tabulatorTable.off("dataProcessed");
         super.disconnectedCallback();
     }
 
@@ -177,19 +178,20 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
             this.tabulatorTable = new Tabulator(this._('#directory-content-table'), {
                 layout: 'fitColumns',
                 selectable: this.maxSelectedItems,
-                selectableRangeMode: 'drag',
                 placeholder: this.directoriesOnly
                     ? i18n.t('nextcloud-file-picker.no-data')
                     : i18n.t('nextcloud-file-picker.no-data-type'),
                 responsiveLayout: 'collapse',
                 responsiveLayoutCollapseStartOpen: false,
-                resizableColumns: false,
+                columnDefaults: {
+                    vertAlign: 'middle',
+                    hozAlign: 'center',
+                    resizable: false,
+                },
                 columns: [
                     {
                         width: 32,
                         minWidth: 32,
-                        align: 'center',
-                        resizable: false,
                         headerSort: false,
                         formatter: 'responsiveCollapse',
                     },
@@ -200,8 +202,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
                             '<span class="checkmark" id="select_all_checkmark"></span>' +
                             '</label>',
                         field: 'type',
-                        align: 'center',
-                        headerSort: false,
                         width: 50,
                         responsive: 1,
                         formatter: (cell, formatterParams, onRendered) => {
@@ -303,124 +303,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
                         row.getElement().classList.remove('tabulator-selectable');
                     }
                 },
-                rowSelectionChanged: (data, rows) => {
-                    if (!this.disableRowClick) {
-                        if (data.length > 0 && this.directoriesOnly) {
-                            this.folderIsSelected = i18n.t('nextcloud-file-picker.load-to-folder');
-                        } else {
-                            this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder');
-                        }
-                        if (
-                            !this.directoriesOnly &&
-                            this.tabulatorTable &&
-                            this.tabulatorTable
-                                .getSelectedRows()
-                                .filter(
-                                    (row) =>
-                                        row.getData().type != 'directory' &&
-                                        this.checkFileType(row.getData(), this.allowedMimeTypes)
-                                ).length > 0
-                        ) {
-                            this.selectBtnDisabled = false;
-                        } else {
-                            this.selectBtnDisabled = true;
-                        }
-                        if (this._('#select_all_checkmark')) {
-                            this._('#select_all_checkmark').title = this.checkAllSelected()
-                                ? i18n.t('clipboard.select-nothing')
-                                : i18n.t('clipboard.select-all');
-                        }
-                        this.requestUpdate();
-                    }
-                },
-                rowClick: (e, row) => {
-                    const data = row.getData();
-                    if (
-                        !row.getElement().classList.contains('no-select') &&
-                        !this.disableRowClick
-                    ) {
-                        if (this.directoriesOnly) {
-                            // comment out if you want to navigate through folders with double click
-                            const data = row.getData();
-                            this.directoryClicked(e, data);
-                            this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder');
-                        } else {
-                            switch (data.type) {
-                                case 'directory':
-                                    this.directoryClicked(e, data);
-                                    break;
-                                case 'file':
-                                    if (
-                                        this.tabulatorTable !== null &&
-                                        this.tabulatorTable.getSelectedRows().length ===
-                                            this.tabulatorTable
-                                                .getRows()
-                                                .filter(
-                                                    (row) =>
-                                                        row.getData().type != 'directory' &&
-                                                        this.checkFileType(
-                                                            row.getData(),
-                                                            this.allowedMimeTypes
-                                                        )
-                                                ).length
-                                    ) {
-                                        this._('#select_all').checked = true;
-                                    } else {
-                                        this._('#select_all').checked = false;
-                                    }
-                                    break;
-                            }
-                        }
-                    } else {
-                        row.deselect();
-                    }
-                },
-                rowDblClick: (e, row) => {
-                    // comment this in for double click directory change
-                    /* if (this.directoriesOnly) {
-                         const data = row.getData();
-                         this.directoryClicked(e, data);
-                         this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder');
-                     }*/
-                },
-                rowAdded: (row) => {
-                    // console.log('row added');
-                    if (!this.disableRowClick) {
-                        row.getElement().classList.toggle('addRowAnimation');
-                    }
-                },
-                dataLoaded: () => {
-                    if (this.tabulatorTable !== null) {
-                        const that = this;
-                        setTimeout(function () {
-                            if (that._('.tabulator-responsive-collapse-toggle-open')) {
-                                that._a('.tabulator-responsive-collapse-toggle-open').forEach(
-                                    (element) =>
-                                        element.addEventListener(
-                                            'click',
-                                            that.toggleCollapse.bind(that)
-                                        )
-                                );
-                            }
-
-                            if (that._('.tabulator-responsive-collapse-toggle-close')) {
-                                that._a('.tabulator-responsive-collapse-toggle-close').forEach(
-                                    (element) =>
-                                        element.addEventListener(
-                                            'click',
-                                            that.toggleCollapse.bind(that)
-                                        )
-                                );
-                            }
-                        }, 0);
-                    }
-                },
             });
 
-            // Strg + click select mode on desktop
-            /*if (this.tabulatorTable.browserMobile === false) {
-                this.tabulatorTable.options.selectableRangeMode = "click";
-            }*/
+            this.tabulatorTable.on("rowSelectionChanged", this.rowSelectionChangedFunction.bind(this));
+            this.tabulatorTable.on("rowClick", this.rowClickFunction.bind(this));
+            this.tabulatorTable.on("rowAdded", this.rowAddedFunction.bind(this));
+            this.tabulatorTable.on("dataLoaded", this.dataLoadedFunction.bind(this));
+
 
             if (
                 typeof this.allowedMimeTypes !== 'undefined' &&
@@ -429,19 +318,118 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
             ) {
                 this.tabulatorTable.setFilter(this.checkFileType, this.allowedMimeTypes);
             }
-            // comment this in to show only directories in filesink
-            /*
-            if (typeof this.directoriesOnly !== 'undefined' && this.directoriesOnly) {
-                this.tabulatorTable.setFilter([
-                    {field:"type", type:"=", value:"directory"},
-                ]);
-            }
-            */
 
             window.addEventListener('resize', this.boundRefreshOnWindowSizeChange);
         });
     }
 
+    rowSelectionChangedFunction(){
+        if (!this.disableRowClick) {
+            if (data.length > 0 && this.directoriesOnly) {
+                this.folderIsSelected = i18n.t('nextcloud-file-picker.load-to-folder');
+            } else {
+                this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder');
+            }
+            if (
+                !this.directoriesOnly &&
+                this.tabulatorTable &&
+                this.tabulatorTable
+                    .getSelectedRows()
+                    .filter(
+                        (row) =>
+                            row.getData().type != 'directory' &&
+                            this.checkFileType(row.getData(), this.allowedMimeTypes)
+                    ).length > 0
+            ) {
+                this.selectBtnDisabled = false;
+            } else {
+                this.selectBtnDisabled = true;
+            }
+            if (this._('#select_all_checkmark')) {
+                this._('#select_all_checkmark').title = this.checkAllSelected()
+                    ? i18n.t('clipboard.select-nothing')
+                    : i18n.t('clipboard.select-all');
+            }
+            this.requestUpdate();
+        }
+    }
+
+    rowClick() {
+        const data = row.getData();
+        if (
+            !row.getElement().classList.contains('no-select') &&
+            !this.disableRowClick
+        ) {
+            if (this.directoriesOnly) {
+                // comment out if you want to navigate through folders with double click
+                const data = row.getData();
+                this.directoryClicked(e, data);
+                this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder');
+            } else {
+                switch (data.type) {
+                    case 'directory':
+                        this.directoryClicked(e, data);
+                        break;
+                    case 'file':
+                        if (
+                            this.tabulatorTable !== null &&
+                            this.tabulatorTable.getSelectedRows().length ===
+                            this.tabulatorTable
+                                .getRows()
+                                .filter(
+                                    (row) =>
+                                        row.getData().type != 'directory' &&
+                                        this.checkFileType(
+                                            row.getData(),
+                                            this.allowedMimeTypes
+                                        )
+                                ).length
+                        ) {
+                            this._('#select_all').checked = true;
+                        } else {
+                            this._('#select_all').checked = false;
+                        }
+                        break;
+                }
+            }
+        } else {
+            row.deselect();
+        }
+    }
+
+    rowAddedFunction(){
+        if (!this.disableRowClick) {
+            row.getElement().classList.toggle('addRowAnimation');
+        }
+    }
+
+    dataLoadedFunction() {
+        if (this.tabulatorTable !== null) {
+            const that = this;
+            setTimeout(function () {
+                if (that._('.tabulator-responsive-collapse-toggle-open')) {
+                    that._a('.tabulator-responsive-collapse-toggle-open').forEach(
+                        (element) =>
+                            element.addEventListener(
+                                'click',
+                                that.toggleCollapse.bind(that)
+                            )
+                    );
+                }
+
+                if (that._('.tabulator-responsive-collapse-toggle-close')) {
+                    that._a('.tabulator-responsive-collapse-toggle-close').forEach(
+                        (element) =>
+                            element.addEventListener(
+                                'click',
+                                that.toggleCollapse.bind(that)
+                            )
+                    );
+                }
+            }, 0);
+        }
+    }
+
     /**
      *  Request a re-render every time isLoggedIn()/isLoading() changes
      */