Date: prev next · Thread: first prev next last
2010 Archives by date, by thread · List index


Hello,

I thought I'd try one of the visual formula editor easy hacks, as
Michael had recommended.

This one seemed the easiest of the three there. Hope it's okay.

Regards,
Luke


From 9de527f33cd410422e706da547fae67d6a5adbee Mon Sep 17 00:00:00 2001
From: Luke Dixon <6b8b4567@gmail.com>
Date: Mon, 1 Nov 2010 21:57:49 +0000
Subject: [PATCH] Don't draw caret when visual formula editor looses focus.

---
 starmath/inc/view.hxx       |    3 +++
 starmath/source/view.cxx    |   14 +++++++++++++-
 starmath/visual-editor-todo |    3 +--
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx
index 925b2cc..40c3aab 100644
--- a/starmath/inc/view.hxx
+++ b/starmath/inc/view.hxx
@@ -86,6 +86,9 @@ protected:
     virtual void StateChanged( StateChangedType eChanged );
     DECL_LINK(MenuSelectHdl, Menu *);
 
+private:
+    void RepaintViewShellDoc();
+
 public:
     SmGraphicWindow(SmViewShell* pShell);
     ~SmGraphicWindow();
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index 120e3b5..d71283f 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -217,6 +217,8 @@ void SmGraphicWindow::GetFocus()
     pViewShell->GetEditWindow()->Flush();
     //Let view shell know what insertions should be done in visual editor
     pViewShell->SetInsertIntoEditWindow(FALSE);
+    SetIsCursorVisible(TRUE);
+    RepaintViewShellDoc();
 }
 
 void SmGraphicWindow::LoseFocus()
@@ -230,6 +232,16 @@ void SmGraphicWindow::LoseFocus()
         pAccessible->LaunchEvent( AccessibleEventId::STATE_CHANGED,
                 aOldValue, aNewValue );
     }
+    if (!IsInlineEditEnabled())
+        return;
+    SetIsCursorVisible(FALSE);
+    RepaintViewShellDoc();
+}
+
+void SmGraphicWindow::RepaintViewShellDoc()
+{
+    SmDocShell &rDoc = *pViewShell->GetDoc();
+    rDoc.Repaint();
 }
 
 void SmGraphicWindow::ShowCursor(BOOL bShow)
@@ -318,7 +330,7 @@ void SmGraphicWindow::Paint(const Rectangle&)
     SetFormulaDrawPos(aPoint);
     if(IsInlineEditEnabled()) {
         //Draw cursor if any...
-        if(pViewShell->GetDoc()->HasCursor())
+        if(pViewShell->GetDoc()->HasCursor() && IsCursorVisible())
             pViewShell->GetDoc()->GetCursor().Draw(*this, aPoint);
     } else {
     SetIsCursorVisible(FALSE); // (old) cursor must be drawn again
diff --git a/starmath/visual-editor-todo b/starmath/visual-editor-todo
index 027140f..4317493 100644
--- a/starmath/visual-editor-todo
+++ b/starmath/visual-editor-todo
@@ -24,8 +24,7 @@ Medium
 2. SmCursor` should support deletion of lines, rows, cols and sub-/superscripts.
 3. SmCursor::InsertSubSup() should wrap the body in a SmBraceNode if the body is an SmOperNode, 
SmBinVerNode, etc.
 4. Make caret in visual editor blink.
-5. Don't draw visual editor caret, when SmGraphicWindow doesn't have focus.
-6. When OpenOffice Math runs in standalone mode it centers the current formula, this is not nice 
for visual editing.
+5. When OpenOffice Math runs in standalone mode it centers the current formula, this is not nice 
for visual editing.
 
 Complex
 -------
-- 
1.7.3.1


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.