Georg Baum wrote:
> Peter Kümmel wrote:
> 
>> The original lyx/Qt3 logic was:
>> 1. create QtView in start
>> 2. in the QtView ctor: resize and setMainWidget,
>>    thus geometry option is applied if there is any
>> 3. back in start check if (posx != -1 && posy != -1)
>>    is true if yes move widget
>>    (init() does not call any geometry functions)
> 
> That logic was wrong, too, since the lyxrc values overrode the geometry
> option.
> 
>> Is 'if (posx != -1 && posy != -1)' really the right way to
>> check if lyx wqas called with the geometry option?
> 
> No. It has nothing to do with the geometry option. The geometry option is
> handled internally by the frontend libs (qt, xforms and gtk), we never see
> it. 'if (posx != -1 && posy != -1)' tests for stored geometry values in
> lyxrc.
> Please read the documentation of QApplication::setMainWidget(), AFAIK the
> only way to not overwrite the geometry option with lyxrc values requires to
> set the lyxrc defaults before calling setMainWidget().
> 
> 
> Georg
> 
> 

Ok, now setMainWidget is the last call which could change the geometry.
I could not test Qt3 lyx.
Qt4 is different because there is no setMainWidget.



Index: qt3/lyx_gui.C
===================================================================
--- qt3/lyx_gui.C       (revision 14125)
+++ qt3/lyx_gui.C       (working copy)
@@ -233,12 +233,16 @@
        QtView & view = *view_ptr.get();
 
        view.init();
-               
+       
+       // restore saved lyxrc-geometry values
        if (posx != -1 && posy != -1) {
                view.setGeometry(posx, posy, width, height);
                if (maximize)
                        view.setWindowState(Qt::WindowMaximized);
        }
+       
+       // set -geometry values if any
+       qApp->setMainWidget(&view);
 
        view.show();
 
Index: qt3/QtView.C
===================================================================
--- qt3/QtView.C        (revision 14125)
+++ qt3/QtView.C        (working copy)
@@ -58,8 +58,6 @@
 QtView::QtView(unsigned int width, unsigned int height)
        : QMainWindow(), LyXView(), commandbuffer_(0)
 {
-       qApp->setMainWidget(this);
-
        bufferview_.reset(new BufferView(this, width, height));
 
        menubar_.reset(new QLMenubar(this, menubackend));

Reply via email to