37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
// SPDX-FileCopyrightText: 2024 Contributors to Chatterino <https://chatterino.com>
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#pragma once
|
|
|
|
#include <QProxyStyle>
|
|
|
|
class QTableView;
|
|
|
|
namespace chatterino {
|
|
|
|
/// @brief A custom style for drag operations of rows on tables
|
|
///
|
|
/// This style overwrites how `PE_IndicatorItemViewItemDrop`, the drop
|
|
/// indicator of item-views, is drawn. It's intended to be used on QTableViews
|
|
/// where entire rows are moved (not individual cells). The indicator is shown
|
|
/// as a line at the position where the dragged item should be inserted. If no
|
|
/// such position exists, a red border is drawn around the viewport.
|
|
class TableRowDragStyle : public QProxyStyle
|
|
{
|
|
public:
|
|
/// Applies the style to @a view
|
|
static void applyTo(QTableView *view);
|
|
|
|
void drawPrimitive(QStyle::PrimitiveElement element,
|
|
const QStyleOption *option, QPainter *painter,
|
|
const QWidget *widget = nullptr) const override;
|
|
|
|
private:
|
|
/// @param name The style name to emulate.
|
|
/// This should be set to `style()->name()`.
|
|
TableRowDragStyle(const QString &name);
|
|
};
|
|
|
|
} // namespace chatterino
|