Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release-src > by-pkgid > b55dd33bf5f9c676346f0c06357a685f > files > 8

lazarus-1.2.4-4.mga5.src.rpm

diff -ur lazarus.orig/lcl/interfaces/gtk2/gtk2trayicon.inc lazarus/lcl/interfaces/gtk2/gtk2trayicon.inc
--- lazarus.orig/lcl/interfaces/gtk2/gtk2trayicon.inc	2012-04-17 11:55:52.000000000 +0400
+++ lazarus/lcl/interfaces/gtk2/gtk2trayicon.inc	2014-04-09 15:19:52.000000000 +0400
@@ -365,6 +365,16 @@
   end;
 end;
 
+function query_tooltip_cb_statusicon({%H-}status_icon: PGtkStatusIcon;
+  x: guint; y: guint; {%H-}keyboard_mode: gboolean; {%H-}tooltip: gpointer{PGtkTooltip}; user_data: gpointer): gboolean; cdecl;
+var
+  vwsTrayIcon: TCustomTrayIcon absolute user_data;
+begin
+  Result := FALSE;
+
+  if Assigned(vwsTrayIcon.OnMouseMove) then
+   vwsTrayIcon.OnMouseMove(vwsTrayIcon, [], x, y);
+end;
 {$endif}
 
 constructor TGtk2TrayIconHandle.Create(const wsTrayIcon: TCustomTrayIcon);
@@ -378,12 +388,14 @@
     FStatusIcon := gtk_status_icon_new();
     gtk_status_icon_set_from_pixbuf(FStatusIcon, {%H-}PGdkPixbuf(FTrayIcon.Icon.Handle));
     gtk_status_icon_set_tooltip(FStatusIcon, PChar(FTrayIcon.Hint));
+    g_object_set(PGObject(FStatusIcon), 'has-tooltip', TRUE);
     fEmbedded := gtk_status_icon_is_embedded(FStatusIcon);
 
     g_signal_connect(FStatusIcon, 'activate', TGCallback(@activate_cb_statusicon), fTrayIcon);
     g_signal_connect(FStatusIcon, 'popup-menu', TGCallback(@popup_cb_statusicon), fTrayIcon);
     g_signal_connect(FStatusIcon, 'button-press-event', TGCallback(@button_press_cb_statusicon), fTrayIcon);
     g_signal_connect(FStatusIcon, 'button-release-event', TGCallback(@button_release_cb_statusicon), fTrayIcon);
+    g_signal_connect(FStatusIcon, 'query-tooltip', TGCallback(@query_tooltip_cb_statusicon), fTrayIcon);
   end
   else
 {$endif}
@@ -407,8 +419,8 @@
     with wsTrayIcon do
     begin
       DrawingArea := gtk_image_new_from_pixbuf({%H-}PGdkPixbuf(Icon.Handle));
-      gtk_widget_show(DrawingArea);
       gtk_container_add(GTK_CONTAINER(plug), DrawingArea);
+      gtk_widget_show(DrawingArea);
     end;
   end;
 end;
@@ -478,6 +490,7 @@
   begin
     gtk_status_icon_set_from_pixbuf(FStatusIcon, NewPixBuf);
     gtk_status_icon_set_tooltip(FStatusIcon, PChar(NewHint));
+    g_object_set(PGObject(FStatusIcon), 'has-tooltip', TRUE);
   end
   else
 {$endif}