Here are my tweaks for this weekend - these fixes weren't in the version I e-mailed to Skidracer...
5. Fixed Panel Pixmap Changing Bug
Replace TWindowsPanel.SetPixmap() with...
6. Fix panels events problems (inc. recurring EVENT_MOUSEMOVE, EVENT_MOUSEWHEEL being generated on all panels regardless of whether they were made active or not)
Add the the following declaration immediately beneath the other field declarations in TWindowsPanel:
I've been trying to get Tabbers to redraw properly after being resized, but I'm stumped. If you compile the IDE, the tabs only show up when you roll your mouse over the area where they should be, and doing any sort of resizing (either by resizing the window, or using the make-shift splitter) makes their tabs disappear.
5. Fixed Panel Pixmap Changing Bug
Replace TWindowsPanel.SetPixmap() with...
Method SetPixmap(pixmap:TPixmap,flags) If _bitmap DeleteObject _bitmap;_bitmap = 0 If pixmap If pixmap.format=PF_RGBA8888 Or pixmap.format=PF_BGRA8888 _bitmap=BitmapFromPixmap32( pixmap ) EndIf If _bitmap _hasalpha=True Else _bitmap=BitmapFromPixmap24( pixmap ) _hasalpha=False EndIf _bitmapflags=flags _bitmapwidth=pixmap.width _bitmapheight=pixmap.height EndIf InvalidateRect _hwnd,Null,True End Method
6. Fix panels events problems (inc. recurring EVENT_MOUSEMOVE, EVENT_MOUSEWHEEL being generated on all panels regardless of whether they were made active or not)
Add the the following declaration immediately beneath the other field declarations in TWindowsPanel:
Field intOldCursorPos%[]Replace the Case WM_MOUSEWHEEL and Default blocks within the TWindowsPanel.WndProc() Select...Case block with:
Case WM_MOUSEMOVE If intOldCursorPos.length = 2 And intOldCursorPos[0] = (lp&$ffff) And intOldCursorPos[1] = (lp Shr 16) Then Return 0 Else intOldCursorPos = [lp&$ffff, lp Shr 16] If _active Then bbSystemEmitOSEvent hwnd,msg,wp,lp,Self;Return 0 Case WM_MOUSEWHEEL Local p[2] p[POINT_X]=lp&$ffff p[POINT_Y]=lp Shr 16 If _active Then bbSystemEmitOSEvent hwnd,WM_MOUSEWHEEL,wp,(p[POINT_Y] Shl 16)|(p[POINT_X]),Self;Return 0 Default If _active Then bbSystemEmitOSEvent hwnd,msg,wp,lp,Self;Return 0
I've been trying to get Tabbers to redraw properly after being resized, but I'm stumped. If you compile the IDE, the tabs only show up when you roll your mouse over the area where they should be, and doing any sort of resizing (either by resizing the window, or using the make-shift splitter) makes their tabs disappear.