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