; Module/File: SysTray_GetScrollEventGtk3.pb ; Function: Get scroll events from mouse wheel over SysTray icon - Linux gtk3 ; Author: Omi ; Date: Dec. 27, 2016 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.3/5.4/5.5 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" gdk_event_get_scroll_deltas(*event, *delta_x, *delta_y); gtk3 g_type_check_instance_is_a(*instance.GTypeInstance, *type.GTypeClass) g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *pdata, destroy= 0, flags= 0) As "g_signal_connect_data" EndImport Macro G_TYPE_MAKE_FUNDAMENTAL(x) ((x) << 2) EndMacro ;GType ... #G_TYPE_OBJECT = G_TYPE_MAKE_FUNDAMENTAL(20) ; GdkScrollDirection #GDK_SCROLL_SMOOTH = 4 ; Object constants #Win_Main = 0 #SysTrayEntry1= 0 Global.i gEvent, gQuit Global *gScreen.GdkScreen, gArea.GdkRectangle, *gOrientation Global *gSysTrayEntry Global.s gSysTrayIcon1= #PB_Compiler_Home + "examples/sources/Data/Drive.bmp" ProcedureC Callback_SysTrayScrollEvent(*status_icon, *event.GdkEventScroll, user_data) Protected.d delta_x, delta_y If *event\type = #GDK_SCROLL If *event\state = 16 If *event\direction = 1 Or delta_y = 1.0; Scroll up gtk2 | gtk3 Debug "down" ElseIf *event\direction = 0 Or delta_y = -1.0; Scroll down gtk2 | gtk3 Debug "up" EndIf EndIf EndIf ProcedureReturn #True EndProcedure ; Procedure SysTray_IdIsValid(*object) ; ProcedureReturn g_type_check_instance_is_a(*object, #G_TYPE_OBJECT) ; EndProcedure Procedure Create_WinMain() If OpenWindow(#Win_Main, 300, 200, 500, 100, "SysTray icon get scroll event", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) TextGadget(#PB_Any, 5, 5, 490, 40, "Hold mouse over new SysTray icon w. Tooltip 'PureBasic icon' and scroll to get 'scroll event'.") *gSysTrayEntry= AddSysTrayIcon(#SysTrayEntry1, WindowID(#Win_Main), LoadImage(0, gSysTrayIcon1)); Return is GtkStatusIcon -> NOT DOCUMENTED SysTrayIconToolTip(#SysTrayEntry1, "PureBasic icon") g_signal_connect(*gSysTrayEntry, "scroll-event", @Callback_SysTrayScrollEvent(), #SysTrayEntry1) EndIf EndProcedure Create_WinMain() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit ; IDE Options = PureBasic 5.46 LTS Beta 1 (Linux - x86) ; CursorPosition = 59 ; Folding = - ; EnableUnicode ; EnableXP