]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView_pimpl.C
small changes to ButtonController usage
[lyx.git] / src / BufferView_pimpl.C
index 7dc44c6def37812c32981a6276817f81409d7f79..11970de6f3f384200d09f4c6f074e2ea307e6e9e 100644 (file)
@@ -79,6 +79,27 @@ BufferView::Pimpl::Pimpl(BufferView * b, LyXView * o,
 {
        buffer_ = 0;
        workarea_ = new WorkArea(bv_, xpos, ypos, width, height);
+       // Setup the signals
+       workarea_->workAreaExpose
+               .connect(slot(this, &BufferView::Pimpl::workAreaExpose));
+       workarea_->workAreaEnter
+               .connect(slot(this, &BufferView::Pimpl::enterView));
+       workarea_->workAreaLeave
+               .connect(slot(this, &BufferView::Pimpl::leaveView));
+       workarea_->workAreaButtonPress
+               .connect(slot(this, &BufferView::Pimpl::workAreaButtonPress));
+       workarea_->workAreaButtonRelease
+               .connect(slot(this,
+                             &BufferView::Pimpl::workAreaButtonRelease));
+       workarea_->workAreaMotionNotify
+               .connect(slot(this, &BufferView::Pimpl::workAreaMotionNotify));
+       workarea_->workAreaDoubleClick
+               .connect(slot(this, &BufferView::Pimpl::doubleClick));
+       workarea_->workAreaTripleClick
+               .connect(slot(this, &BufferView::Pimpl::tripleClick));
+       workarea_->workAreaKeyPress
+               .connect(slot(this, &BufferView::Pimpl::workAreaKeyPress));
+       
        screen_ = 0;
 
        cursor_timeout.timeout.connect(slot(this,
@@ -493,6 +514,12 @@ int BufferView::Pimpl::scrollDown(long time)
 }
 
 
+void BufferView::Pimpl::workAreaKeyPress(KeySym keysym, unsigned int state)
+{
+       bv_->owner()->getLyXFunc()->processKeySym(keysym, state);
+}
+
+
 void BufferView::Pimpl::workAreaMotionNotify(int x, int y, unsigned int state)
 {
        // Only use motion with button 1
@@ -1241,15 +1268,19 @@ void BufferView::Pimpl::restorePosition()
        
        int  x, y;
        string fname = backstack.pop(&x, &y);
-       
+
        beforeChange();
-       Buffer * b = bufferlist.exists(fname) ?
-               bufferlist.getBuffer(fname) :
-               bufferlist.loadLyXFile(fname); // don't ask, just load it
-       buffer(b);
+
+       if( fname != buffer_->fileName() ) {
+               Buffer * b = bufferlist.exists(fname) ?
+                       bufferlist.getBuffer(fname) :
+                       bufferlist.loadLyXFile(fname); // don't ask, just load it
+               if( b != 0 ) buffer(b);
+       }
+
        bv_->text->SetCursorFromCoordinates(bv_, x, y);
        update(BufferView::SELECT|BufferView::FITCUR);
-} 
+}
 
 
 bool BufferView::Pimpl::NoSavedPositions()