]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView_pimpl.C
Change the latex font names in order to match the names of type1inst.
[lyx.git] / src / BufferView_pimpl.C
index 8e2021b8ac83a4158edf310120dd03816be6df2c..843b8e72416ab06154956d8dd0e19ef256074723 100644 (file)
@@ -155,6 +155,8 @@ BufferView::Pimpl::Pimpl(BufferView * b, LyXView * o,
                .connect(slot(this, &BufferView::Pimpl::tripleClick));
        workarea_.workAreaKeyPress
                .connect(slot(this, &BufferView::Pimpl::workAreaKeyPress));
+       workarea_.selectionRequested
+               .connect(slot(this, &BufferView::Pimpl::selectionRequested)); 
        
        cursor_timeout.timeout.connect(slot(this,
                                            &BufferView::Pimpl::cursorToggle));
@@ -403,17 +405,26 @@ void BufferView::Pimpl::updateScrollbar()
        }
 
        long const text_height = bv_->text->height;
+       long const work_height = workarea_.height();
 
+       if (text_height <= work_height) {
+               workarea_.setScrollbarBounds(0.0, 0.0);
+               current_scrollbar_value = bv_->text->first;
+               workarea_.setScrollbar(current_scrollbar_value, 1.0);
+               return;
+       }
+       
        double const lineh = bv_->text->defaultHeight();
        double const slider_size =
                (text_height == 0) ? 1.0 : 1.0 / double(text_height);
-
-       static long old_text_height = 0;
-       static double old_lineh = 0;
-       static double old_slider_size = 0;
+       
+       static long old_text_height;
+       static double old_lineh;
+       static double old_slider_size;
 
        if (text_height != old_text_height) {
-               workarea_.setScrollbarBounds(0, text_height - workarea_.height());
+               workarea_.setScrollbarBounds(0.0,
+                                            text_height - work_height);
                old_text_height = text_height;
        }
        if (lineh != old_lineh) {
@@ -435,6 +446,7 @@ void BufferView::Pimpl::scrollCB(double value)
        if (!buffer_) return;
 
        current_scrollbar_value = long(value);
+
        if (current_scrollbar_value < 0)
                current_scrollbar_value = 0;
    
@@ -568,11 +580,7 @@ void BufferView::Pimpl::workAreaMotionNotify(int x, int y, unsigned int state)
        bv_->text->setSelection(bv_);
        screen_->toggleToggle(bv_->text, bv_);
        fitCursor();
-#if 0
-       screen_->showCursor(bv_->text, bv_);
-#else
        showCursor();
-#endif
 }
 
 
@@ -628,11 +636,7 @@ void BufferView::Pimpl::workAreaButtonPress(int xpos, int ypos,
        screen_->toggleSelection(bv_->text, bv_);
        bv_->text->clearSelection();
        bv_->text->fullRebreak(bv_);
-#if 0
-       screen_->update(bv_->text, bv_);
-#else
        update();
-#endif
        updateScrollbar();
        
        // Single left click in math inset?
@@ -736,6 +740,16 @@ void BufferView::Pimpl::tripleClick(int /*x*/, int /*y*/, unsigned int button)
 }
 
 
+void BufferView::Pimpl::selectionRequested()
+{
+       string const sel(bv_->getLyXText()->selectionAsString(bv_->buffer(),
+                                                             false)); 
+       if (!sel.empty()) {
+               workarea_.putClipboard(sel);
+       }
+}
+
 void BufferView::Pimpl::enterView()
 {
        if (active() && available()) {
@@ -780,6 +794,11 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
        if (button == 2)
                return;
 
+       // finish selection
+       if (button == 1) {
+               workarea_.haveSelection(bv_->getLyXText()->selection.set());
+       }
        setState();
        owner_->showState();
        owner_->updateMenubar();
@@ -848,7 +867,8 @@ void BufferView::Pimpl::workAreaButtonRelease(int x, int y,
 }
 
 
-Box BufferView::Pimpl::insetDimensions(LyXText const & text, LyXCursor const & cursor) const
+Box BufferView::Pimpl::insetDimensions(LyXText const & text,
+                                      LyXCursor const & cursor) const
 {
        Paragraph /*const*/ & par = *cursor.par();
        pos_type const pos = cursor.pos();
@@ -871,7 +891,9 @@ Box BufferView::Pimpl::insetDimensions(LyXText const & text, LyXCursor const & c
 }
  
  
-Inset * BufferView::Pimpl::checkInset(LyXText const & text, LyXCursor const & cursor, int & x, int & y) const
+Inset * BufferView::Pimpl::checkInset(LyXText const & text,
+                                     LyXCursor const & cursor,
+                                     int & x, int & y) const
 {
        pos_type const pos(cursor.pos());
        Paragraph /*const*/ & par(*cursor.par());
@@ -1429,7 +1451,7 @@ void BufferView::Pimpl::MenuInsertLyXFile(string const & filen)
                string initpath = lyxrc.document_path;
 
                if (available()) {
-                       string const trypath = owner_->buffer()->filepath;
+                       string const trypath = owner_->buffer()->filePath();
                        // If directory is writeable, use this as default.
                        if (IsDirWriteable(trypath))
                                initpath = trypath;
@@ -3286,7 +3308,7 @@ void BufferView::Pimpl::smartQuote()
        
        if (style.pass_thru ||
                (!insertInset(new InsetQuotes(c, bv_->buffer()->params))))
-               Dispatch(LFUN_SELFINSERT, "\"");
+               bv_->owner()->getLyXFunc()->dispatch(LFUN_SELFINSERT, "\"");
 }