// RequestUserAttention related functions
//-----------------------------------------------------------------------------
-extern "C" {
+#ifndef __WXGTK30__
static void wxgtk_window_set_urgency_hint (GtkWindow *win,
gboolean setting)
{
- GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(win));
- wxASSERT_MSG(window, "wxgtk_window_set_urgency_hint: GdkWindow not realized");
- XWMHints *wm_hints;
+#if GTK_CHECK_VERSION(2,7,0)
+ if (gtk_check_version(2,7,0) == NULL)
+ gtk_window_set_urgency_hint(win, setting);
+ else
+#endif
+ {
+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(win));
+ wxCHECK_RET(window, "wxgtk_window_set_urgency_hint: GdkWindow not realized");
- wm_hints = XGetWMHints(GDK_WINDOW_XDISPLAY(window), GDK_WINDOW_XWINDOW(window));
+ Display* dpy = GDK_WINDOW_XDISPLAY(window);
+ Window xid = GDK_WINDOW_XID(window);
+ XWMHints* wm_hints = XGetWMHints(dpy, xid);
- if (!wm_hints)
- wm_hints = XAllocWMHints();
+ if (!wm_hints)
+ wm_hints = XAllocWMHints();
- if (setting)
- wm_hints->flags |= XUrgencyHint;
- else
- wm_hints->flags &= ~XUrgencyHint;
+ if (setting)
+ wm_hints->flags |= XUrgencyHint;
+ else
+ wm_hints->flags &= ~XUrgencyHint;
- XSetWMHints(GDK_WINDOW_XDISPLAY(window), GDK_WINDOW_XWINDOW(window), wm_hints);
- XFree(wm_hints);
+ XSetWMHints(dpy, xid, wm_hints);
+ XFree(wm_hints);
+ }
}
+#define gtk_window_set_urgency_hint wxgtk_window_set_urgency_hint
+#endif
+extern "C" {
static gboolean gtk_frame_urgency_timer_callback( wxTopLevelWindowGTK *win )
{
-#if GTK_CHECK_VERSION(2,7,0)
- if(!gtk_check_version(2,7,0))
- gtk_window_set_urgency_hint(GTK_WINDOW( win->m_widget ), FALSE);
- else
-#endif
- wxgtk_window_set_urgency_hint(GTK_WINDOW( win->m_widget ), FALSE);
+ gtk_window_set_urgency_hint(GTK_WINDOW(win->m_widget), false);
win->m_urgency_hint = -2;
return FALSE;
g_source_remove( win->m_urgency_hint );
// no break, fallthrough to remove hint too
case -1:
-#if GTK_CHECK_VERSION(2,7,0)
- if(!gtk_check_version(2,7,0))
- gtk_window_set_urgency_hint(GTK_WINDOW( widget ), FALSE);
- else
-#endif
- {
- wxgtk_window_set_urgency_hint(GTK_WINDOW( widget ), FALSE);
- }
-
+ gtk_window_set_urgency_hint(GTK_WINDOW(widget), false);
win->m_urgency_hint = -2;
break;
const wxIconBundle& icons = GetIcons();
if (icons.GetIconCount())
SetIcons(icons);
-
- if (win->HasFlag(wxFRAME_SHAPED))
- win->SetShape(win->m_shape); // it will really set the window shape now
}
//-----------------------------------------------------------------------------
}
}
-
-// helper
-static bool do_shape_combine_region(GdkWindow* window, const wxRegion& region)
-{
- if (window)
- {
- if (region.IsEmpty())
- {
- gdk_window_shape_combine_mask(window, NULL, 0, 0);
- }
- else
- {
- gdk_window_shape_combine_region(window, region.GetRegion(), 0, 0);
- return true;
- }
- }
- return false;
-}
-
-
-bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
-{
- wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), false,
- wxT("Shaped windows must be created with the wxFRAME_SHAPED style."));
-
- if ( gtk_widget_get_realized(m_widget) )
- {
- if ( m_wxwindow )
- do_shape_combine_region(gtk_widget_get_window(m_wxwindow), region);
-
- return do_shape_combine_region(gtk_widget_get_window(m_widget), region);
- }
- else // not realized yet
- {
- // store the shape to set, it will be really set once we're realized
- m_shape = region;
-
- // we don't know if we're going to succeed or fail, be optimistic by
- // default
- return true;
- }
-}
-
bool wxTopLevelWindowGTK::IsActive()
{
return (this == (wxTopLevelWindowGTK*)g_activeFrame);
}
}
-#if GTK_CHECK_VERSION(2,7,0)
- if(!gtk_check_version(2,7,0))
- gtk_window_set_urgency_hint(GTK_WINDOW( m_widget ), new_hint_value);
- else
-#endif
- wxgtk_window_set_urgency_hint(GTK_WINDOW( m_widget ), new_hint_value);
+ gtk_window_set_urgency_hint(GTK_WINDOW(m_widget), new_hint_value);
}
void wxTopLevelWindowGTK::SetWindowStyleFlag( long style )