From dd9a03b91066569b4d1799e1e57d11a574bf1359 Mon Sep 17 00:00:00 2001 From: Stefan Schimanski Date: Fri, 14 Mar 2008 16:39:34 +0000 Subject: [PATCH] * copy icon size to new GuiView from the last GuiView * use small Mac combobox widget for small icon size. Otherwise the combobox is bigger than the icons. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23720 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiApplication.cpp | 17 +++++++++++++---- src/frontends/qt4/GuiToolbar.cpp | 20 ++++++++++++++++---- src/frontends/qt4/GuiToolbar.h | 13 +++++++++++-- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/frontends/qt4/GuiApplication.cpp b/src/frontends/qt4/GuiApplication.cpp index e76f726904..0289eb61a2 100644 --- a/src/frontends/qt4/GuiApplication.cpp +++ b/src/frontends/qt4/GuiApplication.cpp @@ -315,16 +315,25 @@ static void updateIds(map const & stdmap, vector & ids) void GuiApplication::createView(QString const & geometry_arg) { + if (global_menubar_) + global_menubar_->releaseKeyboard(); + + // create new view updateIds(views_, view_ids_); int id = 0; while (views_.find(id) != views_.end()) id++; - views_[id] = new GuiView(id); + GuiView * view = new GuiView(id); + + // copy the icon size from old view + if (viewCount() > 0) + view->setIconSize(current_view_->iconSize()); + + // register view + views_[id] = view; updateIds(views_, view_ids_); - - GuiView * view = views_[id]; + theLyXFunc().setLyXView(view); - view->show(); if (!geometry_arg.isEmpty()) { #ifdef Q_WS_WIN diff --git a/src/frontends/qt4/GuiToolbar.cpp b/src/frontends/qt4/GuiToolbar.cpp index 577d109433..24d1e77cdc 100644 --- a/src/frontends/qt4/GuiToolbar.cpp +++ b/src/frontends/qt4/GuiToolbar.cpp @@ -464,8 +464,9 @@ public: }; -GuiLayoutBox::GuiLayoutBox(GuiView & owner) - : owner_(owner), lastSel_(-1), layoutItemDelegate_(new LayoutItemDelegate(this)), +GuiLayoutBox::GuiLayoutBox(GuiToolbar * bar, GuiView & owner) + : owner_(owner), bar_(bar), lastSel_(-1), + layoutItemDelegate_(new LayoutItemDelegate(this)), visibleCategories_(0), inShowPopup_(false) { setSizeAdjustPolicy(QComboBox::AdjustToContents); @@ -486,7 +487,10 @@ GuiLayoutBox::GuiLayoutBox(GuiView & owner) view()->setItemDelegateForColumn(0, layoutItemDelegate_); QObject::connect(this, SIGNAL(activated(int)), - this, SLOT(selected(int))); + this, SLOT(selected(int))); + QObject::connect(bar_, SIGNAL(iconSizeChanged(QSize)), + this, SLOT(setIconSize(QSize))); + owner_.setLayoutDialog(this); updateContents(true); } @@ -652,6 +656,14 @@ bool GuiLayoutBox::eventFilter(QObject * o, QEvent * e) return QComboBox::eventFilter(o, e); } + +void GuiLayoutBox::setIconSize(QSize size) +{ + bool small = size.height() < 20; + setAttribute(Qt::WA_MacSmallSize, small); + setAttribute(Qt::WA_MacNormalSize, !small); +} + void GuiLayoutBox::set(docstring const & layout) { @@ -962,7 +974,7 @@ void GuiToolbar::add(ToolbarItem const & item) addSeparator(); break; case ToolbarItem::LAYOUTS: - layout_ = new GuiLayoutBox(owner_); + layout_ = new GuiLayoutBox(this, owner_); addWidget(layout_); break; case ToolbarItem::MINIBUFFER: diff --git a/src/frontends/qt4/GuiToolbar.h b/src/frontends/qt4/GuiToolbar.h index f616410658..57650ac8ef 100644 --- a/src/frontends/qt4/GuiToolbar.h +++ b/src/frontends/qt4/GuiToolbar.h @@ -44,7 +44,7 @@ class GuiLayoutBox : public QComboBox { Q_OBJECT public: - GuiLayoutBox(GuiView &); + GuiLayoutBox(GuiToolbar * bar, GuiView &); /// select the right layout in the combobox. void set(docstring const & layout); @@ -65,6 +65,8 @@ public: private Q_SLOTS: /// void selected(int index); + /// + void setIconSize(QSize size); private: friend class LayoutItemDelegate; @@ -81,6 +83,8 @@ private: /// GuiView & owner_; /// + GuiToolbar * bar_; + /// DocumentClass const * text_class_; /// Inset const * inset_; @@ -119,17 +123,22 @@ public: /// GuiCommandBuffer * commandBuffer() { return command_buffer_; } + /// Action * addItem(ToolbarItem const & item); Q_SIGNALS: + /// void updated(); private: - + /// QList actions_; + /// GuiView & owner_; + /// GuiLayoutBox * layout_; + /// GuiCommandBuffer * command_buffer_; };