Re: Smart quotes generating selection events

From: Martin Sevior <msevior_at_gmail.com>
Date: Sun Jan 03 2010 - 02:57:53 CET

HI Everyone,

I applied a fix for this to TRUNK. Can you check it works as expected Daniel?

Cheers

Martin

author: msevior
Date: 2010-01-03 02:45:21 +0100 (Sun, 03 Jan 2010)
New Revision: 28581

Modified:
   abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
   abiword/trunk/src/text/fmt/xp/fv_View.h
   abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
Log:

Prevent selection events during smart quote operation as requested by
Daniel Drake for sugar.

Please backport.

Modified: abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4622,7 +4622,7 @@

                        m_pView->moveInsPtTo(quotable_at);
                        // delete/insert create change records for UNDO
- m_pView->cmdSelect(quotable_at, quotable_at + 1);
+ m_pView->cmdSelectNoNotify(quotable_at,
quotable_at + 1);
                        m_pView->cmdCharInsert(&replacement, 1);
                        m_pView->moveInsPtTo(saved_pos);
                }

Modified: abiword/trunk/src/text/fmt/xp/fv_View.h
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View.h 2009-12-25 23:06:28
UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View.h 2010-01-03 01:45:21
UTC (rev 28581)
@@ -414,6 +414,7 @@
        bool isTOCSelected(void) const;
        bool setTOCProps(PT_DocPosition pos, const char * szProps);

+ bool cmdSelectNoNotify(PT_DocPosition
dpBeg, PT_DocPosition dpEnd);
        void cmdSelect(PT_DocPosition dpBeg,
PT_DocPosition dpEnd);
        void cmdCharMotion(bool bForward, UT_uint32 count);
        bool cmdCharInsert(const UT_UCSChar * text,
UT_uint32 count, bool bForce = false);uthor: msevior
Date: 2010-01-03 02:45:21 +0100 (Sun, 03 Jan 2010)
New Revision: 28581

Modified:
   abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
   abiword/trunk/src/text/fmt/xp/fv_View.h
   abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
Log:

Prevent selection events during smart quote operation as requested by
Daniel Drake for sugar.

Please backport.

Modified: abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4622,7 +4622,7 @@

                        m_pView->moveInsPtTo(quotable_at);
                        // delete/insert create change records for UNDO
- m_pView->cmdSelect(quotable_at, quotable_at + 1);
+ m_pView->cmdSelectNoNotify(quotable_at,
quotable_at + 1);
                        m_pView->cmdCharInsert(&replacement, 1);
                        m_pView->moveInsPtTo(saved_pos);
                }

Modified: abiword/trunk/src/text/fmt/xp/fv_View.h
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View.h 2009-12-25 23:06:28
UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View.h 2010-01-03 01:45:21
UTC (rev 28581)
@@ -414,6 +414,7 @@
        bool isTOCSelected(void) const;
        bool setTOCProps(PT_DocPosition pos, const char * szProps);

+ bool cmdSelectNoNotify(PT_DocPosition
dpBeg, PT_DocPosition dpEnd);
        void cmdSelect(PT_DocPosition dpBeg,
PT_DocPosition dpEnd);
        void cmdCharMotion(bool bForward, UT_uint32 count);
        bool cmdCharInsert(const UT_UCSChar * text,
UT_uint32 count, bool bForce = false);

Modified: abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4022,10 +4022,8 @@

 }

-
-void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+bool FV_View::cmdSelectNoNotify(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
 {
-
        if (!isSelectionEmpty())
        {
                _clearSelection();
@@ -4050,12 +4048,20 @@

        if (dpBeg == dpEnd)
        {
- return;
+ return false;
        }
- _drawSelection();
- notifyListeners(AV_CHG_EMPTYSEL);
+ return true;
 }
uthor: msevior
Date: 2010-01-03 02:45:21 +0100 (Sun, 03 Jan 2010)
New Revision: 28581

Modified:
   abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
   abiword/trunk/src/text/fmt/xp/fv_View.h
   abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
Log:

Prevent selection events during smart quote operation as requested by
Daniel Drake for sugar.

Please backport.

Modified: abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4622,7 +4622,7 @@

                        m_pView->moveInsPtTo(quotable_at);
                        // delete/insert create change records for UNDO
- m_pView->cmdSelect(quotable_at, quotable_at + 1);
+ m_pView->cmdSelectNoNotify(quotable_at,
quotable_at + 1);
                        m_pView->cmdCharInsert(&replacement, 1);
                        m_pView->moveInsPtTo(saved_pos);
                }

Modified: abiword/trunk/src/text/fmt/xp/fv_View.h
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View.h 2009-12-25 23:06:28
UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View.h 2010-01-03 01:45:21
UTC (rev 28581)
@@ -414,6 +414,7 @@
        bool isTOCSelected(void) const;
        bool setTOCProps(PT_DocPosition pos, const char * szProps);

+ bool cmdSelectNoNotify(PT_DocPosition
dpBeg, PT_DocPosition dpEnd);
        void cmdSelect(PT_DocPosition dpBeg,
PT_DocPosition dpEnd);
        void cmdCharMotion(bool bForward, UT_uint32 count);
        bool cmdCharInsert(const UT_UCSChar * text,
UT_uint32 count, bool bForce = false);

Modified: abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4022,10 +4022,8 @@

 }

-
-void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+bool FV_View::cmdSelectNoNotify(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
 {
-
        if (!isSelectionEmpty())
        {
                _clearSelection();
@@ -4050,12 +4048,20 @@

        if (dpBeg == dpEnd)
        {
- return;
+ return false;
        }
- _drawSelection();
- notifyListeners(AV_CHG_EMPTYSEL);
+ return true;
 }

+void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+{
+ if(cmdSelectNoNotify(dpBeg, dpEnd))
+ {
+ _drawSelection();
+ notifyListeners(AV_CHG_EMPTYSEL);
+ }
+}
+
 #define IS_SELECTALL(a, b) ((a) == FV_DOCPOS_BOD && (b) == FV_DOCPOS_EOD)

 void FV_View::cmdSelect(UT_sint32 xPos, UT_sint32 yPos, FV_DocPos
dpBeg, FV_DocPos dpEnd)

-----------------------------------------------
To unsubscribe from this list, send a message to
abisource-cvs-commit-request@abisource.com with the word
unsubscribe in the message body.
+void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+{
+ if(cmdSelectNoNotify(dpBeg, dpEnd))
+ {
+ _drawSelection();
+ notifyListeners(AV_CHG_EMPTYSEL);
+ }
+}
+
 #define IS_SELECTALL(a, b) ((a) == FV_DOCPOS_BOD && (b) == FV_DOCPOS_EOD)

 void FV_View::cmdSelect(UT_sint32 xPos, UT_sint32 yPos, FV_DocPos
dpBeg, FV_DocPos dpEnd)

-----------------------------------------------
To unsubscribe from this list, send a message to
abisource-cvs-commit-request@abisource.com with the word
unsubscribe in the message body.

Modified: abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4022,10 +4022,8 @@

 }

-
-void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+bool FV_View::cmdSelectNoNotify(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
 {
-
        if (!isSelectionEmpty())
        {
                _clearSelection();
@@ -4050,12 +4048,20 @@

        if (dpBeg == dpEnd)
        {
- return;uthor: msevior
Date: 2010-01-03 02:45:21 +0100 (Sun, 03 Jan 2010)
New Revision: 28581

Modified:
   abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
   abiword/trunk/src/text/fmt/xp/fv_View.h
   abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
Log:

Prevent selection events during smart quote operation as requested by
Daniel Drake for sugar.

Please backport.

Modified: abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fl_DocLayout.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4622,7 +4622,7 @@

                        m_pView->moveInsPtTo(quotable_at);
                        // delete/insert create change records for UNDO
- m_pView->cmdSelect(quotable_at, quotable_at + 1);
+ m_pView->cmdSelectNoNotify(quotable_at,
quotable_at + 1);
                        m_pView->cmdCharInsert(&replacement, 1);
                        m_pView->moveInsPtTo(saved_pos);
                }

Modified: abiword/trunk/src/text/fmt/xp/fv_View.h
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View.h 2009-12-25 23:06:28
UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View.h 2010-01-03 01:45:21
UTC (rev 28581)
@@ -414,6 +414,7 @@
        bool isTOCSelected(void) const;
        bool setTOCProps(PT_DocPosition pos, const char * szProps);

+ bool cmdSelectNoNotify(PT_DocPosition
dpBeg, PT_DocPosition dpEnd);
        void cmdSelect(PT_DocPosition dpBeg,
PT_DocPosition dpEnd);
        void cmdCharMotion(bool bForward, UT_uint32 count);
        bool cmdCharInsert(const UT_UCSChar * text,
UT_uint32 count, bool bForce = false);

Modified: abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp
===================================================================
--- abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2009-12-25
23:06:28 UTC (rev 28580)
+++ abiword/trunk/src/text/fmt/xp/fv_View_cmd.cpp 2010-01-03
01:45:21 UTC (rev 28581)
@@ -4022,10 +4022,8 @@

 }

-
-void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+bool FV_View::cmdSelectNoNotify(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
 {
-
        if (!isSelectionEmpty())
        {
                _clearSelection();
@@ -4050,12 +4048,20 @@

        if (dpBeg == dpEnd)
        {
- return;
+ return false;
        }
- _drawSelection();
- notifyListeners(AV_CHG_EMPTYSEL);
+ return true;
 }

+void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+{
+ if(cmdSelectNoNotify(dpBeg, dpEnd))
+ {
+ _drawSelection();
+ notifyListeners(AV_CHG_EMPTYSEL);
+ }
+}
+
 #define IS_SELECTALL(a, b) ((a) == FV_DOCPOS_BOD && (b) == FV_DOCPOS_EOD)

 void FV_View::cmdSelect(UT_sint32 xPos, UT_sint32 yPos, FV_DocPos
dpBeg, FV_DocPos dpEnd)

-----------------------------------------------
To unsubscribe from this list, send a message to
abisource-cvs-commit-request@abisource.com with the word
unsubscribe in the message body.
+ return false;
        }
- _drawSelection();
- notifyListeners(AV_CHG_EMPTYSEL);
+ return true;
 }

+void FV_View::cmdSelect(PT_DocPosition dpBeg, PT_DocPosition dpEnd)
+{
+ if(cmdSelectNoNotify(dpBeg, dpEnd))
+ {
+ _drawSelection();
+ notifyListeners(AV_CHG_EMPTYSEL);
+ }
+}
+
 #define IS_SELECTALL(a, b) ((a) == FV_DOCPOS_BOD && (b) == FV_DOCPOS_EOD)

 void FV_View::cmdSelect(UT_sint32 xPos, UT_sint32 yPos, FV_DocPos
dpBeg, FV_DocPos dpEnd)

-----------------------------------------------
To unsubscribe from this list, send a message to
abisource-cvs-commit-request@abisource.com with the word
unsubscribe in the message body.
On Fri, Jan 1, 2010 at 1:13 AM, Daniel Drake <dsd@laptop.org> wrote:
> On Thu, 2009-12-31 at 09:53 +0000, Daniel Drake wrote:
>> Hi Martin,
>>
>> 2009/12/31 Martin Sevior <msevior@gmail.com>:
>> > Hi Daniel,
>> >
>> > I couldn't reproduce the bug. Smart Quotes seems to work fine. Is
>> > there anything else I need to beyond typing """ and "'" 's
>>
>> What's your setup?
>> How are you monitoring for selection changed events?
>
> Taking a few guesses, you're using Sugar 0.86 or newer?
>
> To reproduce the bug where the focus is lost as soon as you press " you
> need to be running Sugar-0.84 and Write-63.
>
> The Abiword bug is still present in newer configurations, it's just that
> newer versions of Write don't listen for the selection changed signal.
>
> Sugar-0.84/Write-63 is what is being targetted at deployments right now.
>
> To reproduce this bug you can just use one of the simple pyabiword
> examples, with a signal handler for the selection changed event. You'll
> receive events every time " is pressed. That's the bug we need to
> squash, no need to faff around with getting the right sugar
> configuration running.
>
> cheers
> Daniel
>
>
>
Received on Sun Jan 3 02:59:03 2010

This archive was generated by hypermail 2.1.8 : Sun Jan 03 2010 - 02:59:03 CET