diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index b2147a26..5f67d446 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -731,7 +731,7 @@ void MainWindowViewer::createToolBars() // attach toolbar - comicToolBar->attachToWindow(this->windowHandle()); + comicToolBar->attachToWindow(this); #endif } diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index bdb3006f..f389372b 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -922,9 +922,6 @@ void LibraryWindow::createToolBars() libraryToolBar->addSpace(10); libraryToolBar->addAction(toggleComicsViewAction); -#ifndef Q_OS_MAC - libraryToolBar->addAction(toggleFullScreenAction); -#endif libraryToolBar->addStretch(); @@ -935,7 +932,7 @@ void LibraryWindow::createToolBars() // libraryToolBar->setMovable(false); - libraryToolBar->attachToWindow(this->windowHandle()); + libraryToolBar->attachToWindow(this); #else libraryToolBar->backButton->setDefaultAction(backAction); diff --git a/YACReaderLibrary/yacreader_main_toolbar.cpp b/YACReaderLibrary/yacreader_main_toolbar.cpp index a6732193..7ddc2997 100644 --- a/YACReaderLibrary/yacreader_main_toolbar.cpp +++ b/YACReaderLibrary/yacreader_main_toolbar.cpp @@ -68,8 +68,10 @@ YACReaderMainToolBar::YACReaderMainToolBar(QWidget *parent) mainLayout->addStretch(); mainLayout->addWidget(toggleComicsViewButton, 0, Qt::AlignVCenter); +#ifndef Q_OS_MAC addWideDivider(); mainLayout->addWidget(fullscreenButton, 0, Qt::AlignVCenter); +#endif setLayout(mainLayout); diff --git a/custom_widgets/yacreader_macosx_toolbar.h b/custom_widgets/yacreader_macosx_toolbar.h index 35b69f18..7ee40cca 100644 --- a/custom_widgets/yacreader_macosx_toolbar.h +++ b/custom_widgets/yacreader_macosx_toolbar.h @@ -1,8 +1,11 @@ #ifndef YACREADER_MACOSX_TOOLBAR_H #define YACREADER_MACOSX_TOOLBAR_H +#include +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include #include +#include #include "yacreader_global.h" @@ -70,6 +73,8 @@ public: // convenience method for switching the icon of the view selector void updateViewSelectorIcon(const QIcon &icon); + void attachToWindow(QMainWindow *window); + signals: public slots: @@ -80,5 +85,48 @@ protected: bool yosemite; QMacToolBarItem *viewSelector; }; +#else + +#ifdef YACREADER_LIBRARY + +#include "yacreader_main_toolbar.h" +#include "yacreader_search_line_edit.h" +#include + +class YACReaderMacOSXSearchLineEdit : public YACReaderSearchLineEdit +{ +}; + +class YACReaderMacOSXToolbar : public YACReaderMainToolBar +{ +public: + explicit YACReaderMacOSXToolbar(QWidget *parent = 0); + QSize sizeHint() const override; + void addAction(QAction *action); + void addSpace(int size); // size in points + void addStretch(); + YACReaderMacOSXSearchLineEdit *addSearchEdit(); + void updateViewSelectorIcon(const QIcon &icon); + void attachToWindow(QMainWindow *window); + +private: + void paintEvent(QPaintEvent *) override; +}; + +#else + +#include + +class YACReaderMacOSXToolbar : public QToolBar +{ +public: + explicit YACReaderMacOSXToolbar(QWidget *parent = 0); + void attachToWindow(QMainWindow *window); + void addStretch(); +}; + +#endif + +#endif #endif // YACREADER_MACOSX_TOOLBAR_H diff --git a/custom_widgets/yacreader_macosx_toolbar.mm b/custom_widgets/yacreader_macosx_toolbar.mm index e5008868..7f3d6137 100644 --- a/custom_widgets/yacreader_macosx_toolbar.mm +++ b/custom_widgets/yacreader_macosx_toolbar.mm @@ -1,5 +1,10 @@ #include "yacreader_macosx_toolbar.h" +#include "QtWidgets/qmainwindow.h" +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include #include #include @@ -298,6 +303,11 @@ void YACReaderMacOSXToolbar::updateViewSelectorIcon(const QIcon &icon) viewSelector->setIcon(icon); } +void YACReaderMacOSXToolbar::attachToWindow(QMainWindow *window) +{ + QMacToolBar::attachToWindow(window->windowHandle()); +} + YACReaderMacOSXSearchLineEdit::YACReaderMacOSXSearchLineEdit() : QObject() { @@ -386,3 +396,108 @@ void MacToolBarItemWrapper::updateIcon(bool enabled) } else toolbaritem->setIcon(action->icon()); } +#else + +#ifdef YACREADER_LIBRARY + +YACReaderMacOSXToolbar::YACReaderMacOSXToolbar(QWidget *parent) + : YACReaderMainToolBar(parent) +{ + backButton->setIconSize(QSize(24, 24)); + forwardButton->setIconSize(QSize(24, 24)); + settingsButton->setIconSize(QSize(24, 24)); + serverButton->setIconSize(QSize(24, 24)); + helpButton->setIconSize(QSize(24, 24)); + toggleComicsViewButton->setIconSize(QSize(24, 24)); +} + +QSize YACReaderMacOSXToolbar::sizeHint() const +{ + return QSize(400, 36); +} + +void YACReaderMacOSXToolbar::addAction(QAction *action) +{ + if (backButton->defaultAction() == nullptr) { + backButton->setDefaultAction(action); + return; + } + if (forwardButton->defaultAction() == nullptr) { + forwardButton->setDefaultAction(action); + return; + } + if (settingsButton->defaultAction() == nullptr) { + settingsButton->setDefaultAction(action); + return; + } + if (serverButton->defaultAction() == nullptr) { + serverButton->setDefaultAction(action); + return; + } + if (helpButton->defaultAction() == nullptr) { + helpButton->setDefaultAction(action); + return; + } + if (toggleComicsViewButton->defaultAction() == nullptr) { + toggleComicsViewButton->setDefaultAction(action); + return; + } +} + +void YACReaderMacOSXToolbar::addSpace(int size) +{ +} + +void YACReaderMacOSXToolbar::addStretch() +{ +} + +YACReaderMacOSXSearchLineEdit *YACReaderMacOSXToolbar::addSearchEdit() +{ + auto search = new YACReaderMacOSXSearchLineEdit(); + + setSearchWidget(search); + + return search; +} + +void YACReaderMacOSXToolbar::updateViewSelectorIcon(const QIcon &icon) +{ +} + +void YACReaderMacOSXToolbar::attachToWindow(QMainWindow *window) +{ + auto toolbar = new QToolBar(); + + toolbar->addWidget(this); + toolbar->setMovable(false); + + window->addToolBar(toolbar); +} + +void YACReaderMacOSXToolbar::paintEvent(QPaintEvent *) +{ +} + +#else + +YACReaderMacOSXToolbar::YACReaderMacOSXToolbar(QWidget *parent) + : QToolBar(parent) +{ + setMovable(false); + setIconSize(QSize(24, 24)); +} + +void YACReaderMacOSXToolbar::attachToWindow(QMainWindow *window) +{ + window->setUnifiedTitleAndToolBarOnMac(true); + window->addToolBar(this); +} + +void YACReaderMacOSXToolbar::addStretch() +{ +} + +#endif + +#endif