                                           :column-display (:column-display props)
                                           :table-behavior (:behavior props)})
             start-column-drag
-            (fn [{:keys [e width index]}]
-              (swap! locals assoc :start-mouse-x (.-clientX e) :start-width width)
+            (fn [{:keys [e index]}]
+              (swap! locals assoc
+                     :next-column-index (when (.-shiftKey e)
+                                          (some->> (map vector (range) joined-columns)
+                                                   (drop (inc index))
+                                                   (filter (comp :resizable? val))
+                                                   first key))
+                     :mouse-x (.-clientX e))
               (swap! state assoc
                      :dragging? true :drag-column index
                      :saved-user-select-state (common/disable-text-selection)))



(def ^:private column-drag-margin 11)


(defn- header [{:keys [joined-columns sort-column sort-order set-sort style

      (when (:dragging? @state)
        (let [{:keys [update-column-display column-display]} props
              {:keys [drag-column]} @state
              {:keys [next-column-index mouse-x]} @locals
              new-x (.-clientX e)
              delta-x (- new-x mouse-x)
              new-this-width (+ (get-in column-display [drag-column :width]) delta-x)
              new-next-width (when next-column-index
                               (- (get-in column-display [next-column-index :width]) delta-x))]
          (when (and (not (zero? delta-x))
                     (> new-this-width minimum-column-size)
                     (or (not next-column-index)
                         (> new-next-width minimum-column-size)))
            (swap! locals assoc :mouse-x new-x)
            (if next-column-index
              (update-column-display (-> column-display
                                         (assoc-in [drag-column :width] new-this-width)
                                         (assoc-in [next-column-index :width] new-next-width)))
              (update-column-display (assoc-in column-display [drag-column :width] new-this-width)))))))}
   (utils/with-window-listeners
    {"mousemove"
     (fn [{:keys [this]} e]
