gtk2 intf: added style-after event - no implementation yet

git-svn-id: trunk@23085 -
This commit is contained in:
mattias 2009-12-11 19:58:30 +00:00
parent 73cd49e50b
commit 6cc37ddac3
3 changed files with 30 additions and 11 deletions

View File

@ -3394,15 +3394,16 @@ begin
LM_PAINT :
begin
//DebugLn(['TGtkWidgetSet.SetCallback ',DbgSName(ALCLObject)]);
//DebugLn(['TGtkWidgetSet.SetCallback ',DbgSName(ALCLObject),' ',GetWidgetDebugReport(PGtkWIdget(gfixed))]);
{$Ifdef GTK1}
//ConnectSenderSignal(gFixed, 'draw', @gtkDrawCB);
ConnectSenderSignalAfter(gFixed, 'draw', @gtkDrawAfterCB);
{$EndIf}
{$Ifdef GTK2}
ConnectSenderSignal(gFixed, 'expose-event', @GTKExposeEvent);
ConnectSenderSignal(gFixed,'expose-event', @GTKExposeEvent);
ConnectSenderSignalAfter(gFixed,'style-set', @GTKStyleChangedAfter);
{$EndIf}
ConnectSenderSignalAfter(gFixed, 'expose-event', @GTKExposeEventAfter);
ConnectSenderSignalAfter(gFixed,'expose-event', @GTKExposeEventAfter);
ConnectSenderSignal(gFixed,'style-set', @GTKStyleChanged);
end;

View File

@ -153,3 +153,25 @@ begin
Result:=not Result; // message handled by LCL, stop processing
end;
procedure GTKStyleChangedAfter(Widget: PGtkWidget; previous_style : PGTKStyle;
Data: Pointer); cdecl;
begin
if (Widget=nil) or (Data=nil) or (previous_style=nil) then ;
{$IFDEF EventTrace}
EventTrace('style-set', nil);
{$ENDIF}
{ Note:
This event is called for many widgets but not for all.
It is called on creation and called when the theme changes.
The resizing should occur when all styles were updated by the gtk.
The gtk itself uses size messages via queue.
Maybe the solution is to use g_idle_add for the top level form and resize.
}
//debugln('style-set after ',DbgSName(TWinControl(Data)));
//LCLObject.InvalidateClientRectCache(False);
{$IFNDEF NewAutoSize}
{$ENDIF}
end;

View File

@ -51,13 +51,9 @@ uses
LMessages, LCLProc, LCLStrConsts, LCLIntf, LCLType, DynHashArray, Maps, Masks,
GraphType, GraphMath, Graphics, GTKWinApiWindow, LResources, Controls, Forms,
Buttons, Menus, StdCtrls, ComCtrls, ExtCtrls, Dialogs, ExtDlgs,
FileUtil, ImgList, GtkFontCache, GTKGlobals, gtkDef, GtkExtra, GtkDebug;
FileUtil, ImgList, GtkFontCache, GTKGlobals, gtkDef, GtkExtra, GtkDebug,
gtkproc; // Remove when separation is complete
{
Callbacks for events
gtk2callback.inc headers
}
const
gtkevent_window_state_event = 'window-state-event';
@ -67,6 +63,8 @@ function GTKWindowStateEventCB(widget: PGtkWidget;
function gtkMouseWheelCB(widget: PGtkWidget; event: PGdkEventScroll;
data: gPointer): GBoolean; cdecl;
procedure GTKStyleChangedAfter(Widget: PGtkWidget; previous_style : PGTKStyle;
Data: Pointer); cdecl;
{ Miscelaneus Widget functions }
@ -75,8 +73,6 @@ procedure WidgetSetSelLength(const Widget: PGtkWidget; NewLength: integer);
implementation
uses gtkproc; // Remove when separation is complete
{ Callbacks for events }
{$include gtk2callback.inc}