Author Topic: Mouse wheel in editor  (Read 9709 times)

Offline travonz

  • Single posting newcomer
  • *
  • Posts: 5
Mouse wheel in editor
« on: January 05, 2009, 11:05:55 am »
Hi,

since several days mouse wheel doesn't work any more in editor. It work only if cursor is over scroll bar, which is not comfortable. It also work on other widgets (combobox, ...).
Font size change is also disable if ctrl pressed.
Is there a new option or something to enable ?

I use svn 5380 compiled on Linux with wxwidget 2.8.8.

thanks for your help

Xavier

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 5281
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: Mouse wheel in editor
« Reply #1 on: January 06, 2009, 03:43:53 am »
I'm using "windows xp", and all the related issues are Ok in my system. Maybe you could update to wxwidgets 2.8.9.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline Schlumie

  • Multiple posting newcomer
  • *
  • Posts: 12
Re: Mouse wheel in editor
« Reply #2 on: January 14, 2009, 10:01:54 am »
Same here on Ubuntu Hardy SVN 5380 wx2.8.9. Now I'll try to install older version...

Offline jens

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Mouse wheel in editor
« Reply #3 on: January 14, 2009, 11:05:59 am »
Works fine for me on debian 32-bit and 64-bit, with C::B from trunk or from my repo.

wxWidgets is 2.8.9 from apt.wxwidgets.org

Offline DrewBoo

  • Multiple posting newcomer
  • *
  • Posts: 110
Re: Mouse wheel in editor
« Reply #4 on: January 14, 2009, 04:54:34 pm »
since several days mouse wheel doesn't work any more in editor. It work only if cursor is over scroll bar, which is not comfortable. It also work on other widgets (combobox, ...).

I am experiencing the same problem on my Solaris work machine.  Any mouse wheel movement over the editor itself does nothing.  I can check my home Ubuntu machine later.

This seems like a pretty high-priority bug.  I'm rather used to my mouse buttons working.    :?

The problem started when I updated to r5397.  The previous build from a few weeks ago didn't show this problem.  I've been using wxWidgets 2.8.9 for a while, so I don't suspect that's the cause.

It's probably worth noting that scintilla changebar functionality was added during this time.



« Last Edit: January 14, 2009, 07:13:27 pm by DrewBoo »

Offline Ceniza

  • Developer
  • Lives here!
  • *****
  • Posts: 1441
    • CenizaSOFT
Re: Mouse wheel in editor
« Reply #5 on: January 14, 2009, 07:04:13 pm »
It also works fine here in Gentoo 64 bits.

BTW, have you noticed you can also right click on the editor and drag everywhere? Maybe that feature is old, but I only found about it when testing the new Scintilla.

Offline DrewBoo

  • Multiple posting newcomer
  • *
  • Posts: 110
Re: Mouse wheel in editor
« Reply #6 on: January 14, 2009, 07:17:54 pm »
If it helps, I also have all plugins and all contrib plugins enabled.

Edit:  I tried codeblocks --safe-mode and the problem persists.  Not a plugin thing.

Left, right, and middle clicks work as expected.  It's just the mouse wheel signals that get eaten by the editor window.

It looks like someone left a (sparse) bug report: http://developer.berlios.de/bugs/?func=detailbug&bug_id=15054&group_id=5358

FWIW, my wxWidgets-2.8.9 is built against gtk-2.6.  Perhaps the conflict is between that new scintilla and the (relatively old) gtk-2.6
« Last Edit: January 14, 2009, 07:46:39 pm by DrewBoo »

Offline jens

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Mouse wheel in editor
« Reply #7 on: January 14, 2009, 10:18:31 pm »
BTW, have you noticed you can also right click on the editor and drag everywhere? Maybe that feature is old, but I only found about it when testing the new Scintilla.

That should be done my the drag/scroll-plugin.

It's probably worth noting that scintilla changebar functionality was added during this time.
The changebar-feature should not be able to affect the mousewheel, but you can try what happens if you disable it with unchecking "Settings -> Editor... -> Margins and caret -> Use changebar".

The part affecting the mousewheelevent in scintilla did also not change with the scintiulla update as far as I know.


If you use a self-compiled C::B it would be interesting to see what happens if the plugins are not even loaded (--safe-mode only disables them).
You can run "make uninstall" to remove all the C::B stuf (the configuration will remain) and use "./configure" without the parameter "--with-contrib-plugins=...".
And maybe you get some usefull error-messages if you change the first line in OnInit() (app.cpp about line 468) from "wxLog::EnableLogging(true);" to "wxLog::EnableLogging(true);" before recompiling (there are some messages that are "normal").

since several days mouse wheel doesn't work any more in editor. It work only if cursor is over scroll bar, which is not comfortable. It also work on other widgets (combobox, ...).
Font size change is also disable if ctrl pressed.
What happens in the ThreadSearch preview window or in the SyntaxHighlighting example window ?


By the way:
It would be of interest if anything else was updated the same time on the systems that have these problems.

Offline DrewBoo

  • Multiple posting newcomer
  • *
  • Posts: 110
Re: Mouse wheel in editor
« Reply #8 on: January 14, 2009, 10:56:49 pm »
Update:  I rebuilt wxWidgets-2.8.9 using gtk-2.12 instead of gtk-2.6.  The same bug exists.   :(

The changebar-feature should not be able to affect the mousewheel, but you can try what happens if you disable it with unchecking "Settings -> Editor... -> Margins and caret -> Use changebar".

Good idea.  I tried it and the same bug exists.   :(

It would be of interest if anything else was updated the same time on the systems that have these problems.

My system is heavily locked down.  It's one of those Solaris ZFS file systems where my whole company is effectively running from one giant networked hard drive.

In this setup, new libraries are installed in their own unique directories, so it's unlikely that the libraries I've been pointing to have changed.

I will be able to confirm this when I have the time to spare by pulling down an older build from svn.  I could even narrow the issue down to the specific checkin, but that will be tedious.  I may have to demand animated sparkles next to my name on this forum...if I'm right about this, of course.


My bet is that some specific combination of libraries became poisonous recently without the majority of users seeing the problem.  Jens (or anyone), do you know offhand if command-line svn leaves any kind of log where I could see what revision number my prior pull was from?  That would help narrow down the search. 


 

Offline jens

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Mouse wheel in editor
« Reply #9 on: January 15, 2009, 07:31:44 am »
Another question:

Can you scroll the starthere-page?

If yes, could you put some debug-statements ("printf"'s for example) inside wxScintillas "OnMouseWheel"-handler, to see if it is reached ?
"src/sdk/wxscintilla/src/wxscintilla.cpp:3835" (OnMouseWheel) and "src/sdk/wxscintilla/src/ScintillaWX.cpp:855" (Do MouseWheel)

Did you try tu do a "make clean" or a "make distclean" before building ?

And did you run  "./bootstrap" with the new sources, because some (many ?) of the "Makefile.am"' are changed ?

Offline DrewBoo

  • Multiple posting newcomer
  • *
  • Posts: 110
Re: Mouse wheel in editor
« Reply #10 on: January 15, 2009, 04:26:21 pm »
Another question:

Can you scroll the starthere-page?

That page doesn't present any scrollbars to me, even when the window is small enough that scrollbars would make sense.  So no...but I'm not sure I ever could.

What I have noticed is that the mouse wheel works in all windows except scintilla -- The actual editor window, the code preview pane in threaded search, the sample code in the Configure Syntax Highlighting dialog...those won't scroll with the mouse wheel unless the mouse cursor is above the scrollbar itself, not the scintilla window.


Did you try tu do a "make clean"

On my second attempt, yes.

or a "make distclean" before building ?

Third attempt.

And did you run  "./bootstrap" with the new sources, because some (many ?) of the "Makefile.am"' are changed ?

Fourth.  :)

Offline jens

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Mouse wheel in editor
« Reply #11 on: January 15, 2009, 05:19:14 pm »
What about this:
If yes, could you put some debug-statements ("printf"'s for example) inside wxScintillas "OnMouseWheel"-handler, to see if it is reached ?
"src/sdk/wxscintilla/src/wxscintilla.cpp:3835" (OnMouseWheel) and "src/sdk/wxscintilla/src/ScintillaWX.cpp:855" (Do MouseWheel)
Starthere-page with scrollbars as attachment.


[attachment deleted by admin]
« Last Edit: January 15, 2009, 05:36:14 pm by jens »

Offline DrewBoo

  • Multiple posting newcomer
  • *
  • Posts: 110
Re: Mouse wheel in editor
« Reply #12 on: January 16, 2009, 05:11:04 pm »
could you put some debug-statements

I still intend to, Jens...this is my work machine that's showing the problem so my experiment time is limited.

Regarding the Start Here page...your image looks familiar, but with the latest build I see no scrollbars.

Oh, and for good measure, I pulled all the source into a fresh empty directory to do a pure-build-from-scratch.  That didn't fix anything.

Offline jens

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: Mouse wheel in editor
« Reply #13 on: January 16, 2009, 05:26:43 pm »
Did you also try to install C::B to another directory tree (using a different prefix when running ./configure) ?

I know these are many things to try and I'm grateful for your patience, but I'd really like to find (and hopefully fix) the issue.

And I did not find a way to reproduce it.

Offline DrewBoo

  • Multiple posting newcomer
  • *
  • Posts: 110
Re: Mouse wheel in editor
« Reply #14 on: January 16, 2009, 09:04:31 pm »
Found it!   :D

With a lot of guidance from you, Jens, I have the bug pegged!

Ready?

Code goes in...

Code: [Select]
void wxScintilla::OnMouseWheel (wxMouseEvent& evt)
{
    // prevent having an event queue with wheel events that cannot be processed
    // reasonably fast (see ticket #9057)
    printf( "OnMouseWheel\n" );
    printf( "Checking %d <= %d\n", m_lastWheelTimestamp, evt.GetTimestamp() );
    if ( m_lastWheelTimestamp <= evt.GetTimestamp() )
    {
        printf( "OnMouseWheel - Processed\n" );
        m_lastWheelTimestamp = m_stopWatch.Time();
        m_swx->DoMouseWheel(evt.GetWheelRotation(),
                            evt.GetWheelDelta(),
                            evt.GetLinesPerAction(),
                            evt.ControlDown(),
                            evt.IsPageScroll());
        m_lastWheelTimestamp = m_stopWatch.Time() - m_lastWheelTimestamp;
        m_lastWheelTimestamp += evt.GetTimestamp();
    }
}

Text comes out...


OnMouseWheel
Checking 0 <= -521831849
OnMouseWheel
Checking 0 <= -521826089
OnMouseWheel
Checking 0 <= -521824121


You can see that the timer is incrementing...it's just negative.

Now here's a quote from http://docs.wxwidgets.org/trunk/classwx_event.html on that function (emphasis mine):

Quote
long wxEvent::GetTimestamp() const

Gets the timestamp for the event.

The timestamp is the time in milliseconds since some fixed moment (not necessarily the standard Unix Epoch, so only differences between the timestamps and not their absolute values usually make sense).

So, the bug's in wxScintilla.  And sure enough, if I initialize m_lastWheelTimestamp to std::numeric_limits<long>::min() instead of the absolute 0 everything works again.