From 9331f9ce12eb0b923d71ef145dffeb40a17bc987 Mon Sep 17 00:00:00 2001 From: micha Date: Sat, 11 Sep 2004 14:54:01 +0000 Subject: [PATCH] convert LM_BTNDEFAULT_CHANGED message to interface method git-svn-id: trunk@5970 - --- lcl/include/buttons.inc | 5 ++++- lcl/interfaces/gtk/gtkobject.inc | 18 +++--------------- lcl/interfaces/gtk/gtkwsbuttons.pp | 18 +++++++++++++++++- lcl/interfaces/win32/win32object.inc | 12 +++--------- lcl/interfaces/win32/win32wsbuttons.pp | 17 ++++++++++++++++- lcl/lmessages.pp | 7 +++---- lcl/widgetset/wsbuttons.pp | 14 +++++++++++++- 7 files changed, 59 insertions(+), 32 deletions(-) diff --git a/lcl/include/buttons.inc b/lcl/include/buttons.inc index cfaef8f044..86b6d22c0d 100644 --- a/lcl/include/buttons.inc +++ b/lcl/include/buttons.inc @@ -61,7 +61,7 @@ end; procedure TCustomButton.DoSendBtnDefault; begin if HandleAllocated then - CNSendMessage(LM_BTNDEFAULT_CHANGED,Self,nil); + TWSButtonClass(WidgetSetClass).DefaultButtonChanged(Self); end; procedure TCustomButton.ControlKeyDown(var Key: Word; Shift: TShiftState); @@ -224,6 +224,9 @@ end; { ============================================================================= $Log$ + Revision 1.35 2004/09/11 14:54:01 micha + convert LM_BTNDEFAULT_CHANGED message to interface method + Revision 1.34 2004/08/26 19:09:34 mattias moved navigation key handling to TApplication and added options for custom navigation diff --git a/lcl/interfaces/gtk/gtkobject.inc b/lcl/interfaces/gtk/gtkobject.inc index 4fe50584ad..34cbf71c2b 100644 --- a/lcl/interfaces/gtk/gtkobject.inc +++ b/lcl/interfaces/gtk/gtkobject.inc @@ -3164,21 +3164,6 @@ begin handle := hwnd(ObjectToGtkObject(Sender)); Case LM_Message of - LM_BTNDEFAULT_CHANGED : - Begin - if (TCustomButton(Sender).Default) - and (GTK_WIDGET_CAN_DEFAULT(pgtkwidget(handle))) then - //gtk_widget_grab_default(pgtkwidget(handle)) - else begin - {DebugLn('LM_BTNDEFAULT_CHANGED ',TCustomButton(Sender).Name,':',Sender.ClassName,' widget can not grab default ', - ' visible=',GTK_WIDGET_VISIBLE(PGtkWidget(Handle)), - ' realized=',GTK_WIDGET_REALIZED(PGtkWidget(Handle)), - ' mapped=',GTK_WIDGET_MAPPED(PGtkWidget(Handle)), - '');} - // gtk_widget_Draw_Default(pgtkwidget(Handle)); //this isn't right but I'm not sure what to call - end; - end; - LM_DESTROY : DestroyLCLComponent(Sender); @@ -8651,6 +8636,9 @@ end; { ============================================================================= $Log$ + Revision 1.552 2004/09/11 14:54:01 micha + convert LM_BTNDEFAULT_CHANGED message to interface method + Revision 1.551 2004/09/11 13:38:37 micha convert LM_BRINGTOFRONT message to interface method NOTE: was only used for tapplication, not from other controls diff --git a/lcl/interfaces/gtk/gtkwsbuttons.pp b/lcl/interfaces/gtk/gtkwsbuttons.pp index a170c7230c..fd408592e6 100644 --- a/lcl/interfaces/gtk/gtkwsbuttons.pp +++ b/lcl/interfaces/gtk/gtkwsbuttons.pp @@ -57,7 +57,8 @@ type protected class procedure SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual; public - class function CreateHandle(const AComponent: TComponent; const AParams: TCreateParams): THandle; override; + class function CreateHandle(const AComponent: TComponent; const AParams: TCreateParams): THandle; override; + class procedure DefaultButtonChanged(const AButton: TCustomButton); override; class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override; class procedure SetText(const AWinControl: TWinControl; const AText: String); override; end; @@ -132,6 +133,21 @@ begin SetCallbacks(PGtkWidget(Result), WidgetInfo); end; +procedure TGtkWSButton.DefaultButtonChanged(const AButton: TCustomButton); +begin + if (AButton.Default) + and (GTK_WIDGET_CAN_DEFAULT(pgtkwidget(AButton.Handle))) then + //gtk_widget_grab_default(pgtkwidget(handle)) + else begin + {DebugLn('LM_BTNDEFAULT_CHANGED ',TCustomButton(Sender).Name,':',Sender.ClassName,' widget can not grab default ', + ' visible=',GTK_WIDGET_VISIBLE(PGtkWidget(Handle)), + ' realized=',GTK_WIDGET_REALIZED(PGtkWidget(Handle)), + ' mapped=',GTK_WIDGET_MAPPED(PGtkWidget(Handle)), + '');} + // gtk_widget_Draw_Default(pgtkwidget(Handle)); //this isn't right but I'm not sure what to call + end; +end; + function TGtkWSButton.GetText(const AWinControl: TWinControl; var AText: String): Boolean; begin // The button text is static, so let the LCL fallback to FCaption diff --git a/lcl/interfaces/win32/win32object.inc b/lcl/interfaces/win32/win32object.inc index 8bcda028dc..360d3000a0 100644 --- a/lcl/interfaces/win32/win32object.inc +++ b/lcl/interfaces/win32/win32object.inc @@ -308,15 +308,6 @@ Begin Exit; End; Case LM_Message of - LM_BTNDEFAULT_CHANGED: - Begin - WindowStyle := Windows.GetWindowLong(Handle, GWL_STYLE) and not (BS_DEFPUSHBUTTON or BS_PUSHBUTTON); - If TCustomButton(Sender).Default then - WindowStyle := WindowStyle or BS_DEFPUSHBUTTON - else - WindowStyle := WindowStyle or BS_PUSHBUTTON; - Windows.SendMessage(Handle, BM_SETSTYLE, WindowStyle, 1); - End; LM_DESTROY: Begin If (Sender Is TWinControl) Or (Sender Is TCommonDialog) Then @@ -2575,6 +2566,9 @@ End; { $Log$ + Revision 1.244 2004/09/11 14:54:01 micha + convert LM_BTNDEFAULT_CHANGED message to interface method + Revision 1.243 2004/09/11 13:38:37 micha convert LM_BRINGTOFRONT message to interface method NOTE: was only used for tapplication, not from other controls diff --git a/lcl/interfaces/win32/win32wsbuttons.pp b/lcl/interfaces/win32/win32wsbuttons.pp index 514c233342..52ba22292c 100644 --- a/lcl/interfaces/win32/win32wsbuttons.pp +++ b/lcl/interfaces/win32/win32wsbuttons.pp @@ -45,6 +45,7 @@ type private protected public + class procedure DefaultButtonChanged(const AButton: TCustomButton); override; end; { TWin32WSBitBtn } @@ -71,6 +72,20 @@ implementation uses Win32Int, InterfaceBase; +{ TWin32WSButton } + +procedure TWin32WSButton.DefaultButtonChanged(const AButton: TCustomButton); +var + WindowStyle: dword; +begin + WindowStyle := Windows.GetWindowLong(AButton.Handle, GWL_STYLE) and not (BS_DEFPUSHBUTTON or BS_PUSHBUTTON); + If AButton.Default then + WindowStyle := WindowStyle or BS_DEFPUSHBUTTON + else + WindowStyle := WindowStyle or BS_PUSHBUTTON; + Windows.SendMessage(AButton.Handle, BM_SETSTYLE, WindowStyle, 1); +end; + { TWin32WSBitBtn } const @@ -346,7 +361,7 @@ initialization // To improve speed, register only classes // which actually implement something //////////////////////////////////////////////////// -// RegisterWSComponent(TCustomButton, TWin32WSButton); + RegisterWSComponent(TCustomButton, TWin32WSButton); RegisterWSComponent(TCustomBitBtn, TWin32WSBitBtn); // RegisterWSComponent(TCustomSpeedButton, TWin32WSSpeedButton); //////////////////////////////////////////////////// diff --git a/lcl/lmessages.pp b/lcl/lmessages.pp index f3e480c444..807cdc2abb 100644 --- a/lcl/lmessages.pp +++ b/lcl/lmessages.pp @@ -74,8 +74,6 @@ const LM_INSERTTOOLBUTTON = LM_ComUser+46; LM_DELETETOOLBUTTON = LM_ComUser+47; - LM_BTNDEFAULT_CHANGED = LM_ComUser+51; - LM_DRAGINFOCHANGED = LM_COMUSER+53; //LM_SETENABLED = LM_COMUSER+54; @@ -873,8 +871,6 @@ begin LM_INSERTTOOLBUTTON :Result:='LM_INSERTTOOLBUTTON'; LM_DELETETOOLBUTTON :Result:='LM_DELETETOOLBUTTON'; - LM_BTNDEFAULT_CHANGED :Result:='LM_BTNDEFAULT_CHANGED'; - LM_DRAGINFOCHANGED :Result:='LM_DRAGINFOCHANGED'; //LM_SETENABLED :Result:='LM_SETENABLED'; @@ -1015,6 +1011,9 @@ end. { $Log$ + Revision 1.86 2004/09/11 14:54:01 micha + convert LM_BTNDEFAULT_CHANGED message to interface method + Revision 1.85 2004/09/11 13:38:37 micha convert LM_BRINGTOFRONT message to interface method NOTE: was only used for tapplication, not from other controls diff --git a/lcl/widgetset/wsbuttons.pp b/lcl/widgetset/wsbuttons.pp index 6dcdf3364e..c41159f90d 100644 --- a/lcl/widgetset/wsbuttons.pp +++ b/lcl/widgetset/wsbuttons.pp @@ -49,10 +49,14 @@ uses WSLCLClasses, WSStdCtrls, WSControls; type + { TWSButton } TWSButton = class(TWSButtonControl) + public + class procedure DefaultButtonChanged(const AButton: TCustomButton); virtual; end; + TWSButtonClass = class of TWSButton; { TWSBitBtn } @@ -74,6 +78,14 @@ implementation // TODO: Can't be virtual abstract ? +{ TWSButton } + +procedure TWSButton.DefaultButtonChanged(const AButton: TCustomButton); +begin +end; + +{ TWSCustomBitBtn } + procedure TWSBitBtn.SetGlyph(const ABitBtn: TCustomBitBtn; const AValue: TBitmap); begin @@ -101,7 +113,7 @@ initialization // To improve speed, register only classes // which actually implement something //////////////////////////////////////////////////// -// RegisterWSComponent(CustomTButton, TWSButton); +// RegisterWSComponent(TCustomButton, TWSButton); // RegisterWSComponent(TCustomBitBtn, TWSBitBtn); // RegisterWSComponent(TCustomSpeedButton, TWSSpeedButton); ////////////////////////////////////////////////////