mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-31 04:52:35 +02:00
fixed a mem violation in gtk intf paint msg conversion
git-svn-id: trunk@5605 -
This commit is contained in:
parent
1896e671c2
commit
67dd913236
@ -291,14 +291,20 @@ end;
|
||||
|
||||
function gtkactivateCB(widget: PGtkWidget; data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMessage;
|
||||
Mess: TLMActivate;
|
||||
begin
|
||||
Result:= True;
|
||||
EventTrace('activate', data);
|
||||
|
||||
if LockOnChange(PgtkObject(Widget),0) > 0 then Exit;
|
||||
|
||||
FillChar(Mess,SizeOf(Mess),#0);
|
||||
Mess.Msg := LM_ACTIVATE;
|
||||
Mess.Active:=true;
|
||||
Mess.Minimized:=false;
|
||||
Mess.ActiveWindow:=0;
|
||||
if GtkWidgetIsA(Widget,GTK_WINDOW_TYPE) then
|
||||
Mess.ActiveWindow:=HWnd(PGTKWindow(Widget)^.focus_widget);
|
||||
Mess.Result := 0;
|
||||
DeliverMessage(Data, Mess);
|
||||
//DebugLn('gtkactivateCB ',TWinControl(Data).Name,':',TWinControl(Data).ClassName);
|
||||
@ -458,7 +464,6 @@ function gtkfrmactivateAfter(widget: PGtkWidget; Event : PgdkEventFocus;
|
||||
data: gPointer) : GBoolean; cdecl;
|
||||
var
|
||||
Mess : TLMActivate;
|
||||
Status : GBoolean;
|
||||
{$IFDEF VerboseFocus}
|
||||
LCLObject: TObject;
|
||||
CurFocusWidget: PGtkWidget;
|
||||
@ -466,6 +471,7 @@ var
|
||||
begin
|
||||
EventTrace('activate after', data);
|
||||
if (Widget=nil) or (Event=nil) then ;
|
||||
FillChar(Mess,SizeOf(Mess),#0);
|
||||
{$IFDEF VerboseFocus}
|
||||
write('gtkfrmactivateAfter Widget=',HexStr(Cardinal(Widget),8),' Event^.theIn=',Event^.theIn);
|
||||
LCLObject:=TObject(data);
|
||||
@ -498,13 +504,15 @@ begin
|
||||
|
||||
UpdateMouseCaptureControl;
|
||||
Mess.Msg := LM_ACTIVATE;
|
||||
Status := DeliverPostMessage(Data, Mess);
|
||||
Mess.Active:=true;
|
||||
Mess.Minimized:=false;
|
||||
Mess.ActiveWindow:=0;
|
||||
if GtkWidgetIsA(Widget,GTK_WINDOW_TYPE) then
|
||||
Mess.ActiveWindow:=HWnd(PGTKWindow(Widget)^.focus_widget);
|
||||
Mess.Result := 0;
|
||||
DeliverPostMessage(Data, Mess);
|
||||
|
||||
{$ifdef GTK2}
|
||||
Result := CallBackDefaultReturn;
|
||||
{$Else}
|
||||
Result := Status;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function gtkfrmdeactivateAfter( widget: PGtkWidget; Event : PgdkEventFocus;
|
||||
@ -3103,6 +3111,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.235 2004/06/28 15:45:48 mattias
|
||||
fixed a mem violation in gtk intf paint msg conversion
|
||||
|
||||
Revision 1.234 2004/06/24 20:49:10 marc
|
||||
* Applied patch from Ido
|
||||
|
||||
|
@ -846,12 +846,12 @@ begin
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
function GtkPaintMessageToPaintMessage(const GtkPaintMsg: TLMGtkPaint;
|
||||
function GtkPaintMessageToPaintMessage(var GtkPaintMsg: TLMGtkPaint;
|
||||
FreeGtkPaintMsg: boolean): TLMPaint;
|
||||
|
||||
Converts a LM_GtkPaint message to a LM_PAINT message
|
||||
------------------------------------------------------------------------------}
|
||||
function GtkPaintMessageToPaintMessage(const GtkPaintMsg: TLMGtkPaint;
|
||||
function GtkPaintMessageToPaintMessage(var GtkPaintMsg: TLMGtkPaint;
|
||||
FreeGtkPaintMsg: boolean): TLMPaint;
|
||||
var
|
||||
PS : PPaintStruct;
|
||||
@ -868,7 +868,7 @@ begin
|
||||
Result.PaintStruct:=PS;
|
||||
Result.Result:=0;
|
||||
if FreeGtkPaintMsg then
|
||||
GtkPaintMsg.Data.Free;
|
||||
FreeThenNil(GtkPaintMsg.Data);
|
||||
end;
|
||||
|
||||
procedure FinalizePaintMessage(Msg: PLMessage);
|
||||
@ -6805,6 +6805,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.286 2004/06/28 15:45:48 mattias
|
||||
fixed a mem violation in gtk intf paint msg conversion
|
||||
|
||||
Revision 1.285 2004/06/28 09:48:46 mattias
|
||||
added valgrind flag to compiler options
|
||||
|
||||
|
@ -329,7 +329,7 @@ function GetComboBoxItemIndex(ComboBox: TComboBox): integer;
|
||||
procedure SetComboBoxItemIndex(ComboBox: TComboBox; Index: integer);
|
||||
|
||||
// paint messages
|
||||
function GtkPaintMessageToPaintMessage(const GtkPaintMsg: TLMGtkPaint;
|
||||
function GtkPaintMessageToPaintMessage(var GtkPaintMsg: TLMGtkPaint;
|
||||
FreeGtkPaintMsg: boolean): TLMPaint;
|
||||
procedure FinalizePaintMessage(Msg: PLMessage);
|
||||
procedure FinalizePaintTagMsg(Msg: PMsg);
|
||||
|
@ -7347,6 +7347,7 @@ var
|
||||
PaintDC: HDC;
|
||||
GtkPaintData: TLMGtkPaintData;
|
||||
DCOrigin: TPoint;
|
||||
OldGtkPaintMsg: TLMGtkPaint;
|
||||
begin
|
||||
(* MG: old trick. Not used anymore, but it might be, that someday there
|
||||
will be component, that works better with this, so it is kept.
|
||||
@ -7398,10 +7399,11 @@ var
|
||||
end;
|
||||
{$ENDIF}
|
||||
if AMessage.Msg=LM_GtkPAINT then begin
|
||||
GtkPaintData:=TLMGtkPaintData(AMessage.wParam);
|
||||
OldGtkPaintMsg:=TLMGtkPaint(AMessage);
|
||||
GtkPaintData:=OldGtkPaintMsg.Data;
|
||||
// convert LM_GtkPAINT to LM_PAINT
|
||||
AMessage := TLMessage(GtkPaintMessageToPaintMessage(
|
||||
TLMGtkPaint(AMessage), True));
|
||||
TLMGtkPaint(AMessage), False));
|
||||
{$IfNDef GTK2}
|
||||
if (GtkPaintData<>nil) and (not GtkPaintData.RepaintAll) then begin
|
||||
PaintDC:=TLMPaint(AMessage).DC;
|
||||
@ -7411,6 +7413,7 @@ var
|
||||
Right-DCOrigin.X,Bottom-DCOrigin.Y);
|
||||
end;
|
||||
{$EndIf}
|
||||
GtkPaintData.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -8697,6 +8700,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.353 2004/06/28 15:45:48 mattias
|
||||
fixed a mem violation in gtk intf paint msg conversion
|
||||
|
||||
Revision 1.352 2004/06/09 20:51:45 vincents
|
||||
implemented basic clipboard support for win32
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user