mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 16:00:28 +02:00
MG: design signals for gtk internal widgets
git-svn-id: trunk@744 -
This commit is contained in:
parent
7184c53542
commit
9824c0cbe1
@ -1963,102 +1963,31 @@ end;
|
|||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
procedure TGTKObject.SetCallback(Msg : LongInt; Sender: TObject);
|
procedure TGTKObject.SetCallback(Msg : LongInt; Sender: TObject);
|
||||||
|
|
||||||
procedure ConnectSignal(const AnObject:gtk_Object; const ASignal: PChar;
|
procedure ConnectSenderSignal(const AnObject:gtk_Object; const ASignal: PChar;
|
||||||
const ACallBackProc: Pointer; const ReqSignalMask: TGdkEventMask;
|
|
||||||
ConnectBefore: boolean);
|
|
||||||
var
|
|
||||||
RealizeHandler, Handler: PGTKHandler;
|
|
||||||
RealizeID, SignalID: guint;
|
|
||||||
WinWidgetInfo: PWinWidgetInfo;
|
|
||||||
MainWidget: PGtkWidget;
|
|
||||||
begin
|
|
||||||
if ACallBackProc <> nil then
|
|
||||||
begin
|
|
||||||
// first loop through the handlers to:
|
|
||||||
// - check if a handler already exists
|
|
||||||
// - Find the realize handler to change data
|
|
||||||
Handler := gtk_object_get_data_by_id (AnObject, gtk_handler_quark);
|
|
||||||
SignalID := gtk_signal_lookup(ASignal, GTK_OBJECT_TYPE(AnObject));
|
|
||||||
RealizeID := gtk_signal_lookup('realize', GTK_OBJECT_TYPE(AnObject));
|
|
||||||
RealizeHandler := nil;
|
|
||||||
|
|
||||||
while (Handler <> nil) do begin
|
|
||||||
with Handler^ do
|
|
||||||
begin
|
|
||||||
// check if signal is already connected
|
|
||||||
if (Id > 0)
|
|
||||||
and (Signal_ID = SignalID)
|
|
||||||
and (Func = TGTKSignalFunc(ACallBackProc))
|
|
||||||
and (func_data = Pointer(Sender))
|
|
||||||
and (((flags and $00200000)=0)=ConnectBefore)
|
|
||||||
then begin
|
|
||||||
Assert(False, Format('Trace:WARNING: [TGTKObject.SetCallback] %s signal <%s> set twice', [Sender.ClassName, ASignal]));
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// look for realize handler
|
|
||||||
if (Id > 0)
|
|
||||||
and (Signal_ID = RealizeID)
|
|
||||||
and (Func = TGTKSignalFunc(@GTKRealizeCB))
|
|
||||||
and (func_data = Pointer(Sender))
|
|
||||||
and ((flags and $00200000)=0) // test if after = false
|
|
||||||
then RealizeHandler := Handler;
|
|
||||||
|
|
||||||
Handler := Next;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// if we are here no handler was defined yet
|
|
||||||
// -> register handler
|
|
||||||
//if (Msg=LM_LBUTTONUP) then writeln('CONNECT ',ReqSignalMask,' Widget=',HexStr(Cardinal(AnObject),8));
|
|
||||||
if ConnectBefore then
|
|
||||||
gtk_signal_connect (AnObject, ASignal,
|
|
||||||
TGTKSignalFunc(ACallBackProc),Sender)
|
|
||||||
else
|
|
||||||
gtk_signal_connect_after(AnObject, ASignal,
|
|
||||||
TGTKSignalFunc(ACallBackProc),Sender);
|
|
||||||
|
|
||||||
// update signal mask which will be set in the realize handler
|
|
||||||
if ReqSignalMask <> 0 then begin
|
|
||||||
MainWidget:=GetMainWidget(PGtkWidget(AnObject));
|
|
||||||
if MainWidget=nil then
|
|
||||||
MainWidget:=PGtkWidget(AnObject);
|
|
||||||
WinWidgetInfo:=GetWidgetInfo(MainWidget,true);
|
|
||||||
WinWidgetInfo^.EventMask:=WinWidgetInfo^.EventMask or ReqSignalMask;
|
|
||||||
end;
|
|
||||||
// -> register realize handler
|
|
||||||
if (RealizeHandler = nil) and (RealizeID<>0) then begin
|
|
||||||
//writeln('REALIZE CONNECT Widget=',HexStr(Cardinal(AnObject),8));
|
|
||||||
gtk_signal_connect(AnObject, 'realize',
|
|
||||||
TGTKSignalFunc(@GTKRealizeCB), Sender);
|
|
||||||
gtk_signal_connect_after(AnObject, 'realize',
|
|
||||||
TGTKSignalFunc(@GTKRealizeAfterCB), Sender);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure ConnectSignal(const AnObject:gtk_Object; const ASignal: PChar;
|
|
||||||
const ACallBackProc: Pointer; const ReqSignalMask: TGdkEventMask);
|
|
||||||
begin
|
|
||||||
ConnectSignal(AnObject,ASignal,ACallBackProc,ReqSignalMask,true);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure ConnectSignalAfter(const AnObject:gtk_Object; const ASignal: PChar;
|
|
||||||
const ACallBackProc: Pointer; const ReqSignalMask: TGdkEventMask);
|
|
||||||
begin
|
|
||||||
ConnectSignal(AnObject,ASignal,ACallBackProc,ReqSignalMask,false);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure ConnectSignal(const AnObject:gtk_Object; const ASignal: PChar;
|
|
||||||
const ACallBackProc: Pointer);
|
const ACallBackProc: Pointer);
|
||||||
begin
|
begin
|
||||||
ConnectSignal(AnObject,ASignal,ACallBackProc,0);
|
ConnectSignal(AnObject,ASignal,ACallBackProc,TComponent(Sender));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure ConnectSignalAfter(const AnObject:gtk_Object; const ASignal: PChar;
|
procedure ConnectSenderSignalAfter(const AnObject:gtk_Object;
|
||||||
const ACallBackProc: Pointer);
|
const ASignal: PChar; const ACallBackProc: Pointer);
|
||||||
begin
|
begin
|
||||||
ConnectSignalAfter(AnObject,ASignal,ACallBackProc,0);
|
ConnectSignalAfter(AnObject,ASignal,ACallBackProc,TComponent(Sender));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ConnectSenderSignal(const AnObject:gtk_Object; const ASignal: PChar;
|
||||||
|
const ACallBackProc: Pointer; const ReqSignalMask: TGdkEventMask);
|
||||||
|
begin
|
||||||
|
ConnectSignal(AnObject,ASignal,ACallBackProc,TComponent(Sender),
|
||||||
|
ReqSignalMask);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ConnectSenderSignalAfter(const AnObject:gtk_Object;
|
||||||
|
const ASignal: PChar; const ACallBackProc: Pointer;
|
||||||
|
const ReqSignalMask: TGdkEventMask);
|
||||||
|
begin
|
||||||
|
ConnectSignalAfter(AnObject,ASignal,ACallBackProc,TComponent(Sender),
|
||||||
|
ReqSignalMask);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -2077,88 +2006,88 @@ begin
|
|||||||
case Msg of
|
case Msg of
|
||||||
LM_SHOWWINDOW :
|
LM_SHOWWINDOW :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'show', @gtkshowCB);
|
ConnectSenderSignal(gObject, 'show', @gtkshowCB);
|
||||||
ConnectSignal(gObject, 'hide', @gtkhideCB);
|
ConnectSenderSignal(gObject, 'hide', @gtkhideCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_DESTROY :
|
LM_DESTROY :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'destroy', @gtkdestroyCB);
|
ConnectSenderSignal(gObject, 'destroy', @gtkdestroyCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_CLOSEQUERY :
|
LM_CLOSEQUERY :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'delete-event', @gtkdeleteCB);
|
ConnectSenderSignal(gObject, 'delete-event', @gtkdeleteCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_ACTIVATE :
|
LM_ACTIVATE :
|
||||||
begin
|
begin
|
||||||
if (Sender is TCustomForm) then
|
if (Sender is TCustomForm) then
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(gObject, 'focus-in-event', @gtkfrmactivate);
|
ConnectSenderSignal(gObject, 'focus-in-event', @gtkfrmactivate);
|
||||||
ConnectSignal(gObject, 'focus-out-event', @gtkfrmdeactivate);
|
ConnectSenderSignal(gObject, 'focus-out-event', @gtkfrmdeactivate);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'activate', @gtkactivateCB);
|
ConnectSenderSignal(gObject, 'activate', @gtkactivateCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_ACTIVATEITEM :
|
LM_ACTIVATEITEM :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'activate-item', @gtkactivateCB);
|
ConnectSenderSignal(gObject, 'activate-item', @gtkactivateCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_CHANGED :
|
LM_CHANGED :
|
||||||
if sender is TTrackBar then
|
if sender is TTrackBar then
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gtk_Object(gtk_range_get_adjustment(GTK_RANGE(gObject))) , 'value_changed', @gtkvaluechanged);
|
ConnectSenderSignal(gtk_Object(gtk_range_get_adjustment(GTK_RANGE(gObject))) , 'value_changed', @gtkvaluechanged);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if sender is TNotebook then
|
if sender is TNotebook then
|
||||||
ConnectSignal(gObject, 'switch-page', @gtkswitchpage)
|
ConnectSenderSignal(gObject, 'switch-page', @gtkswitchpage)
|
||||||
else
|
else
|
||||||
if sender is TCustomCombobox then
|
if sender is TCustomCombobox then
|
||||||
ConnectSignal (PGtkObject(PGtkCombo(gobject)^.entry), 'changed', @gtkchangedCB)
|
ConnectSenderSignal (PGtkObject(PGtkCombo(gobject)^.entry), 'changed', @gtkchangedCB)
|
||||||
else
|
else
|
||||||
if Sender is TCustomMemo then
|
if Sender is TCustomMemo then
|
||||||
ConnectSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))),'changed', @gtkchanged_editbox)
|
ConnectSenderSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))),'changed', @gtkchanged_editbox)
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'changed', @gtkchanged_editbox);
|
ConnectSenderSignal(gObject, 'changed', @gtkchanged_editbox);
|
||||||
|
|
||||||
LM_CLICKED :
|
LM_CLICKED :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'clicked', @gtkclickedCB);
|
ConnectSenderSignal(gObject, 'clicked', @gtkclickedCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_CONFIGUREEVENT :
|
LM_CONFIGUREEVENT :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'configure-event', @gtkconfigureevent);
|
ConnectSenderSignal(gObject, 'configure-event', @gtkconfigureevent);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_DAYCHANGED : //calendar
|
LM_DAYCHANGED : //calendar
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(gObject, 'day-selected', @gtkdaychanged);
|
ConnectSenderSignal(gObject, 'day-selected', @gtkdaychanged);
|
||||||
ConnectSignal(gObject, 'day-selected-double-click', @gtkdaychanged);
|
ConnectSenderSignal(gObject, 'day-selected-double-click', @gtkdaychanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_PAINT :
|
LM_PAINT :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gFixed, 'expose-event', @GTKExposeEvent);
|
ConnectSenderSignal(gFixed, 'expose-event', @GTKExposeEvent);
|
||||||
ConnectSignal(gFixed, 'draw', @GTKDraw);
|
ConnectSenderSignal(gFixed, 'draw', @GTKDraw);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_FOCUS :
|
LM_FOCUS :
|
||||||
begin
|
begin
|
||||||
if (sender is TCustomComboBox) then
|
if (sender is TCustomComboBox) then
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.entry), 'focus-in-event', @gtkFocusCB);
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.entry), 'focus-in-event', @gtkFocusCB);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.entry), 'focus-out-event', @gtkKillFocusCB);
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.entry), 'focus-out-event', @gtkKillFocusCB);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.list), 'focus-in-event', @gtkFocusCB);
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.list), 'focus-in-event', @gtkFocusCB);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.list), 'focus-out-event', @gtkKillFocusCB);
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TCustomComboBox(sender).handle)^.list), 'focus-out-event', @gtkKillFocusCB);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(gObject, 'focus-in-event', @gtkFocusCB);
|
ConnectSenderSignal(gObject, 'focus-in-event', @gtkFocusCB);
|
||||||
ConnectSignal(gObject, 'focus-out-event', @gtkKillFocusCB);
|
ConnectSenderSignal(gObject, 'focus-out-event', @gtkKillFocusCB);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2170,16 +2099,16 @@ begin
|
|||||||
LM_SYSKEYUP:
|
LM_SYSKEYUP:
|
||||||
begin
|
begin
|
||||||
if (Sender is TComboBox) then Begin
|
if (Sender is TComboBox) then Begin
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
||||||
'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
|
'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
||||||
'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
|
'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if (Sender is TCustomForm) then Begin
|
if (Sender is TCustomForm) then Begin
|
||||||
ConnectSignal(PgtkObject(TCustomForm(sender).handle),
|
ConnectSenderSignal(PgtkObject(TCustomForm(sender).handle),
|
||||||
'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
|
'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
|
||||||
ConnectSignal(PgtkObject(TCustomForm(sender).handle),
|
ConnectSenderSignal(PgtkObject(TCustomForm(sender).handle),
|
||||||
'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
|
'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -2187,62 +2116,62 @@ begin
|
|||||||
|
|
||||||
//TODO:listbox is STILL not sendig keypress events even with these lines.
|
//TODO:listbox is STILL not sendig keypress events even with these lines.
|
||||||
|
|
||||||
ConnectSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(
|
ConnectSenderSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(
|
||||||
TCustomListBox(Sender).Handle))), 'key-press-event', @GTKKeyUpDown,
|
TCustomListBox(Sender).Handle))), 'key-press-event', @GTKKeyUpDown,
|
||||||
GDK_KEY_PRESS_MASK);
|
GDK_KEY_PRESS_MASK);
|
||||||
ConnectSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(
|
ConnectSenderSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(
|
||||||
TCustomListBox(Sender).Handle))), 'key-release-event', @GTKKeyUpDown,
|
TCustomListBox(Sender).Handle))), 'key-release-event', @GTKKeyUpDown,
|
||||||
GDK_KEY_RELEASE_MASK);
|
GDK_KEY_RELEASE_MASK);
|
||||||
end;
|
end;
|
||||||
ConnectSignal(gFixed, 'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
|
ConnectSenderSignal(gFixed, 'key-press-event', @GTKKeyUpDown, GDK_KEY_PRESS_MASK);
|
||||||
ConnectSignal(gFixed, 'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
|
ConnectSenderSignal(gFixed, 'key-release-event', @GTKKeyUpDown, GDK_KEY_RELEASE_MASK);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MONTHCHANGED : //calendar
|
LM_MONTHCHANGED : //calendar
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(gObject, 'month-changed', @gtkmonthchanged);
|
ConnectSenderSignal(gObject, 'month-changed', @gtkmonthchanged);
|
||||||
ConnectSignal(gObject, 'prev-month', @gtkmonthchanged);
|
ConnectSenderSignal(gObject, 'prev-month', @gtkmonthchanged);
|
||||||
ConnectSignal(gObject, 'next-month', @gtkmonthchanged);
|
ConnectSenderSignal(gObject, 'next-month', @gtkmonthchanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_PRESSED :
|
LM_PRESSED :
|
||||||
begin
|
begin
|
||||||
Assert(False, 'Trace:OBSOLETE: [TGTKObject.SetCallback] LM_PRESSED');
|
Assert(False, 'Trace:OBSOLETE: [TGTKObject.SetCallback] LM_PRESSED');
|
||||||
ConnectSignal(gObject, 'pressed', @gtkpressedCB);
|
ConnectSenderSignal(gObject, 'pressed', @gtkpressedCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_RELEASED :
|
LM_RELEASED :
|
||||||
begin
|
begin
|
||||||
Assert(False, 'Trace:OBSOLETE: [TGTKObject.SetCallback] LM_RELEASED');
|
Assert(False, 'Trace:OBSOLETE: [TGTKObject.SetCallback] LM_RELEASED');
|
||||||
ConnectSignal(gObject, 'released', @gtkreleasedCB);
|
ConnectSenderSignal(gObject, 'released', @gtkreleasedCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MOVECURSOR :
|
LM_MOVECURSOR :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gFixed, 'move-cursor', @gtkmovecursorCB);
|
ConnectSenderSignal(gFixed, 'move-cursor', @gtkmovecursorCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MOUSEMOVE:
|
LM_MOUSEMOVE:
|
||||||
begin
|
begin
|
||||||
if (sender is TComboBox) then
|
if (sender is TComboBox) then
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
||||||
'motion-notify-event', @GTKMotionNotify, GDK_POINTER_MOTION_MASK);
|
'motion-notify-event', @GTKMotionNotify, GDK_POINTER_MOTION_MASK);
|
||||||
ConnectSignalAfter(
|
ConnectSenderSignalAfter(
|
||||||
PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
PgtkObject(PgtkCombo(TComboBox(sender).handle)^.entry),
|
||||||
'motion-notify-event', @GTKMotionNotifyAfter,
|
'motion-notify-event', @GTKMotionNotifyAfter,
|
||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.button),
|
ConnectSenderSignal(PgtkObject(PgtkCombo(TComboBox(sender).handle)^.button),
|
||||||
'motion-notify-event', @GTKMotionNotify, GDK_POINTER_MOTION_MASK);
|
'motion-notify-event', @GTKMotionNotify, GDK_POINTER_MOTION_MASK);
|
||||||
ConnectSignalAfter(
|
ConnectSenderSignalAfter(
|
||||||
PgtkObject(PgtkCombo(TComboBox(sender).handle)^.button),
|
PgtkObject(PgtkCombo(TComboBox(sender).handle)^.button),
|
||||||
'motion-notify-event', @GTKMotionNotifyAfter,
|
'motion-notify-event', @GTKMotionNotifyAfter,
|
||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
ConnectSignal(gFixed, 'motion-notify-event', @GTKMotionNotify,
|
ConnectSenderSignal(gFixed, 'motion-notify-event', @GTKMotionNotify,
|
||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
ConnectSignalAfter(gFixed, 'motion-notify-event', @GTKMotionNotifyAfter,
|
ConnectSenderSignalAfter(gFixed, 'motion-notify-event', @GTKMotionNotifyAfter,
|
||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2254,25 +2183,25 @@ begin
|
|||||||
begin
|
begin
|
||||||
if (sender is TCustomComboBox) then
|
if (sender is TCustomComboBox) then
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(gObject)^.entry),
|
ConnectSenderSignal(PgtkObject(PgtkCombo(gObject)^.entry),
|
||||||
'button-press-event', @gtkMouseBtnPress, GDK_BUTTON_PRESS_MASK);
|
'button-press-event', @gtkMouseBtnPress, GDK_BUTTON_PRESS_MASK);
|
||||||
ConnectSignalAfter(PgtkObject(PgtkCombo(gObject)^.entry),
|
ConnectSenderSignalAfter(PgtkObject(PgtkCombo(gObject)^.entry),
|
||||||
'button-press-event', @gtkMouseBtnPressAfter,
|
'button-press-event', @gtkMouseBtnPressAfter,
|
||||||
GDK_BUTTON_PRESS_MASK);
|
GDK_BUTTON_PRESS_MASK);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(gObject)^.button) ,
|
ConnectSenderSignal(PgtkObject(PgtkCombo(gObject)^.button) ,
|
||||||
'button-press-event', @gtkMouseBtnPress, GDK_BUTTON_PRESS_MASK);
|
'button-press-event', @gtkMouseBtnPress, GDK_BUTTON_PRESS_MASK);
|
||||||
ConnectSignalAfter(PgtkObject(PgtkCombo(gObject)^.button) ,
|
ConnectSenderSignalAfter(PgtkObject(PgtkCombo(gObject)^.button) ,
|
||||||
'button-press-event', @gtkMouseBtnPressAfter,
|
'button-press-event', @gtkMouseBtnPressAfter,
|
||||||
GDK_BUTTON_PRESS_MASK);
|
GDK_BUTTON_PRESS_MASK);
|
||||||
// Connecting the list seems to cause errors. Maybe we are returning the
|
// Connecting the list seems to cause errors. Maybe we are returning the
|
||||||
// wrong boolean in the callback func
|
// wrong boolean in the callback func
|
||||||
// ConnectSignal(PgtkObject(PgtkCOmbo(gObject)^.list),
|
// ConnectSenderSignal(PgtkObject(PgtkCOmbo(gObject)^.list),
|
||||||
// 'button-press-event', @gtkMouseBtnPress, GDK_BUTTON_PRESS_MASK);
|
// 'button-press-event', @gtkMouseBtnPress, GDK_BUTTON_PRESS_MASK);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
ConnectSignal(gFixed,'button-press-event', @gtkMouseBtnPress,
|
ConnectSenderSignal(gFixed,'button-press-event', @gtkMouseBtnPress,
|
||||||
GDK_BUTTON_PRESS_MASK);
|
GDK_BUTTON_PRESS_MASK);
|
||||||
ConnectSignalAfter(gFixed,'button-press-event', @gtkMouseBtnPressAfter,
|
ConnectSenderSignalAfter(gFixed,'button-press-event', @gtkMouseBtnPressAfter,
|
||||||
GDK_BUTTON_PRESS_MASK);
|
GDK_BUTTON_PRESS_MASK);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2283,27 +2212,27 @@ begin
|
|||||||
begin
|
begin
|
||||||
if (sender is TCustomComboBox) then
|
if (sender is TCustomComboBox) then
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(gObject)^.entry),
|
ConnectSenderSignal(PgtkObject(PgtkCombo(gObject)^.entry),
|
||||||
'button-release-event', @gtkMouseBtnRelease, GDK_BUTTON_RELEASE_MASK);
|
'button-release-event', @gtkMouseBtnRelease, GDK_BUTTON_RELEASE_MASK);
|
||||||
ConnectSignalAfter(PgtkObject(PgtkCombo(gObject)^.entry),
|
ConnectSenderSignalAfter(PgtkObject(PgtkCombo(gObject)^.entry),
|
||||||
'button-release-event', @gtkMouseBtnReleaseAfter,
|
'button-release-event', @gtkMouseBtnReleaseAfter,
|
||||||
GDK_BUTTON_RELEASE_MASK);
|
GDK_BUTTON_RELEASE_MASK);
|
||||||
ConnectSignal(PgtkObject(PgtkCombo(gObject)^.button) ,
|
ConnectSenderSignal(PgtkObject(PgtkCombo(gObject)^.button) ,
|
||||||
'button-release-event', @gtkMouseBtnRelease, GDK_BUTTON_RELEASE_MASK);
|
'button-release-event', @gtkMouseBtnRelease, GDK_BUTTON_RELEASE_MASK);
|
||||||
ConnectSignalAfter(PgtkObject(PgtkCombo(gObject)^.button) ,
|
ConnectSenderSignalAfter(PgtkObject(PgtkCombo(gObject)^.button) ,
|
||||||
'button-release-event', @gtkMouseBtnReleaseAfter,
|
'button-release-event', @gtkMouseBtnReleaseAfter,
|
||||||
GDK_BUTTON_RELEASE_MASK);
|
GDK_BUTTON_RELEASE_MASK);
|
||||||
// Connecting the list seems to cause errors. Maybe we are returning the
|
// Connecting the list seems to cause errors. Maybe we are returning the
|
||||||
// wrong boolean in the callback func
|
// wrong boolean in the callback func
|
||||||
// ConnectSignal(PgtkObject(PgtkCombo(gObject)^.list),
|
// ConnectSenderSignal(PgtkObject(PgtkCombo(gObject)^.list),
|
||||||
// 'button-release-event', @gtkMouseBtnRelease,
|
// 'button-release-event', @gtkMouseBtnRelease,
|
||||||
// GDK_BUTTON_RELEASE_MASK);
|
// GDK_BUTTON_RELEASE_MASK);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
//writeln('AAA1 ',TControl(Sender).Name,':',Sender.ClassName,' Widget=',HexStr(Cardinal(gFixed),8));
|
//writeln('AAA1 ',TControl(Sender).Name,':',Sender.ClassName,' Widget=',HexStr(Cardinal(gFixed),8));
|
||||||
ConnectSignal(gFixed, 'button-release-event', @gtkMouseBtnRelease,
|
ConnectSenderSignal(gFixed, 'button-release-event', @gtkMouseBtnRelease,
|
||||||
GDK_BUTTON_RELEASE_MASK);
|
GDK_BUTTON_RELEASE_MASK);
|
||||||
ConnectSignalAfter(gFixed, 'button-release-event',
|
ConnectSenderSignalAfter(gFixed, 'button-release-event',
|
||||||
@gtkMouseBtnReleaseAfter,GDK_BUTTON_RELEASE_MASK);
|
@gtkMouseBtnReleaseAfter,GDK_BUTTON_RELEASE_MASK);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2311,119 +2240,119 @@ begin
|
|||||||
LM_ENTER :
|
LM_ENTER :
|
||||||
begin
|
begin
|
||||||
if sender is TButton then
|
if sender is TButton then
|
||||||
ConnectSignal(gObject, 'enter', @gtkenterCB)
|
ConnectSenderSignal(gObject, 'enter', @gtkenterCB)
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'focus-in-event', @gtkFocusInNotifyCB); //TODO: check this focus in is mapped to focus
|
ConnectSenderSignal(gObject, 'focus-in-event', @gtkFocusInNotifyCB); //TODO: check this focus in is mapped to focus
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_EXIT :
|
LM_EXIT :
|
||||||
begin
|
begin
|
||||||
if sender is TButton then
|
if sender is TButton then
|
||||||
ConnectSignal(gObject, 'leave', @gtkleaveCB)
|
ConnectSenderSignal(gObject, 'leave', @gtkleaveCB)
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'focus-out-event', @gtkFocusOutNotifyCB);
|
ConnectSenderSignal(gObject, 'focus-out-event', @gtkFocusOutNotifyCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_LEAVE :
|
LM_LEAVE :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'leave', @gtkleaveCB);
|
ConnectSenderSignal(gObject, 'leave', @gtkleaveCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_WINDOWPOSCHANGED: //LM_SIZEALLOCATE, LM_RESIZE :
|
LM_WINDOWPOSCHANGED: //LM_SIZEALLOCATE, LM_RESIZE :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'size-allocate', @gtksize_allocateCB);
|
ConnectSenderSignal(gObject, 'size-allocate', @gtksize_allocateCB);
|
||||||
if gObject<>gFixed then begin
|
if gObject<>gFixed then begin
|
||||||
ConnectSignal(gFixed, 'size-allocate', @gtksize_allocate_client);
|
ConnectSenderSignal(gFixed, 'size-allocate', @gtksize_allocate_client);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_CHECKRESIZE :
|
LM_CHECKRESIZE :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'check-resize', @gtkresizeCB);
|
ConnectSenderSignal(gObject, 'check-resize', @gtkresizeCB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_INSERTTEXT :
|
LM_INSERTTEXT :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'insert-text', @gtkinserttext);
|
ConnectSenderSignal(gObject, 'insert-text', @gtkinserttext);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_DELETETEXT :
|
LM_DELETETEXT :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'delete-text', @gtkdeletetext);
|
ConnectSenderSignal(gObject, 'delete-text', @gtkdeletetext);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_SETEDITABLE :
|
LM_SETEDITABLE :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'set-editable', @gtkseteditable);
|
ConnectSenderSignal(gObject, 'set-editable', @gtkseteditable);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MOVEWORD :
|
LM_MOVEWORD :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'move-word', @gtkmoveword);
|
ConnectSenderSignal(gObject, 'move-word', @gtkmoveword);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MOVEPAGE :
|
LM_MOVEPAGE :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'move-page', @gtkmovepage);
|
ConnectSenderSignal(gObject, 'move-page', @gtkmovepage);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MOVETOROW :
|
LM_MOVETOROW :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'move-to-row', @gtkmovetorow);
|
ConnectSenderSignal(gObject, 'move-to-row', @gtkmovetorow);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_MOVETOCOLUMN :
|
LM_MOVETOCOLUMN :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'move-to-column', @gtkmovetocolumn);
|
ConnectSenderSignal(gObject, 'move-to-column', @gtkmovetocolumn);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_KILLCHAR :
|
LM_KILLCHAR :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'kill-char', @gtkkillchar);
|
ConnectSenderSignal(gObject, 'kill-char', @gtkkillchar);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_KILLWORD :
|
LM_KILLWORD :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'kill-word', @gtkkillword);
|
ConnectSenderSignal(gObject, 'kill-word', @gtkkillword);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_KILLLINE :
|
LM_KILLLINE :
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'kill-line', @gtkkillline);
|
ConnectSenderSignal(gObject, 'kill-line', @gtkkillline);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_CUTTOCLIP :
|
LM_CUTTOCLIP :
|
||||||
begin
|
begin
|
||||||
if (sender is TCustomMemo) then
|
if (sender is TCustomMemo) then
|
||||||
ConnectSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))), 'cut-clipboard', @gtkcuttoclip)
|
ConnectSenderSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))), 'cut-clipboard', @gtkcuttoclip)
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'cut-clipboard', @gtkcuttoclip);
|
ConnectSenderSignal(gObject, 'cut-clipboard', @gtkcuttoclip);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_COPYTOCLIP :
|
LM_COPYTOCLIP :
|
||||||
begin
|
begin
|
||||||
if (sender is TCustomMemo) then
|
if (sender is TCustomMemo) then
|
||||||
ConnectSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))), 'copy-clipboard', @gtkcopytoclip)
|
ConnectSenderSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))), 'copy-clipboard', @gtkcopytoclip)
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'copy-clipboard', @gtkcopytoclip);
|
ConnectSenderSignal(gObject, 'copy-clipboard', @gtkcopytoclip);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_PASTEFROMCLIP :
|
LM_PASTEFROMCLIP :
|
||||||
begin
|
begin
|
||||||
if (sender is TCustomMemo) then
|
if (sender is TCustomMemo) then
|
||||||
ConnectSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))), 'paste-clipboard', @gtkpastefromclip)
|
ConnectSenderSignal(PgtkObject(GetCoreChildWidget(PgtkWidget(TCustomMemo(sender).handle))), 'paste-clipboard', @gtkpastefromclip)
|
||||||
else
|
else
|
||||||
ConnectSignal(gObject, 'paste-clipboard', @gtkpastefromclip);
|
ConnectSenderSignal(gObject, 'paste-clipboard', @gtkpastefromclip);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_HSCROLL:
|
LM_HSCROLL:
|
||||||
begin
|
begin
|
||||||
//if Sender is TCustomListView
|
//if Sender is TCustomListView
|
||||||
//then begin
|
//then begin
|
||||||
// ConnectSignal(gObject, 'scroll-horizontal', @gtkLVHScroll);
|
// ConnectSenderSignal(gObject, 'scroll-horizontal', @gtkLVHScroll);
|
||||||
//end
|
//end
|
||||||
//else begin
|
//else begin
|
||||||
ConnectSignal(PGTKObject(gtk_scrolled_window_get_hadjustment(
|
ConnectSenderSignal(PGTKObject(gtk_scrolled_window_get_hadjustment(
|
||||||
PGTKScrolledWindow(gObject))),
|
PGTKScrolledWindow(gObject))),
|
||||||
'value-changed', @GTKHScrollCB);
|
'value-changed', @GTKHScrollCB);
|
||||||
//end;
|
//end;
|
||||||
@ -2433,10 +2362,10 @@ begin
|
|||||||
begin
|
begin
|
||||||
//if Sender is TCustomListView
|
//if Sender is TCustomListView
|
||||||
//then begin
|
//then begin
|
||||||
// ConnectSignal(gObject, 'scroll-vertical', @gtkLVVScroll);
|
// ConnectSenderSignal(gObject, 'scroll-vertical', @gtkLVVScroll);
|
||||||
//end
|
//end
|
||||||
//else begin
|
//else begin
|
||||||
ConnectSignal(PGTKObject(gtk_scrolled_window_get_vadjustment(
|
ConnectSenderSignal(PGTKObject(gtk_scrolled_window_get_vadjustment(
|
||||||
PGTKScrolledWindow(gObject))),
|
PGTKScrolledWindow(gObject))),
|
||||||
'value-changed', @GTKVScrollCB);
|
'value-changed', @GTKVScrollCB);
|
||||||
//end;
|
//end;
|
||||||
@ -2444,8 +2373,8 @@ begin
|
|||||||
|
|
||||||
LM_YEARCHANGED : //calendar
|
LM_YEARCHANGED : //calendar
|
||||||
Begin
|
Begin
|
||||||
ConnectSignal(gObject, 'prev-year', @gtkyearchanged);
|
ConnectSenderSignal(gObject, 'prev-year', @gtkyearchanged);
|
||||||
ConnectSignal(gObject, 'next-year', @gtkyearchanged);
|
ConnectSenderSignal(gObject, 'next-year', @gtkyearchanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Listview & Header control
|
// Listview & Header control
|
||||||
@ -2456,46 +2385,46 @@ begin
|
|||||||
HDN_ENDTRACK,
|
HDN_ENDTRACK,
|
||||||
HDN_TRACK:
|
HDN_TRACK:
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'resize-column', @gtkLVResizeColumn);
|
ConnectSenderSignal(gObject, 'resize-column', @gtkLVResizeColumn);
|
||||||
ConnectSignal(gObject, 'abort-column-resize', @gtkLVAbortColumnResize);
|
ConnectSenderSignal(gObject, 'abort-column-resize', @gtkLVAbortColumnResize);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
HDN_ITEMCHANGED,
|
HDN_ITEMCHANGED,
|
||||||
HDN_ITEMCHANGING:
|
HDN_ITEMCHANGING:
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'resize-column', @gtkLVResizeColumn);
|
ConnectSenderSignal(gObject, 'resize-column', @gtkLVResizeColumn);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// HDN_ITEMDBLCLICK
|
// HDN_ITEMDBLCLICK
|
||||||
HDN_ITEMCLICK,
|
HDN_ITEMCLICK,
|
||||||
LVN_COLUMNCLICK:
|
LVN_COLUMNCLICK:
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gCore, 'click-column', @gtkLVClickColumn);
|
ConnectSenderSignal(gCore, 'click-column', @gtkLVClickColumn);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// LVN_DELETEALLITEMS,
|
// LVN_DELETEALLITEMS,
|
||||||
LVN_DELETEITEM,
|
LVN_DELETEITEM,
|
||||||
LVN_INSERTITEM:
|
LVN_INSERTITEM:
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gCore, 'row-move', @gtkLVRowMove);
|
ConnectSenderSignal(gCore, 'row-move', @gtkLVRowMove);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LVN_ITEMCHANGED,
|
LVN_ITEMCHANGED,
|
||||||
LVN_ITEMCHANGING:
|
LVN_ITEMCHANGING:
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gCore, 'select-row', @gtkLVSelectRow);
|
ConnectSenderSignal(gCore, 'select-row', @gtkLVSelectRow);
|
||||||
ConnectSignal(gCore, 'unselect-row', @gtkLVUnSelectRow);
|
ConnectSenderSignal(gCore, 'unselect-row', @gtkLVUnSelectRow);
|
||||||
ConnectSignal(gCore, 'toggle-focus-row', @gtkLVToggleFocusRow);
|
ConnectSenderSignal(gCore, 'toggle-focus-row', @gtkLVToggleFocusRow);
|
||||||
ConnectSignal(gCore, 'select-all', @gtkLVSelectAll);
|
ConnectSenderSignal(gCore, 'select-all', @gtkLVSelectAll);
|
||||||
ConnectSignal(gCore, 'unselect-all', @gtkLVUnSelectAll);
|
ConnectSenderSignal(gCore, 'unselect-all', @gtkLVUnSelectAll);
|
||||||
ConnectSignal(gCore, 'end-selection', @gtkLVEndSelection);
|
ConnectSenderSignal(gCore, 'end-selection', @gtkLVEndSelection);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
(*
|
(*
|
||||||
LM_WINDOWPOSCHANGED:
|
LM_WINDOWPOSCHANGED:
|
||||||
begin
|
begin
|
||||||
ConnectSignal(gObject, 'size-allocate', @gtkSizeAllocateCB);
|
ConnectSenderSignal(gObject, 'size-allocate', @gtkSizeAllocateCB);
|
||||||
// ConnectSignal(gObject, 'move_resize', @gtkmoveresize);
|
// ConnectSenderSignal(gObject, 'move_resize', @gtkmoveresize);
|
||||||
end;
|
end;
|
||||||
*)
|
*)
|
||||||
else
|
else
|
||||||
@ -5350,6 +5279,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.166 2002/08/19 18:00:02 lazarus
|
||||||
|
MG: design signals for gtk internal widgets
|
||||||
|
|
||||||
Revision 1.165 2002/08/17 15:45:34 lazarus
|
Revision 1.165 2002/08/17 15:45:34 lazarus
|
||||||
MG: removed ClientRectBugfix defines
|
MG: removed ClientRectBugfix defines
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user