MaxGui: Clear Listbox still broken? (win32)
BlitzMax Forums/BlitzMax Programming/MaxGui: Clear Listbox still broken? (win32)
| ||
| ModuleInfo "History: 1.16 Release" ModuleInfo "History: fixed Win32ListBox::clear() to also remove tooltips" I still get the same bug with the tooltips explained here... http://www.blitzbasic.com/Community/posts.php?topic=60517
Strict
Local window:TGadget
Local button:TGadget
Global Listbox:TGadget
Local combobox:TGadget
Local dfa_mode:Int = 0
Const MAXKIDSFOLGEN=29
Const MAXFOLGEN=130
window=CreateWindow("My Window",30,20,200,200)
button=CreateButton("Change Listbox",4,100,100,24,window,BUTTON_OK)
Listbox=CreateListBox(4,4,120,80,window)
Create_Listbox(dfa_mode)
While WaitEvent()
Select EventID()
Case EVENT_GADGETACTION
Print "eventdata="+EventData()
Case EVENT_WINDOWCLOSE
End
End Select
Select EventSource()
Case Button
dfa_mode=Not dfa_mode
Create_Listbox(dfa_mode)
End Select
Wend
Function Create_Listbox(cfg_dfamode:Int)
' Create a fresh Listbox according to dfamode
ClearGadgetItems Listbox ' clean all mess up
Select cfg_dfamode
Case 0
For Local i:Int=0 To MAXFOLGEN-1
AddGadgetItem ListBox, "MODE 1 - Item "+i, GADGETITEM_NORMAL, 0, "MODE1 Helptext "+i
Next
Case 1
For Local j:Int=0 To MAXKIDSFOLGEN-1
AddGadgetItem ListBox, "MODE 2 - Item "+j, GADGETITEM_NORMAL, 0, "MODE2 Helptext "+j
Next
End Select
End Function
|
| ||
| Skid, looks like the bug is still there. If you scroll down when you have switched items and hover your mouse over the items, the final part of the tip is broken (e.g. variable j) even though the start (i.e. MODE1/MODE 2) is OK. Weird.... |
| ||
| I have a feeling that for some reason this wasn't going to arrive until a full update, rather than just a syncmods? (No idea why though...) |
| ||
| Mark, it's in the release notes. ELSE I would not have posted this again. |
| ||
| Looking at the Win32 C++ code it appears that the tooltips for listboxs need more work before they are usable. The main problem is that the item index+1 is used for the toolinfo id. This means inserting items can overwrite an existing id. The clear listbox is not working as the loop removes item zero each time. As the gadget index is used for the tips it just removes tip 0 many times. The Win32ListBox remove function also is calculating the tip id from index not index+1 as is done in the other functions. I have also noticed after insert items that the tips can get out of sync after the listbox slider is used. |
| ||
| I deadly need a fix for this. This was reported a month ago and I hoped it would be easy to fix with my example code provided. As I don't know C++, I feel kind of helpless. :( |
| ||
| I have made some test changes to win32listbox.cpp. They seem to fix the problems. I still have one bug to hunt down, and some more testing to do. I will finish this off in the Morning as it is 2:44AM. I need this to work as well, but it is not a simple fix as it may seem! All the tips need to be moved if inserting or removing them. |
| ||
| Thanks a lot for looking into this!!! |
| ||
| Hopefully fixed, try a syncmods for fix. |
| ||
| Skidracer: Thanks for the updates! Your fix uses lParam in the LVITEM structure to store the tip id. As windows uses lParam for sorting lists, this will stop any Windows API sort on the list items from working. This is a shame as I had just got functions to sort listboxs working. The fix to this I have written keeps the tips insync with the listbox items when an item is inserted or removed. It does not need lParam. Do you want me to email a copy to you? |
| ||
| just post here Ziltch, thanks |
| ||
| Here are the modified functions It looks the indents have got messed up a bit! : Edit fixed code indents If you use this I can post the sorting code I have worked on. Thanks |
| ||
| Tooltips are working correctly now. (after sync) Don't know for the sorting issue though... Thanks again everyone! |
| ||
| Ziltch, I do intend to incorporate your fix and will bump this thread soon to discuss sorting. Hopefully current fix will suffice for now. |