Jean-Marc Lasgouttes wrote:
>>>>>> "Peter" == Peter Kümmel <[EMAIL PROTECTED]> writes:
> 
> Peter> Jean-Marc Lasgouttes wrote: ve some remarks about your patch. I
> Peter> think the code can be further
>>> simplified.
> 
> Peter> I've checked in attached simplified patch.
> 
> Here are some additional changes (the part in geometry stuff is just
> whitespace). I got rid of the funcmap and use oldnames (now
> d.tabnames) instead. This seems _much_ easier to me.

Indeed, this is much easier, thanks for fixing.

> 
> Since it is not my code, I'll let you check it and commit.

No problem, please check in!

> 
> JMarc
> 
> 
> 
> ------------------------------------------------------------------------
> 
> Index: src/frontends/qt4/GuiView.C
> ===================================================================
> --- src/frontends/qt4/GuiView.C       (revision 17024)
> +++ src/frontends/qt4/GuiView.C       (working copy)
> @@ -107,8 +107,7 @@ public:
>  
>  struct GuiView::GuiViewPrivate
>  {
> -     typedef std::map<int, FuncRequest> FuncMap;
> -     FuncMap funcmap;
> +     std::vector<std::string> tabnames;
>  
>       TabWidget* tabWidget;
>  
> @@ -308,11 +307,11 @@ void GuiView::saveGeometry()
>                                                 
>  
>  void GuiView::setGeometry(unsigned int width,
> -                                                               unsigned int 
> height,
> -                                                               int posx, int 
> posy,
> -                                                               bool maximize,
> -                                                               unsigned int 
> iconSizeXY,
> -                                                               const 
> std::string & geometryArg)
> +                       unsigned int height,
> +                       int posx, int posy,
> +                       bool maximize,
> +                       unsigned int iconSizeXY,
> +                       const string & geometryArg)
>  {
>       // use last value (not at startup)
>       if (d.lastIconSize != 0)
> @@ -353,12 +352,15 @@ void GuiView::setGeometry(unsigned int w
>               int x, y;
>               int w, h;
>               QRegExp re( "[=]*(?:([0-9]+)[xX]([0-9]+)){0,1}[ 
> ]*(?:([+-][0-9]*)([+-][0-9]*)){0,1}" );
> -             re.indexIn( toqstr(geometryArg.c_str()));
> -             w = re.cap( 1 ).toInt();
> -             h = re.cap( 2 ).toInt();
> -             x = re.cap( 3 ).toInt();
> -             y = re.cap( 4 ).toInt();
> +             re.indexIn(toqstr(geometryArg.c_str()));
> +             w = re.cap(1).toInt();
> +             h = re.cap(2).toInt();
> +             x = re.cap(3).toInt();
> +             y = re.cap(4).toInt();
>               QWidget::setGeometry( x, y, w, h );
> +#else
> +             // silence warning
> +             (void)geometryArg;
>  #endif
>       }
>  
> @@ -479,24 +481,21 @@ void GuiView::initTab(QWidget* workarea)
>  
>  void GuiView::updateTab()
>  {
> -     static std::vector<string> oldnames;
> -     std::vector<string> const& names = theBufferList().getFileNames();
> +     std::vector<string> const & names = theBufferList().getFileNames();
>  
>       // avoid unnecessary tabbar rebuild: 
>       // check if something has changed
> -     if (oldnames == names) 
> +     if (d.tabnames == names) 
>               return;
> -     else
> -             oldnames = names;
> +     d.tabnames = names;
>  
> -     QTabBar& tabbar = *d.tabWidget->tabbar;
> +     QTabBar & tabbar = *d.tabWidget->tabbar;
>  
> -     // update when all  is done
> +     // update when all is done
>       tabbar.blockSignals(true);
>  
> -     // remove all tab bars and clear the function map
> +     // remove all tab bars
>       d.tabWidget->clearTabbar();
> -     d.funcmap.clear();
>  
>       string cur_title;
>       if (view()->buffer()) {
> @@ -504,29 +503,22 @@ void GuiView::updateTab()
>       }
>  
>       // rebuild tabbar and function map from scratch
> -     if (names.size() == 1) {
> -             d.funcmap.insert(std::pair<int, FuncRequest>
> -                                             (0, 
> FuncRequest(LFUN_BUFFER_SWITCH, names[0])));
> -     } else {
> +     if (names.size() > 1) {
>               for(size_t i = 0; i < names.size(); i++) {
> -                     tabbar.addTab(lyx::toqstr(onlyFilename(names[i]))); 
> -                     d.funcmap.insert(std::pair<int, FuncRequest>
> -                                                     (i, 
> FuncRequest(LFUN_BUFFER_SWITCH, names[i])));
> +                     tabbar.addTab(toqstr(onlyFilename(names[i]))); 
>                       // set current tab
> -                     if (names[i] == cur_title) {
> +                     if (names[i] == cur_title)
>                               tabbar.setCurrentIndex(i);
> -                     }
>               }
>       }
>       tabbar.blockSignals(false);
>  }
>  
>  
> -void GuiView::currentTabChanged (int index)
> +void GuiView::currentTabChanged(int i)
>  {
> -     std::map<int, FuncRequest>::const_iterator it = d.funcmap.find(index);
> -     if (it != d.funcmap.end())
> -             activated(it->second);
> +     BOOST_ASSERT(i >= 0 && size_type(i) < d.tabnames.size());
> +     dispatch(FuncRequest(LFUN_BUFFER_SWITCH, d.tabnames[i]));
>  }
>  
>  

Reply via email to