diff --git a/draggableviews.module b/draggableviews.module
index e2a08e1..51149cc 100644
--- a/draggableviews.module
+++ b/draggableviews.module
@@ -17,7 +17,7 @@ function draggableviews_views_data_alter(&$data) {
       'id' => 'numeric',
     ),
     'sort' => array(
-      'id' => 'standard',
+      'id' => 'draggableviews_sort',
     ),
     'filter' => array(
       'help' => t('Filter by the draggableviews weight value (Native handler only).'),
diff --git a/src/Plugin/views/sort/DraggableViewsSort.php b/src/Plugin/views/sort/DraggableViewsSort.php
new file mode 100644
index 0000000..2cb5e16
--- /dev/null
+++ b/src/Plugin/views/sort/DraggableViewsSort.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Drupal\draggableviews\Plugin\views\sort;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\views\Plugin\views\sort\Standard;
+use Drupal\views\Views;
+
+/**
+ * Allow to select the source's view for the draggableviews sort handler
+ *
+ * @ingroup views_sort_handlers
+ *
+ * @ViewsSort("draggableviews_sort")
+ */
+class DraggableViewsSort extends Standard {
+
+  protected function defineOptions() {
+    $options = parent::defineOptions();
+    $options['source'] = ['default' => $this->view->id() . '|' ];
+    return $options;
+  }
+
+  /**
+   * Shortcut to display the value form.
+   */
+  protected function showSortForm(&$form, FormStateInterface $form_state) {
+    parent::showSortForm($form, $form_state);
+
+    $views = Views::getEnabledViews();
+    $draggableviews = ['' => t('Please select')];
+    $master = FALSE;
+
+
+    foreach ($this->view->displayHandlers as $display) {
+      /** @var \Drupal\views\Plugin\views\display\DisplayPluginInterface $display */
+      if ($display->display['id'] == 'default' && array_key_exists('draggableviews', $display->options['fields'])) {
+        $master = TRUE;
+      }
+      if ($display->display['id'] != 'default' && array_key_exists('draggableviews', $display->options['fields'])) {
+        $draggableviews[$this->view->id() . '|' . $display->display['id']] = $this->t('@view (@display)', ['@view' => $this->t('Current view'), '@display' => $display->display['display_title']]);
+      }
+      if ($master && empty($display->options['fields'])) {
+        $draggableviews[$this->view->id() . '|' . $display->display['id']] = $this->t('@view (@display)', ['@view' => $this->t('Current view'), '@display' => $display->display['display_title']]);
+      }
+    }
+
+    $draggableviews_config = [];
+    foreach ($views as $view) {
+      if ($view->id() == $this->view->id()) {
+        continue;
+      }
+
+      $config = \Drupal::config('views.view.' . $view->id());
+      $rawData = $config->getRawData();
+
+      $master = FALSE;
+      foreach ($rawData['display'] as $display_key => $display) {
+        if ($display_key == 'default' && array_key_exists('draggableviews', $display['display_options']['fields'])) {
+          $master = TRUE;
+        }
+        if ($display_key != 'default' && array_key_exists('draggableviews', $display['display_options']['fields'])) {
+          $draggableviews_config[$view->id() . '|' . $display_key] = $this->t('@view (@display)', ['@view' => $view->label(), '@display' => $display['display_title']]);
+        }
+        if ($master && empty($display['display_options']['fields'])) {
+          $draggableviews_config[$view->id() . '|' . $display_key] = $this->t('@view (@display)', ['@view' => $view->label(), '@display' => $display['display_title']]);
+        }
+      }
+    }
+
+    asort($draggableviews_config);
+
+    $form['source'] = array(
+      '#type' => 'select',
+      '#title' => $this->t('Draggableviews source'),
+      '#options' => $draggableviews + $draggableviews_config,
+      '#default_value' => $this->options['source'],
+      '#required' => TRUE,
+      '#description' => $this->t('Only views and displays with a draggableview field are displayed here.'),
+    );
+
+  }
+
+  public function query() {
+    parent::query();
+    $table = $this->query->getTableInfo($this->tableAlias);
+    if ($table) {
+      list($view_name, $view_display) = explode('|', $this->options['source']);
+      $table['join']->extra = [['field' => 'view_name', 'value' => $view_name]];
+      $table['join']->extra[] = ['field' => 'view_display', 'value' => $view_display];
+    }
+  }
+}
