305
305
vwsTrayIcon.OnMouseDown(vwsTrayIcon, mbLeft, [], X, Y);
308
procedure popup_cb_statusicon(status_icon: PGtkStatusIcon; button: guint;
309
activate_time: guint; user_data: gpointer); cdecl;
308
procedure popup_cb_statusicon({%H-}status_icon: PGtkStatusIcon; {%H-}button: guint;
309
{%H-}activate_time: guint; user_data: gpointer); cdecl;
311
311
vwsTrayIcon: TCustomTrayIcon absolute user_data;
313
313
if Assigned(vwsTrayIcon.PopUpMenu) then
314
314
vwsTrayIcon.PopUpMenu.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
317
function button_press_cb_statusicon({%H-}status_icon: PGtkStatusIcon;
318
event: PGdkEvent; user_data: gpointer): gboolean; cdecl;
320
vwsTrayIcon: TCustomTrayIcon absolute user_data;
324
if (PGdkEventButton(event)^._type = GDK_2BUTTON_PRESS) and Assigned(vwsTrayIcon.OnDblClick) then
325
vwsTrayIcon.OnDblClick(vwsTrayIcon)
328
case PGdkEventButton(event)^.button of
329
1: if Assigned(vwsTrayIcon.OnMouseDown) then
330
vwsTrayIcon.OnMouseDown(vwsTrayIcon, mbLeft, [], Round(PGdkEventButton(event)^.X), Round(PGdkEventButton(event)^.Y));
332
2: if Assigned(vwsTrayIcon.OnMouseDown) then
333
vwsTrayIcon.OnMouseDown(vwsTrayIcon, mbMiddle, [], Round(PGdkEventButton(event)^.X), Round(PGdkEventButton(event)^.Y));
335
3: if Assigned(vwsTrayIcon.OnMouseDown) then
336
vwsTrayIcon.OnMouseDown(vwsTrayIcon, mbRight, [], Round(PGdkEventButton(event)^.X), Round(PGdkEventButton(event)^.Y));
341
function button_release_cb_statusicon({%H-}status_icon: PGtkStatusIcon;
342
event: PGdkEvent; user_data: gpointer): gboolean; cdecl;
344
vwsTrayIcon: TCustomTrayIcon absolute user_data;
347
case PGdkEventButton(event)^.button of
350
if Assigned(vwsTrayIcon.OnClick) then vwsTrayIcon.OnClick(vwsTrayIcon);
351
if Assigned(vwsTrayIcon.OnMouseUp) then
352
vwsTrayIcon.OnMouseUp(vwsTrayIcon, mbLeft, [], Round(PGdkEventButton(event)^.X), Round(PGdkEventButton(event)^.Y));
355
2: if Assigned(vwsTrayIcon.OnMouseUp) then
356
vwsTrayIcon.OnMouseUp(vwsTrayIcon, mbMiddle, [], Round(PGdkEventButton(event)^.X), Round(PGdkEventButton(event)^.Y));
360
if Assigned(vwsTrayIcon.OnMouseUp) then
361
vwsTrayIcon.OnMouseUp(vwsTrayIcon, mbRight, [], Round(PGdkEventButton(event)^.X), Round(PGdkEventButton(event)^.Y));
362
if Assigned(vwsTrayIcon.PopUpMenu) then
363
vwsTrayIcon.PopUpMenu.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
318
370
constructor TGtk2TrayIconHandle.Create(const wsTrayIcon: TCustomTrayIcon);
324
376
if Available_GtkStatusIcon_2_10 then
326
378
FStatusIcon := gtk_status_icon_new();
327
gtk_status_icon_set_from_pixbuf(FStatusIcon, PGdkPixbuf(FTrayIcon.Icon.Handle));
379
gtk_status_icon_set_from_pixbuf(FStatusIcon, {%H-}PGdkPixbuf(FTrayIcon.Icon.Handle));
328
380
gtk_status_icon_set_tooltip(FStatusIcon, PChar(FTrayIcon.Hint));
329
381
fEmbedded := gtk_status_icon_is_embedded(FStatusIcon);
331
383
g_signal_connect(FStatusIcon, 'activate', TGCallback(@activate_cb_statusicon), fTrayIcon);
332
384
g_signal_connect(FStatusIcon, 'popup-menu', TGCallback(@popup_cb_statusicon), fTrayIcon);
385
g_signal_connect(FStatusIcon, 'button-press-event', TGCallback(@button_press_cb_statusicon), fTrayIcon);
386
g_signal_connect(FStatusIcon, 'button-release-event', TGCallback(@button_release_cb_statusicon), fTrayIcon);