[Xfce4-commits] [apps/xfdashboard] 03/03: Do not use deprecated GTK+/GDK functions and silence compiler warning when compiling again GTK+ version 3.22 or later
noreply at xfce.org
noreply at xfce.org
Fri Apr 28 10:40:28 CEST 2017
This is an automated email from the git hooks/post-receive script.
nomad pushed a commit to branch master
in repository apps/xfdashboard.
commit 43db3312293055ba4e684990603d054100bf506a
Author: Stephan Haller <nomad at froevel.de>
Date: Fri Apr 28 10:39:54 2017 +0200
Do not use deprecated GTK+/GDK functions and silence compiler warning when compiling again GTK+ version 3.22 or later
---
libxfdashboard/x11/window-tracker-monitor-x11.c | 46 ++++-
libxfdashboard/x11/window-tracker-window-x11.c | 12 +-
libxfdashboard/x11/window-tracker-x11.c | 224 +++++++++++++++++-------
3 files changed, 213 insertions(+), 69 deletions(-)
diff --git a/libxfdashboard/x11/window-tracker-monitor-x11.c b/libxfdashboard/x11/window-tracker-monitor-x11.c
index 4a83bdb..7a293b1 100644
--- a/libxfdashboard/x11/window-tracker-monitor-x11.c
+++ b/libxfdashboard/x11/window-tracker-monitor-x11.c
@@ -31,6 +31,7 @@
#include <libxfdashboard/x11/window-tracker-monitor-x11.h>
#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include <libxfdashboard/window-tracker-monitor.h>
@@ -82,17 +83,26 @@ static GParamSpec* XfdashboardWindowTrackerMonitorX11Properties[PROP_LAST]={ 0,
static void _xfdashboard_window_tracker_monitor_x11_update_primary(XfdashboardWindowTrackerMonitorX11 *self)
{
XfdashboardWindowTrackerMonitorX11Private *priv;
- gint primaryIndex;
gboolean isPrimary;
+#if GTK_CHECK_VERSION(3, 22, 0)
+ GdkMonitor *primaryMonitor;
+#else
+ gint primaryMonitor;
+#endif
g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_MONITOR(self));
priv=self->priv;
/* Get primary flag */
- primaryIndex=gdk_screen_get_primary_monitor(priv->screen);
- if(primaryIndex==priv->monitorIndex) isPrimary=TRUE;
+#if GTK_CHECK_VERSION(3, 22, 0)
+ primaryMonitor=gdk_display_get_primary_monitor(gdk_screen_get_display(priv->screen));
+ isPrimary=gdk_monitor_is_primary(primaryMonitor);
+#else
+ primaryMonitor=gdk_screen_get_primary_monitor(priv->screen);
+ if(primaryMonitor==priv->monitorIndex) isPrimary=TRUE;
else isPrimary=FALSE;
+#endif
/* Set value if changed */
if(priv->isPrimary!=isPrimary)
@@ -119,16 +129,34 @@ static void _xfdashboard_window_tracker_monitor_x11_update_geometry(XfdashboardW
{
XfdashboardWindowTrackerMonitorX11Private *priv;
GdkRectangle geometry;
+ gint numberMonitors;
+#if GTK_CHECK_VERSION(3, 22, 0)
+ GdkDisplay *display;
+ GdkMonitor *monitor;
+#endif
g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_MONITOR_X11(self));
priv=self->priv;
+ /* Get number of monitors */
+#if GTK_CHECK_VERSION(3, 22, 0)
+ display=gdk_screen_get_display(priv->screen);
+ numberMonitors=gdk_display_get_n_monitors(display);
+#else
+ numberMonitors=gdk_screen_get_n_monitors(priv->screen);
+#endif
+
/* Check if monitor is valid */
- if(priv->monitorIndex>=gdk_screen_get_n_monitors(priv->screen)) return;
+ if(priv->monitorIndex>=numberMonitors) return;
/* Get monitor geometry */
+#if GTK_CHECK_VERSION(3, 22, 0)
+ monitor=gdk_display_get_monitor(display, priv->monitorIndex);
+ gdk_monitor_get_geometry(monitor, &geometry);
+#else
gdk_screen_get_monitor_geometry(priv->screen, priv->monitorIndex, &geometry);
+#endif
/* Set value if changed */
if(geometry.x!=priv->geometry.x ||
@@ -157,13 +185,21 @@ static void _xfdashboard_window_tracker_monitor_x11_set_index(XfdashboardWindowT
gint inIndex)
{
XfdashboardWindowTrackerMonitorX11Private *priv;
+ gint numberMonitors;
g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_MONITOR_X11(self));
g_return_if_fail(inIndex>=0);
- g_return_if_fail(inIndex<gdk_screen_get_n_monitors(self->priv->screen));
priv=self->priv;
+ /* Get number of monitors */
+#if GTK_CHECK_VERSION(3, 22, 0)
+ numberMonitors=gdk_display_get_n_monitors(gdk_screen_get_display(priv->screen));
+#else
+ numberMonitors=gdk_screen_get_n_monitors(priv->screen);
+#endif
+ g_return_if_fail(inIndex<numberMonitors);
+
/* Freeze notification */
g_object_freeze_notify(G_OBJECT(self));
diff --git a/libxfdashboard/x11/window-tracker-window-x11.c b/libxfdashboard/x11/window-tracker-window-x11.c
index 9337eff..738e936 100644
--- a/libxfdashboard/x11/window-tracker-window-x11.c
+++ b/libxfdashboard/x11/window-tracker-window-x11.c
@@ -267,7 +267,11 @@ static void _xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed(
*/
if(!XineramaIsActive(GDK_DISPLAY_XDISPLAY(display)))
{
+#if GTK_CHECK_VERSION(3, 22, 0)
+ GdkMonitor *primaryMonitor;
+#else
gint primaryMonitor;
+#endif
GdkRectangle geometry;
/* Get position and size of primary monitor and try to move and resize
@@ -275,8 +279,13 @@ static void _xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed(
* resize the stage to the size of current monitor this window is
* fullscreened to. Tested with xfwm4.
*/
+#if GTK_CHECK_VERSION(3, 22, 0)
+ primaryMonitor=gdk_display_get_primary_monitor(gdk_screen_get_display(screen));
+ gdk_monitor_get_geometry(primaryMonitor, &geometry);
+#else
primaryMonitor=gdk_screen_get_primary_monitor(screen);
gdk_screen_get_monitor_geometry(screen, primaryMonitor, &geometry);
+#endif
wnck_window_set_geometry(stageWindow,
WNCK_WINDOW_GRAVITY_STATIC,
WNCK_WINDOW_CHANGE_X | WNCK_WINDOW_CHANGE_Y | WNCK_WINDOW_CHANGE_WIDTH | WNCK_WINDOW_CHANGE_HEIGHT,
@@ -293,8 +302,7 @@ static void _xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed(
}
/* Get monitor indices for each corner of screen */
- top=gdk_screen_get_height(screen);
- left=gdk_screen_get_width(screen);
+ xfdashboard_window_tracker_get_screen_size(inWindowTracker, &left, &top);
bottom=0;
right=0;
topIndex=bottomIndex=leftIndex=rightIndex=0;
diff --git a/libxfdashboard/x11/window-tracker-x11.c b/libxfdashboard/x11/window-tracker-x11.c
index 99ea7c8..38aeaa3 100644
--- a/libxfdashboard/x11/window-tracker-x11.c
+++ b/libxfdashboard/x11/window-tracker-x11.c
@@ -87,6 +87,11 @@ struct _XfdashboardWindowTrackerX11Private
gboolean supportsMultipleMonitors;
GdkScreen *gdkScreen;
+#if GTK_CHECK_VERSION(3, 22, 0)
+ GdkDisplay *gdkDisplay;
+ gboolean needScreenSizeUpdate;
+ gint screenWidth, screenHeight;
+#endif
};
/* Properties */
@@ -122,10 +127,10 @@ static void _xfdashboard_window_tracker_x11_free_workspace(XfdashboardWindowTrac
#if DEBUG
/* There must be only one reference on that workspace object */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Freeing workspace %s@%p named '%s' with ref-count=%d",
- G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace,
- xfdashboard_window_tracker_workspace_get_name(XFDASHBOARD_WINDOW_TRACKER_WORKSPACE(inWorkspace)),
- G_OBJECT(inWorkspace)->ref_count);
+ "Freeing workspace %s@%p named '%s' with ref-count=%d",
+ G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace,
+ xfdashboard_window_tracker_workspace_get_name(XFDASHBOARD_WINDOW_TRACKER_WORKSPACE(inWorkspace)),
+ G_OBJECT(inWorkspace)->ref_count);
g_assert(G_OBJECT(inWorkspace)->ref_count==1);
#endif
@@ -197,9 +202,9 @@ static XfdashboardWindowTrackerWorkspaceX11* _xfdashboard_window_tracker_x11_cre
{
/* Return existing workspace object */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "A workspace object %s@%p for wnck workspace %s@%p named '%s' exists already",
- G_OBJECT_TYPE_NAME(workspace), workspace,
- G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace, wnck_workspace_get_name(inWorkspace));
+ "A workspace object %s@%p for wnck workspace %s@%p named '%s' exists already",
+ G_OBJECT_TYPE_NAME(workspace), workspace,
+ G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace, wnck_workspace_get_name(inWorkspace));
return(workspace);
}
@@ -221,9 +226,9 @@ static XfdashboardWindowTrackerWorkspaceX11* _xfdashboard_window_tracker_x11_cre
/* Return new workspace object */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Created workspace object %s@%p for wnck workspace %s@%p named '%s'",
- G_OBJECT_TYPE_NAME(workspace), workspace,
- G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace, wnck_workspace_get_name(inWorkspace));
+ "Created workspace object %s@%p for wnck workspace %s@%p named '%s'",
+ G_OBJECT_TYPE_NAME(workspace), workspace,
+ G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace, wnck_workspace_get_name(inWorkspace));
return(workspace);
}
@@ -242,10 +247,10 @@ static void _xfdashboard_window_tracker_x11_free_window(XfdashboardWindowTracker
#if DEBUG
/* There must be only one reference on that window object */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Freeing window %s@%p named '%s' with ref-count=%d",
- G_OBJECT_TYPE_NAME(inWindow), inWindow,
- xfdashboard_window_tracker_window_get_name(XFDASHBOARD_WINDOW_TRACKER_WINDOW(inWindow)),
- G_OBJECT(inWindow)->ref_count);
+ "Freeing window %s@%p named '%s' with ref-count=%d",
+ G_OBJECT_TYPE_NAME(inWindow), inWindow,
+ xfdashboard_window_tracker_window_get_name(XFDASHBOARD_WINDOW_TRACKER_WINDOW(inWindow)),
+ G_OBJECT(inWindow)->ref_count);
g_assert(G_OBJECT(inWindow)->ref_count==1);
#endif
@@ -367,9 +372,9 @@ static XfdashboardWindowTrackerWindowX11* _xfdashboard_window_tracker_x11_create
{
/* Return existing window object */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "A window object %s@%p for wnck window %s@%p named '%s' exists already",
- G_OBJECT_TYPE_NAME(window), window,
- G_OBJECT_TYPE_NAME(inWindow), inWindow, wnck_window_get_name(inWindow));
+ "A window object %s@%p for wnck window %s@%p named '%s' exists already",
+ G_OBJECT_TYPE_NAME(window), window,
+ G_OBJECT_TYPE_NAME(inWindow), inWindow, wnck_window_get_name(inWindow));
return(window);
}
@@ -394,9 +399,9 @@ static XfdashboardWindowTrackerWindowX11* _xfdashboard_window_tracker_x11_create
/* Return new window object */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Created window object %s@%p for wnck window %s@%p named '%s'",
- G_OBJECT_TYPE_NAME(window), window,
- G_OBJECT_TYPE_NAME(inWindow), inWindow, wnck_window_get_name(inWindow));
+ "Created window object %s@%p for wnck window %s@%p named '%s'",
+ G_OBJECT_TYPE_NAME(window), window,
+ G_OBJECT_TYPE_NAME(inWindow), inWindow, wnck_window_get_name(inWindow));
return(window);
}
@@ -579,9 +584,9 @@ static void _xfdashboard_window_tracker_x11_on_active_window_changed(Xfdashboard
if(!newActiveWindow)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
- "No window object of type %s found for new active wnck window %s@%p named '%s'",
- g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
- G_OBJECT_TYPE_NAME(activeWindow), activeWindow, wnck_window_get_name(activeWindow));
+ "No window object of type %s found for new active wnck window %s@%p named '%s'",
+ g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
+ G_OBJECT_TYPE_NAME(activeWindow), activeWindow, wnck_window_get_name(activeWindow));
return;
}
@@ -624,9 +629,9 @@ static void _xfdashboard_window_tracker_x11_on_window_closed(XfdashboardWindowTr
if(!window)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
- "No window object of type %s found for wnck window %s@%p named '%s'",
- g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
- G_OBJECT_TYPE_NAME(inWindow), inWindow, wnck_window_get_name(inWindow));
+ "No window object of type %s found for wnck window %s@%p named '%s'",
+ g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
+ G_OBJECT_TYPE_NAME(inWindow), inWindow, wnck_window_get_name(inWindow));
return;
}
@@ -679,8 +684,8 @@ static void _xfdashboard_window_tracker_x11_on_window_opened(XfdashboardWindowTr
/* Emit signal */
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Window '%s' created",
- wnck_window_get_name(inWindow));
+ "Window '%s' created",
+ wnck_window_get_name(inWindow));
g_signal_emit_by_name(self, "window-opened", window);
}
@@ -794,9 +799,9 @@ static void _xfdashboard_window_tracker_x11_on_workspace_destroyed(XfdashboardWi
if(!workspace)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
- "No workspace object of type %s found for wnck workspace %s@%p named '%s'",
- g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
- G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace, wnck_workspace_get_name(inWorkspace));
+ "No workspace object of type %s found for wnck workspace %s@%p named '%s'",
+ g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
+ G_OBJECT_TYPE_NAME(inWorkspace), inWorkspace, wnck_workspace_get_name(inWorkspace));
return;
}
@@ -987,7 +992,7 @@ static void _xfdashboard_window_tracker_x11_monitor_free(XfdashboardWindowTracke
static void _xfdashboard_window_tracker_x11_on_monitors_changed(XfdashboardWindowTrackerX11 *self,
gpointer inUserData)
{
- XfdashboardWindowTrackerX11Private *priv;
+ XfdashboardWindowTrackerX11Private *priv;
GdkScreen *screen;
gint currentMonitorCount;
gint newMonitorCount;
@@ -1005,7 +1010,11 @@ static void _xfdashboard_window_tracker_x11_on_monitors_changed(XfdashboardWindo
currentMonitorCount=g_list_length(priv->monitors);
/* Get new monitor state */
+#if GTK_CHECK_VERSION(3, 22, 0)
+ newMonitorCount=gdk_display_get_n_monitors(gdk_screen_get_display(screen));
+#else
newMonitorCount=gdk_screen_get_n_monitors(screen);
+#endif
if(newMonitorCount!=currentMonitorCount)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
@@ -1048,24 +1057,30 @@ static void _xfdashboard_window_tracker_x11_on_monitors_changed(XfdashboardWindo
_xfdashboard_window_tracker_x11_monitor_free(self, monitor);
}
}
+
+#if GTK_CHECK_VERSION(3, 22, 0)
+ /* Set flag to recalculate screen size which must have changed as monitors
+ * were added or removed.
+ */
+ priv->needScreenSizeUpdate=TRUE;
+#endif
}
#endif
/* Total size of screen changed */
static void _xfdashboard_window_tracker_x11_on_screen_size_changed(XfdashboardWindowTrackerX11 *self,
- gpointer inUserData)
+ gpointer inUserData)
{
- GdkScreen *screen;
- gint w, h;
+ XfdashboardWindowTrackerX11Private *priv;
+ gint w, h;
g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(self));
- g_return_if_fail(GDK_IS_SCREEN(inUserData));
- screen=GDK_SCREEN(inUserData);
+ priv=self->priv;
/* Get new total size of screen */
- w=gdk_screen_get_width(screen);
- h=gdk_screen_get_height(screen);
+ priv->needScreenSizeUpdate=TRUE;
+ xfdashboard_window_tracker_get_screen_size(XFDASHBOARD_WINDOW_TRACKER(self), &w, &h);
/* Emit signal to tell that screen size has changed */
XFDASHBOARD_DEBUG(self, WINDOWS,
@@ -1216,7 +1231,7 @@ static XfdashboardWindowTrackerWorkspace* _xfdashboard_window_tracker_x11_window
/* Get workspace by number */
static XfdashboardWindowTrackerWorkspace* _xfdashboard_window_tracker_x11_window_tracker_get_workspace_by_number(XfdashboardWindowTracker *inWindowTracker,
- gint inNumber)
+ gint inNumber)
{
XfdashboardWindowTrackerX11 *self;
XfdashboardWindowTrackerX11Private *priv;
@@ -1238,9 +1253,9 @@ static XfdashboardWindowTrackerWorkspace* _xfdashboard_window_tracker_x11_window
if(!workspace)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
- "No workspace object of type %s found for wnck workspace %s@%p named '%s'",
- g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
- G_OBJECT_TYPE_NAME(wnckWorkspace), wnckWorkspace, wnck_workspace_get_name(wnckWorkspace));
+ "No workspace object of type %s found for wnck workspace %s@%p named '%s'",
+ g_type_name(XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW_X11),
+ G_OBJECT_TYPE_NAME(wnckWorkspace), wnckWorkspace, wnck_workspace_get_name(wnckWorkspace));
return(NULL);
}
@@ -1309,7 +1324,7 @@ static XfdashboardWindowTrackerMonitor* _xfdashboard_window_tracker_x11_window_t
/* Get monitor by number */
static XfdashboardWindowTrackerMonitor* _xfdashboard_window_tracker_x11_window_tracker_get_monitor_by_number(XfdashboardWindowTracker *inWindowTracker,
- gint inNumber)
+ gint inNumber)
{
XfdashboardWindowTrackerX11 *self;
XfdashboardWindowTrackerX11Private *priv;
@@ -1328,8 +1343,8 @@ static XfdashboardWindowTrackerMonitor* _xfdashboard_window_tracker_x11_window_t
/* Get monitor at requested position */
static XfdashboardWindowTrackerMonitor* _xfdashboard_window_tracker_x11_window_tracker_get_monitor_by_position(XfdashboardWindowTracker *inWindowTracker,
- gint inX,
- gint inY)
+ gint inX,
+ gint inY)
{
XfdashboardWindowTrackerX11 *self;
XfdashboardWindowTrackerX11Private *priv;
@@ -1365,21 +1380,84 @@ static XfdashboardWindowTrackerMonitor* _xfdashboard_window_tracker_x11_window_t
/* Get size of screen */
static void _xfdashboard_window_tracker_x11_window_tracker_get_screen_size(XfdashboardWindowTracker *inWindowTracker,
- gint *outWidth,
- gint *outHeight)
+ gint *outWidth,
+ gint *outHeight)
{
XfdashboardWindowTrackerX11 *self;
XfdashboardWindowTrackerX11Private *priv;
gint width, height;
+#if GTK_CHECK_VERSION(3, 22, 0)
+ gint i;
+ gint numberMonitors;
+ GdkMonitor *monitor;
+ GdkRectangle monitorRect;
+ gint left, top, right, bottom;
+ gboolean forceUpdate;
+#endif
g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_X11(inWindowTracker));
self=XFDASHBOARD_WINDOW_TRACKER_X11(inWindowTracker);
priv=self->priv;
+#if GTK_CHECK_VERSION(3, 22, 0)
+ /* Only recalculate screen size if flag is set */
+ if(priv->needScreenSizeUpdate)
+ {
+ XFDASHBOARD_DEBUG(self, WINDOWS, "Screen size needs to be recalculated");
+
+ /* Get width and height of screen by iterating through all connected monitors
+ * and find the most top left and most right bottom point among all these
+ * monitors. Then calculate size of screen by these points.
+ */
+ forceUpdate=TRUE;
+ left=top=right=bottom=0;
+ numberMonitors=gdk_display_get_n_monitors(priv->gdkDisplay);
+ for(i=0; i<numberMonitors; i++)
+ {
+ monitor=gdk_display_get_monitor(priv->gdkDisplay, i);
+ gdk_monitor_get_geometry(monitor, &monitorRect);
+
+ if(forceUpdate || monitorRect.x<left) left=monitorRect.x;
+ if(forceUpdate || monitorRect.y<top) top=monitorRect.y;
+ if(forceUpdate || (monitorRect.x+monitorRect.width)>right) right=monitorRect.x+monitorRect.width;
+ if(forceUpdate || (monitorRect.y+monitorRect.height)>bottom) bottom=monitorRect.y+monitorRect.height;
+
+ /* The first monitor in list was processed so do not enforcing updating
+ * coordinates from now on except they are most-specific points.
+ */
+ forceUpdate=FALSE;
+
+ /* Debug message */
+ XFDASHBOARD_DEBUG(self, WINDOWS,
+ "Iterating monitor %d of %d [%d,%dx%d,%d] for screen size calculation",
+ i, numberMonitors,
+ monitorRect.x, monitorRect.y,
+ monitorRect.width, monitorRect.height);
+ }
+
+ /* Calculate screen size */
+ priv->screenWidth=right-left;
+ priv->screenHeight=bottom-top;
+ XFDASHBOARD_DEBUG(self, WINDOWS,
+ "Screen size is %dx%d over all %d monitors covering area of [%d,%dx%d,%d]",
+ priv->screenWidth, priv->screenHeight,
+ numberMonitors,
+ left, top,
+ right, bottom);
+
+ /* Reset flag to avoid recalculation of screen size again and again */
+ priv->needScreenSizeUpdate=FALSE;
+ }
+
+ /* Get width and height of screen */
+ width=priv->screenWidth;
+ height=priv->screenHeight;
+#else
/* Get width and height of screen */
width=gdk_screen_get_width(priv->gdkScreen);
height=gdk_screen_get_height(priv->gdkScreen);
+#endif
/* Store result */
if(outWidth) *outWidth=width;
@@ -1410,15 +1488,15 @@ static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_x11_window_tr
if(backgroundWindow)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Found desktop window %s@%p by known background pixmap ID",
- G_OBJECT_TYPE_NAME(backgroundWindow), backgroundWindow);
+ "Found desktop window %s@%p by known background pixmap ID",
+ G_OBJECT_TYPE_NAME(backgroundWindow), backgroundWindow);
/* Get or create window object for wnck background window */
window=_xfdashboard_window_tracker_x11_create_window_for_wnck(self, backgroundWindow);
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Resolved desktop window %s@%p to window object %s@%p",
- G_OBJECT_TYPE_NAME(backgroundWindow), backgroundWindow,
- G_OBJECT_TYPE_NAME(window), window);
+ "Resolved desktop window %s@%p to window object %s@%p",
+ G_OBJECT_TYPE_NAME(backgroundWindow), backgroundWindow,
+ G_OBJECT_TYPE_NAME(window), window);
/* Return window object found or created */
return(XFDASHBOARD_WINDOW_TRACKER_WINDOW(window));
@@ -1440,15 +1518,15 @@ static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_x11_window_tr
if(wnckWindowType==WNCK_WINDOW_DESKTOP)
{
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Desktop window %s@%p found while iterating through window list",
- G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow);
+ "Desktop window %s@%p found while iterating through window list",
+ G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow);
/* Get or create window object for wnck background window */
window=_xfdashboard_window_tracker_x11_create_window_for_wnck(self, wnckWindow);
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Resolved desktop window %s@%p to window object %s@%p",
- G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
- G_OBJECT_TYPE_NAME(window), window);
+ "Resolved desktop window %s@%p to window object %s@%p",
+ G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
+ G_OBJECT_TYPE_NAME(window), window);
/* Return window object found or created */
return(XFDASHBOARD_WINDOW_TRACKER_WINDOW(window));
@@ -1483,9 +1561,9 @@ static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_x11_window_tr
/* Get or create window object for wnck background window */
window=_xfdashboard_window_tracker_x11_create_window_for_wnck(self, wnckWindow);
XFDASHBOARD_DEBUG(self, WINDOWS,
- "Resolved stage window %s@%p to window object %s@%p",
- G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
- G_OBJECT_TYPE_NAME(window), window);
+ "Resolved stage window %s@%p to window object %s@%p",
+ G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
+ G_OBJECT_TYPE_NAME(window), window);
return(XFDASHBOARD_WINDOW_TRACKER_WINDOW(window));
}
@@ -1634,6 +1712,14 @@ static void _xfdashboard_window_tracker_x11_dispose(GObject *inObject)
priv->gdkScreen=NULL;
}
+#if GTK_CHECK_VERSION(3, 22, 0)
+ if(priv->gdkDisplay)
+ {
+ g_signal_handlers_disconnect_by_data(priv->gdkDisplay, self);
+ priv->gdkDisplay=NULL;
+ }
+#endif
+
if(priv->screen)
{
g_signal_handlers_disconnect_by_data(priv->screen, self);
@@ -1742,7 +1828,15 @@ void xfdashboard_window_tracker_x11_init(XfdashboardWindowTrackerX11 *self)
priv->workspaces=NULL;
priv->monitors=NULL;
priv->screen=wnck_screen_get_default();
+#if GTK_CHECK_VERSION(3, 22, 0)
+ priv->gdkDisplay=gdk_display_get_default();
+ priv->gdkScreen=gdk_display_get_default_screen(priv->gdkDisplay);
+ priv->needScreenSizeUpdate=TRUE;
+ priv->screenWidth=0;
+ priv->screenHeight=0;
+#else
priv->gdkScreen=gdk_screen_get_default();
+#endif
priv->activeWindow=NULL;
priv->activeWorkspace=NULL;
priv->primaryMonitor=NULL;
@@ -1793,6 +1887,7 @@ void xfdashboard_window_tracker_x11_init(XfdashboardWindowTrackerX11 *self)
if(XineramaIsActive(GDK_SCREEN_XDISPLAY(priv->gdkScreen)))
{
XfdashboardWindowTrackerMonitorX11 *monitor;
+ gint numberMonitors;
gint i;
/* Set flag that multiple monitors are supported */
@@ -1811,7 +1906,12 @@ void xfdashboard_window_tracker_x11_init(XfdashboardWindowTrackerX11 *self)
G_CONNECT_AFTER | G_CONNECT_SWAPPED);
/* Get monitors */
- for(i=0; i<gdk_screen_get_n_monitors(priv->gdkScreen); i++)
+#if GTK_CHECK_VERSION(3, 22, 0)
+ numberMonitors=gdk_display_get_n_monitors(priv->gdkDisplay);
+#else
+ numberMonitors=gdk_screen_get_n_monitors(priv->gdkScreen);
+#endif
+ for(i=0; i<numberMonitors; i++)
{
/* Create monitor object */
monitor=_xfdashboard_window_tracker_x11_monitor_new(self, i);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list