// This file is part of Desktop App Toolkit, // a set of libraries for developing nice desktop applications. // // For license and copyright information please follow this link: // https://github.com/desktop-app/legal/blob/master/LEGAL // #pragma once #include "ui/rp_widget.h" #include "base/object_ptr.h" #include #include namespace Ui { class IconButton; class PlainShadow; namespace Platform { enum class HitTestResult { None = 0, Client, SysButton, Caption, Top, TopRight, Right, BottomRight, Bottom, BottomLeft, Left, TopLeft, }; class TitleWidget : public RpWidget { public: explicit TitleWidget(not_null parent); void setText(const QString &text); HitTestResult hitTest(QPoint point) const; protected: void paintEvent(QPaintEvent *e) override; void resizeEvent(QResizeEvent *e) override; private: not_null window() const; void init(); void handleWindowStateChanged(Qt::WindowState state = Qt::WindowNoState); void updateControlsVisibility(); void updateButtonsState(); void updateControlsPosition(); object_ptr _minimize; object_ptr _maximizeRestore; object_ptr _close; object_ptr _shadow; bool _maximizedState = false; bool _activeState = false; }; } // namespace Platform } // namespace Ui