[Done] Touchpad scrolling issues in XP
[Done] Touchpad scrolling issues in XP
This is the same bug I reported two months ago while running PureBasic on my notebook with Vista. I experience the same problem under Windows XP and only in PureBasic.
I also use Notepad++ which uses Scintilla and does not experience this issue.
My notebook uses the "Alps Pointing-Device" driver for the touchpad.
I also use Notepad++ which uses Scintilla and does not experience this issue.
My notebook uses the "Alps Pointing-Device" driver for the touchpad.
Sorry. I forgot to link the other post.
http://www.purebasic.fr/english/viewtopic.php?t=32251
The problem is that the touchpad scroll area does not work on tabs other than the first one when the mouse cursor is within the code area. Scrolling works fine when the cursor is on the tabs, the scroll bar, or anywhere else when a tab other than the first is active, but not in the code area.
http://www.purebasic.fr/english/viewtopic.php?t=32251
The problem is that the touchpad scroll area does not work on tabs other than the first one when the mouse cursor is within the code area. Scrolling works fine when the cursor is on the tabs, the scroll bar, or anywhere else when a tab other than the first is active, but not in the code area.
I found the source of the problem. My desktop which uses a real mouse sends WM_MOUSEWHEEL messages while my notebook sends WM_VSCROLL with its virtual scrollwheel. I'm assuming that this is not handled correctly by the IDE.
I also noticed that I can scroll in the other tabs only if the first tab does not have a scrollbar.
I also noticed that I can scroll in the other tabs only if the first tab does not have a scrollbar.
Scrolling works fine with a Scintilla gadget inside of a panel. But this is not an accurate comparison. In the IDE the tab that the Scintilla gadget is first visible in always scrolls fine. It's in all other tabs where it doesn't work.
What does the IDE do to display the same Scintilla gadget across multiple tabs? I need to test that.
What does the IDE do to display the same Scintilla gadget across multiple tabs? I need to test that.
Here is a list of behavior:
Scrolling works fine in other tabs only if the first tab does not have a vertical scrollbar (the code is very short).
When the first tab has a scrollbar the other tabs will not respond to vertical scrolling when the mouse is inside the Scintilla gadget-- but it WILL scroll if the mouse is within the PureBasic window and not within the bounds of the Scintilla gadget.
The tab that always scrolls is first in the list unless it is moved to another position. But it is always the first tab (not necessarily the tab in the first position) that works.
Scrolling works fine in other tabs only if the first tab does not have a vertical scrollbar (the code is very short).
When the first tab has a scrollbar the other tabs will not respond to vertical scrolling when the mouse is inside the Scintilla gadget-- but it WILL scroll if the mouse is within the PureBasic window and not within the bounds of the Scintilla gadget.
The tab that always scrolls is first in the list unless it is moved to another position. But it is always the first tab (not necessarily the tab in the first position) that works.
I've found that messages are being received by PureBasic but are being swallowed by the first Scintilla gadget that has a scrollbar. If the first gadget has no scrollbar but the second two do then only the second gadget will scroll. If you try scrolling in any of the first or the third gadget only the second gadget will scroll (even if it's not visible).
I don't know what the PureBasic IDE is doing differently but I can't reproduce this by hiding/unhiding or changing which gadget is in the foreground.
The example I wrote to test works fine.
I don't know what the PureBasic IDE is doing differently but I can't reproduce this by hiding/unhiding or changing which gadget is in the foreground.
The example I wrote to test works fine.
Code: Select all
Procedure ScintillaCallBack(Gadget, *scinotify.SCNotification)
EndProcedure
InitScintilla("Scintilla.dll")
OpenWindow(0,0,0,320,240,"")
CreateGadgetList(WindowID(0))
PanelID=PanelGadget(#PB_Any,0,0,320,240)
AddGadgetItem(PanelID, -1, "Panel 1")
ScintillaID1=ScintillaGadget(#PB_Any,0,0,300,200,@ScintillaCallBack())
AddGadgetItem(PanelID, -1, "Panel 2")
ScintillaID2=ScintillaGadget(#PB_Any,0,0,300,200,@ScintillaCallBack())
CloseGadgetList()
; HideGadget(ScintillaID2,1)
Repeat
Select EventGadget()
Case PanelID
Select EventType()
Case #PB_EventType_LeftClick
Select GetGadgetState(PanelID)
Case 0 ; panel 0
; HideGadget(ScintillaID1,0)
; HideGadget(ScintillaID2,1)
SetForegroundWindow_(GadgetID(ScintillaID1))
Case 1 ; panel 1
; HideGadget(ScintillaID2,0)
; HideGadget(ScintillaID1,1)
SetForegroundWindow_(GadgetID(ScintillaID2))
EndSelect
EndSelect
EndSelect
Until WaitWindowEvent()=#WM_CLOSE