]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiWorkArea.h
fix completion painting for RTL (inline completion and completion list)
[lyx.git] / src / frontends / qt4 / GuiWorkArea.h
index 6c808677e43eb59a9b759af2e7f9a0ed54585f83..4d531b9ec3fdfff31d15e16a14938bf3f9dbfb1f 100644 (file)
@@ -14,7 +14,6 @@
 #define WORKAREA_H
 
 #include "frontends/WorkArea.h"
-#include "frontends/qt4/GuiCompleter.h"
 
 #include "DocIterator.h"
 #include "FuncRequest.h"
@@ -26,6 +25,7 @@
 #include <QMouseEvent>
 #include <QPixmap>
 #include <QResizeEvent>
+#include <QTabBar>
 #include <QTabWidget>
 #include <QTimer>
 
@@ -47,6 +47,7 @@ class Buffer;
 
 namespace frontend {
 
+class GuiCompleter;
 class GuiView;
 class GuiWorkArea;
 
@@ -127,7 +128,7 @@ public:
        void resizeBufferView();
 
        ///
-       GuiCompleter & completer() { return completer_; }
+       GuiCompleter & completer() { return *completer_; }
        
 Q_SIGNALS:
        ///
@@ -147,6 +148,8 @@ private Q_SLOTS:
        /// close this work area.
        /// Slot for Buffer::closing signal.
        void close();
+       /// Slot to restore proper scrollbar behaviour.
+       void fixVerticalScrollBar();
 
 private:
        friend class GuiCompleter;
@@ -234,7 +237,7 @@ private:
        int preedit_lines_;
 
        ///
-       GuiCompleter completer_;
+       GuiCompleter completer_;
 }; // GuiWorkArea
 
 
@@ -258,18 +261,63 @@ public:
 Q_SIGNALS:
        ///
        void currentWorkAreaChanged(GuiWorkArea *);
+       ///
+       void lastWorkAreaRemoved();
 
 public Q_SLOTS:
+       /// close current buffer, or the one given by \c clicked_tab_
+       void closeCurrentBuffer();
+       /// close current tab, or the one given by \c clicked_tab_
+       void closeCurrentTab();
        ///
-       void on_currentTabChanged(int index);
+       void updateTabTexts();
+       
+private Q_SLOTS:
        ///
-       void closeCurrentBuffer();
+       void on_currentTabChanged(int index);
        ///
-       void closeCurrentTab();
+       void showContextMenu(const QPoint & pos);
        ///
-       void updateTabText(GuiWorkArea *);
+       void moveTab(int fromIndex, int toIndex);
+
+private:
+       int clicked_tab_;
 }; // TabWorkArea
 
+
+class DragTabBar : public QTabBar
+{
+       Q_OBJECT
+public:
+       ///
+       DragTabBar(QWidget * parent = 0);
+
+#if QT_VERSION < 0x040300
+       ///
+       int tabAt(QPoint const & position) const;
+#endif
+
+protected:
+       ///
+       void mousePressEvent(QMouseEvent * event);
+       ///
+       void mouseMoveEvent(QMouseEvent * event);
+       ///
+       void dragEnterEvent(QDragEnterEvent * event);
+       ///
+       void dropEvent(QDropEvent * event);
+
+private:
+       ///
+       QPoint dragStartPos_;
+       ///
+       int dragCurrentIndex_;
+
+Q_SIGNALS:
+       ///
+       void tabMoveRequested(int fromIndex, int toIndex);
+};
+
 } // namespace frontend
 } // namespace lyx