axe.win32maxgui version 28 released

BlitzMax Forums/BlitzMax GUI Programming/axe.win32maxgui version 28 released

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...

	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.