; Module/File: FrameGadget_InvisibleContentWorkaroundGtk3.pb ; Function: Workaround against over-painted Gadgets within FrameGadget - Linux gtk3 ; Author: Omi ; Date: Dec. 22, 2015 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.4/5.6 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- ;Hint: Set FramesGadget-line after the gadgets! Otherwise some tooltips don't appear. ;some themes then overpaint the Gadgets. Here's a workaround ... EnableExplicit ImportC "" gdk_rgba_parse(*rgba, spec.p-utf8) gtk_widget_override_background_color(*widget.GtkWidget, state, color) EndImport Enumeration GtkStateFlags #GTK_STATE_FLAG_NORMAL ; #GTK_STATE_FLAG_ACTIVE ; #GTK_STATE_FLAG_PRELIGHT ; #GTK_STATE_FLAG_SELECTED ; #GTK_STATE_FLAG_INSENSITIVE ; #GTK_STATE_FLAG_INCONSISTENT ; #GTK_STATE_FLAG_FOCUSED ; #GTK_STATE_FLAG_BACKDROP ; #GTK_STATE_FLAG_DIR_LTR ; #GTK_STATE_FLAG_DIR_RTL EndEnumeration Structure GdkRGBA red.d green.d blue.d alpha.d EndStructure Global gBgColor.GdkRGBA If OpenWindow(0, 0, 0, 600, 310, "FrameGadget workaround for content-visibility & working tooltips", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(1, 20, 30, 560, 30, "Button") GadgetToolTip(1, "Button ToolTip") ;if the FrameGadget is placed here, ToolTips of included Gadgets are shown, but in gtk3 the content (here Button) could be painted over ... FrameGadget(0, 10, 10, 580, 290, "FrameGadget with Button") ;so make the FrameGadget transparent on gtk3 to show the content AND ToolTips works ... gdk_rgba_parse(@gBgColor, "rgba(255,255,255,0.0)") gtk_widget_override_background_color(GadgetID(0), #GTK_STATE_FLAG_NORMAL, gBgColor) Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf ; IDE Options = PureBasic 5.46 LTS Beta 2 (Linux - x86) ; CursorPosition = 36 ; EnableUnicode ; EnableXP