diff options
| -rw-r--r-- | savers/floaters.c | 41 | ||||
| -rw-r--r-- | savers/gs-theme-window.c | 11 | ||||
| -rw-r--r-- | savers/gste-popsquares.c | 131 | ||||
| -rw-r--r-- | src/copy-theme-dialog.c | 4 | ||||
| -rw-r--r-- | src/gs-fade.c | 162 | ||||
| -rw-r--r-- | src/gs-grab-x11.c | 47 | ||||
| -rw-r--r-- | src/gs-lock-plug.c | 64 | ||||
| -rw-r--r-- | src/gs-manager.c | 48 | ||||
| -rw-r--r-- | src/gs-window-x11.c | 33 | ||||
| -rw-r--r-- | src/mate-screensaver-preferences.c | 15 | 
10 files changed, 442 insertions, 114 deletions
| diff --git a/savers/floaters.c b/savers/floaters.c index dd0d85e..d565d63 100644 --- a/savers/floaters.c +++ b/savers/floaters.c @@ -265,7 +265,7 @@ static CachedSource *cached_source_new (cairo_pattern_t *pattern,                                          gint             height);  static void cached_source_free (CachedSource *source); -static ScreenSaver *screen_saver_new (GtkDrawingArea  *drawing_area, +static ScreenSaver *screen_saver_new (GtkWidget       *drawing_area,                                        const gchar     *filename,                                        gint             max_floater_count,                                        gboolean         should_do_rotations, @@ -841,7 +841,7 @@ screen_saver_floater_do_draw (ScreenSaver        *screen_saver,  }  static ScreenSaver * -screen_saver_new (GtkDrawingArea  *drawing_area, +screen_saver_new (GtkWidget       *drawing_area,                    const gchar     *filename,                    gint             max_floater_count,                    gboolean         should_do_rotations, @@ -851,7 +851,7 @@ screen_saver_new (GtkDrawingArea  *drawing_area,  	screen_saver = g_new (ScreenSaver, 1);  	screen_saver->filename = g_strdup (filename); -	screen_saver->drawing_area = GTK_WIDGET (drawing_area); +	screen_saver->drawing_area = drawing_area;  	screen_saver->cached_sources =  	    g_hash_table_new_full (NULL, NULL, NULL,  	                           (GDestroyNotify) cached_source_free); @@ -1216,15 +1216,13 @@ int  main (int   argc,        char *argv[])  { -	ScreenSaver *screen_saver; -	GtkWidget *window; -	GtkWidget *drawing_area; -#if GTK_CHECK_VERSION (3, 0, 0) -    GdkRGBA bg; -    GdkRGBA fg; -#else -	GtkStyle *style; -	GtkStateType state; +	ScreenSaver     *screen_saver; +	GtkWidget       *window; +	GtkWidget       *drawing_area; +#if !GTK_CHECK_VERSION (3, 0, 0) +	GtkStyle        *style; +	GtkStateType     state; +	GdkColor         black = { 0, 0x0000, 0x0000, 0x0000 };  #endif  	GError *error; @@ -1264,25 +1262,14 @@ main (int   argc,  	g_signal_connect (G_OBJECT (window), "delete-event",  	                  G_CALLBACK (gtk_main_quit), NULL); -	drawing_area = gtk_drawing_area_new (); +	drawing_area = GTK_WIDGET (gtk_drawing_area_new ()); -#if GTK_CHECK_VERSION (3, 0, 0) -	bg.red = 0; -	bg.green = 0; -	bg.blue = 0; -	bg.alpha = 1.0; -	fg.red = 0.8; -	fg.green = 0.8; -	fg.blue = 0.8; -	fg.alpha = 1.0; -	gtk_widget_override_background_color (drawing_area, 0, &bg); -	gtk_widget_override_color (drawing_area, 0, &fg); -#else +#if !GTK_CHECK_VERSION (3, 0, 0)  	style = gtk_widget_get_style (drawing_area);  	state = (GtkStateType) 0;  	while (state < (GtkStateType) G_N_ELEMENTS (style->bg))  	{ -		gtk_widget_modify_bg (drawing_area, state, &style->mid[state]); +		gtk_widget_modify_bg (drawing_area, state, &black);  		state++;  	}  #endif @@ -1290,7 +1277,7 @@ main (int   argc,  	gtk_widget_show (drawing_area);  	gtk_container_add (GTK_CONTAINER (window), drawing_area); -	screen_saver = screen_saver_new (GTK_DRAWING_AREA (drawing_area), +	screen_saver = screen_saver_new (drawing_area,  	                                 filenames[0], max_floater_count,  	                                 should_do_rotations, should_show_paths);  	g_strfreev (filenames); diff --git a/savers/gs-theme-window.c b/savers/gs-theme-window.c index 0741aad..47c731e 100644 --- a/savers/gs-theme-window.c +++ b/savers/gs-theme-window.c @@ -62,6 +62,7 @@ gs_theme_window_class_init (GSThemeWindowClass *klass)  	widget_class->realize = gs_theme_window_real_realize;  } +#if !GTK_CHECK_VERSION (3, 0, 0)  static void  force_no_pixmap_background (GtkWidget *widget)  { @@ -90,11 +91,16 @@ force_no_pixmap_background (GtkWidget *widget)  	gtk_widget_set_name (widget, "gs-window");  } +#endif  static void  gs_theme_window_init (GSThemeWindow *window)  { +#if GTK_CHECK_VERSION (3, 0, 0) +	gtk_widget_set_app_paintable (GTK_WIDGET (window), TRUE); +#else  	force_no_pixmap_background (GTK_WIDGET (window)); +#endif  }  static void @@ -177,9 +183,14 @@ gs_theme_window_real_realize (GtkWidget *widget)  		return;  	} +#if GTK_CHECK_VERSION (3, 0, 0) +	gtk_style_context_set_background (gtk_widget_get_style_context (widget), +	                                  window); +#else  	gtk_style_set_background (gtk_widget_get_style (widget),  	                          window,  	                          GTK_STATE_NORMAL); +#endif  	gdk_window_set_decorations (window, (GdkWMDecoration) 0);  	gdk_window_set_events (window, gdk_window_get_events (window) | event_mask); diff --git a/savers/gste-popsquares.c b/savers/gste-popsquares.c index 837bb2c..44caa48 100644 --- a/savers/gste-popsquares.c +++ b/savers/gste-popsquares.c @@ -51,7 +51,11 @@ struct GSTEPopsquaresPrivate  	int        ncolors;  	int        subdivision; +#if GTK_CHECK_VERSION (3, 0, 0) +	GdkRGBA   *colors; +#else  	GdkColor  *colors; +#endif  	square    *squares;  }; @@ -63,12 +67,12 @@ static GObjectClass *parent_class = NULL;  G_DEFINE_TYPE (GSTEPopsquares, gste_popsquares, GS_TYPE_THEME_ENGINE)  static void -hsv_to_rgb (int             h, -            double          s, -            double          v, -            unsigned short *r, -            unsigned short *g, -            unsigned short *b) +hsv_to_rgb (int     h, +            double  s, +            double  v, +            double *r, +            double *g, +            double *b)  {  	double H, S, V, R, G, B;  	double p1, p2, p3; @@ -138,27 +142,27 @@ hsv_to_rgb (int             h,  		B = p2;  	} -	*r = R * 65535; -	*g = G * 65535; -	*b = B * 65535; +	*r = R; +	*g = G; +	*b = B;  }  static void -rgb_to_hsv (unsigned short r, -            unsigned short g, -            unsigned short b, -            int           *h, -            double        *s, -            double        *v) +rgb_to_hsv (double  r, +            double  g, +            double  b, +            int    *h, +            double *s, +            double *v)  {  	double R, G, B, H, S, V;  	double cmax, cmin;  	double cmm;  	int    imax; -	R = ((double) r) / 65535.0; -	G = ((double) g) / 65535.0; -	B = ((double) b) / 65535.0; +	R = r; +	G = g; +	B = b;  	cmax = R;  	cmin = G;  	imax = 1; @@ -226,11 +230,13 @@ make_color_ramp (GdkColormap *colormap,                   int          h2,                   double       s2,                   double       v2, -                 GdkColor    *colors, -                 int          n_colors,  #if GTK_CHECK_VERSION (3, 0, 0) +                 GdkRGBA     *colors, +                 int          n_colors,                   gboolean     closed)  #else +                 GdkColor    *colors, +                 int          n_colors,                   gboolean     closed,                   gboolean     allocate,                   gboolean     writable) @@ -267,13 +273,25 @@ make_color_ramp (GdkColormap *colormap,  	for (i = 0; i < ncolors; i++)  	{ +#if !GTK_CHECK_VERSION (3, 0, 0) +		double red, green, blue; + +#endif  		hsv_to_rgb ((int) (h1 + (i * dh)),  		            (s1 + (i * ds)),  		            (v1 + (i * dv)), +#if GTK_CHECK_VERSION (3, 0, 0)  		            &colors [i].red,  		            &colors [i].green,  		            &colors [i].blue); -#if !GTK_CHECK_VERSION (3, 0, 0) +		colors [i].alpha = 1.0; +#else +		            &red, &green, &blue); + +		colors [i].red = (guint16) (red * 65535.0); +		colors [i].green = (guint16) (green * 65535.0); +		colors [i].blue = (guint16) (blue * 65535.0); +  		if (allocate)  		{  			gdk_colormap_alloc_color (colormap, @@ -310,25 +328,55 @@ randomize_square_colors (square *squares,  	}  } +#if GTK_CHECK_VERSION (3, 0, 0) +static void +set_colors (GtkWidget *widget, +            GdkRGBA   *fg, +            GdkRGBA   *bg) +{ +	GtkStyleContext  *style; + +	style = gtk_widget_get_style_context (widget); + +	gtk_style_context_save (style); +	gtk_style_context_set_state (style, GTK_STATE_FLAG_SELECTED); +	gtk_style_context_get_background_color (style, +	                                        gtk_style_context_get_state (style), +	                                        bg); +	if (bg->alpha == 0.0) +		gtk_style_context_get_color (style, +		                             gtk_style_context_get_state (style), +		                             bg); +	gtk_style_context_restore (style); + +	fg->red   = bg->red * 0.7; +	fg->green = bg->green * 0.7; +	fg->blue  = bg->blue * 0.7; +	fg->alpha = bg->alpha; +} +#else  static void -set_colors (GdkWindow *window, +set_colors (GtkWidget *widget,              GdkColor  *fg,              GdkColor  *bg)  { -	GtkWidget *widget; +	GtkWidget *style_widget; +	GtkStyle  *style;  	GdkColor   color; -	widget = gtk_invisible_new (); +	style_widget = gtk_invisible_new (); +	style = gtk_widget_get_style (style_widget); -	color = gtk_widget_get_style (widget)->dark [GTK_STATE_SELECTED]; +	color = style->dark [GTK_STATE_SELECTED];  	fg->red   = color.red;  	fg->green = color.green;  	fg->blue  = color.blue; -	color = gtk_widget_get_style (widget)->bg [GTK_STATE_SELECTED]; +	color = style->bg [GTK_STATE_SELECTED];  	bg->red   = color.red;  	bg->green = color.green;  	bg->blue  = color.blue;  } +#endif  static void  gste_popsquares_set_property (GObject            *object, @@ -413,8 +461,13 @@ setup_colors (GSTEPopsquares *pop)  	double    s1, v1, s2, v2 = 0;  	int       h1, h2 = 0;  	int       nsquares; +#if GTK_CHECK_VERSION (3, 0, 0) +	GdkRGBA   fg; +	GdkRGBA   bg; +#else  	GdkColor  fg;  	GdkColor  bg; +#endif  	GdkWindow *window;  	window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop)); @@ -424,24 +477,37 @@ setup_colors (GSTEPopsquares *pop)  		return;  	} -	set_colors (window, &fg, &bg); +	set_colors (GTK_WIDGET (pop), &fg, &bg);  	if (pop->priv->colors)  	{  		g_free (pop->priv->colors);  	} +#if GTK_CHECK_VERSION (3, 0, 0) +	pop->priv->colors = g_new0 (GdkRGBA, pop->priv->ncolors); +#else  	pop->priv->colors = g_new0 (GdkColor, pop->priv->ncolors); +#endif +#if GTK_CHECK_VERSION (3, 0, 0)  	rgb_to_hsv (fg.red, fg.green, fg.blue, &h1, &s1, &v1);  	rgb_to_hsv (bg.red, bg.green, bg.blue, &h2, &s2, &v2); -#if GTK_CHECK_VERSION (3, 0, 0)  	make_color_ramp (h1, s1, v1,  	                 h2, s2, v2,  	                 pop->priv->colors,  	                 pop->priv->ncolors,  	                 TRUE);  #else +	rgb_to_hsv ((double) (fg.red / 65535.0), +	            (double) (fg.green / 65535.0), +	            (double) (fg.blue / 65535.0), +	            &h1, &s1, &v1); +	rgb_to_hsv ((double) (bg.red / 65535.0), +	            (double) (bg.green / 65535.0), +	            (double) (bg.blue / 65535.0), +	            &h2, &s2, &v2); +  	make_color_ramp (gtk_widget_get_colormap (GTK_WIDGET (pop)),  	                 h1, s1, v1,  	                 h2, s2, v2, @@ -484,10 +550,12 @@ gste_popsquares_real_draw (GtkWidget *widget,  gste_popsquares_real_expose (GtkWidget      *widget,                               GdkEventExpose *event)  { +	cairo_t *cr; +  	if (GTK_WIDGET_CLASS (parent_class)->expose_event) {  		GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);  	} -	cairo_t *cr = gdk_cairo_create (event->window); +	cr = gdk_cairo_create (event->window);  #endif  	draw_frame (GSTE_POPSQUARES (widget), cr); @@ -545,7 +613,6 @@ gste_popsquares_class_init (GSTEPopsquaresClass *klass)  	g_type_class_add_private (klass, sizeof (GSTEPopsquaresPrivate));  } -  static void  draw_frame (GSTEPopsquares *pop,              cairo_t        *cr) @@ -580,7 +647,11 @@ draw_frame (GSTEPopsquares *pop,  		{  			square *s = (square *) &pop->priv->squares [gw * y + x]; +#if GTK_CHECK_VERSION (3, 0, 0) +			gdk_cairo_set_source_rgba (cr, &(pop->priv->colors [s->color])); +#else  			gdk_cairo_set_source_color (cr, &(pop->priv->colors [s->color])); +#endif  			cairo_rectangle (cr, s->x, s->y,  			                 border ? s->w - border : s->w,  			                 border ? s->h - border : s->h); diff --git a/src/copy-theme-dialog.c b/src/copy-theme-dialog.c index 69db9a3..0fd64f2 100644 --- a/src/copy-theme-dialog.c +++ b/src/copy-theme-dialog.c @@ -527,7 +527,11 @@ eel_gtk_label_make_bold (GtkLabel *label)  	 * theme or user prefs, since the font desc only has the  	 * weight flag turned on.  	 */ +#if GTK_CHECK_VERSION (3, 0, 0) +	gtk_widget_override_font (GTK_WIDGET (label), font_desc); +#else  	gtk_widget_modify_font (GTK_WIDGET (label), font_desc); +#endif  	pango_font_description_free (font_desc);  } diff --git a/src/gs-fade.c b/src/gs-fade.c index b571ec8..c037718 100644 --- a/src/gs-fade.c +++ b/src/gs-fade.c @@ -82,6 +82,12 @@ struct GSFadeScreenPrivate  	/* one per screen also */  	XF86VidModeGamma    vmg;  #endif /* HAVE_XF86VMODE_GAMMA */ +#if GTK_CHECK_VERSION(3, 10, 0) +	gboolean (*fade_setup)           (GSFade *fade); +	gboolean (*fade_set_alpha_gamma) (GSFade *fade, +	                                  gdouble alpha); +	void     (*fade_finish)          (GSFade *fade); +#else  	gboolean (*fade_setup)           (GSFade *fade,  	                                  int     screen);  	gboolean (*fade_set_alpha_gamma) (GSFade *fade, @@ -89,6 +95,7 @@ struct GSFadeScreenPrivate  	                                  gdouble alpha);  	void     (*fade_finish)          (GSFade *fade,  	                                  int     screen); +#endif  };  struct GSFadePrivate @@ -105,9 +112,13 @@ struct GSFadePrivate  	gdouble          alpha_per_iter;  	gdouble          current_alpha; +#if GTK_CHECK_VERSION(3, 10, 0) +	struct GSFadeScreenPrivate screen_priv; +#else  	int              num_screens;  	struct GSFadeScreenPrivate *screen_priv; +#endif  };  enum @@ -286,12 +297,20 @@ gs_fade_set_enabled (GSFade  *fade,  #ifdef HAVE_XF86VMODE_GAMMA  static gboolean +#if GTK_CHECK_VERSION(3, 10, 0) +gamma_fade_setup (GSFade *fade) +#else  gamma_fade_setup (GSFade *fade, int screen_idx) +#endif  {  	gboolean         res;  	struct GSFadeScreenPrivate *screen_priv; +#if GTK_CHECK_VERSION(3, 10, 0) +	screen_priv = &fade->priv->screen_priv; +#else  	screen_priv = &fade->priv->screen_priv[screen_idx]; +#endif  	if (screen_priv->info)  		return TRUE; @@ -313,7 +332,14 @@ gamma_fade_setup (GSFade *fade, int screen_idx)  	{  		/* have ramps */ -		res = XF86VidModeGetGammaRampSize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), screen_idx, &screen_priv->info->size); + +		res = XF86VidModeGetGammaRampSize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +#if GTK_CHECK_VERSION(3, 10, 0) +		                                   gdk_screen_get_number (gdk_screen_get_default ()), +#else +		                                   screen_idx, +#endif +		                                   &screen_priv->info->size);  		if (!res || screen_priv->info->size <= 0)  		{  			screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER; @@ -331,7 +357,11 @@ gamma_fade_setup (GSFade *fade, int screen_idx)  		}  		res = XF86VidModeGetGammaRamp (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +#if GTK_CHECK_VERSION(3, 10, 0) +		                               gdk_screen_get_number (gdk_screen_get_default ()), +#else  		                               screen_idx, +#endif  		                               screen_priv->info->size,  		                               screen_priv->info->r,  		                               screen_priv->info->g, @@ -350,14 +380,19 @@ test_number:  	{  		/* only have gamma parameter, not ramps. */ -		res = XF86VidModeGetGamma (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), screen_idx, &screen_priv->vmg); +		res = XF86VidModeGetGamma (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +#if GTK_CHECK_VERSION(3, 10, 0) +		                           gdk_screen_get_number (gdk_screen_get_default ()), +#else +		                           screen_idx, +#endif +		                           &screen_priv->vmg);  		if (! res)  		{  			screen_priv->fade_type = FADE_TYPE_NONE;  			goto test_none;  		} -		gs_debug ("Initialized gamma fade for screen %d: %f %f %f", -		          screen_idx, +		gs_debug ("Initialized gamma fade: %f %f %f",  		          screen_priv->vmg.red,  		          screen_priv->vmg.green,  		          screen_priv->vmg.blue); @@ -377,11 +412,19 @@ FAIL:  #endif /* HAVE_XF86VMODE_GAMMA */  static void +#if GTK_CHECK_VERSION(3, 10, 0) +screen_fade_finish (GSFade *fade) +#else  screen_fade_finish (GSFade *fade, int screen_idx) +#endif  {  	struct GSFadeScreenPrivate *screen_priv;  	int i; +#if GTK_CHECK_VERSION(3, 10, 0) +	screen_priv = &fade->priv->screen_priv; +#else  	screen_priv = &fade->priv->screen_priv[screen_idx]; +#endif  	if (!screen_priv->info)  		return; @@ -404,20 +447,33 @@ screen_fade_finish (GSFade *fade, int screen_idx)  #ifdef HAVE_XF86VMODE_GAMMA  static gboolean  gamma_fade_set_alpha_gamma (GSFade *fade, +#if !GTK_CHECK_VERSION(3, 10, 0)                              int screen_idx, +#endif                              gdouble alpha)  {  	struct GSFadeScreenPrivate *screen_priv; +#if GTK_CHECK_VERSION(3, 10, 0) +	int screen_idx = gdk_screen_get_number (gdk_screen_get_default ()); + +	screen_priv = &fade->priv->screen_priv; +	xf86_whack_gamma (screen_idx, screen_priv, alpha); +#else  	screen_priv = &fade->priv->screen_priv[screen_idx];  	xf86_whack_gamma (screen_idx, screen_priv, alpha); +#endif  	return TRUE;  }  #endif /* HAVE_XF86VMODE_GAMMA */  static void +#if GTK_CHECK_VERSION(3, 10, 0) +check_gamma_extension (GSFade *fade) +#else  check_gamma_extension (GSFade *fade, int screen_idx) +#endif  {  	struct GSFadeScreenPrivate *screen_priv;  #ifdef HAVE_XF86VMODE_GAMMA @@ -428,7 +484,11 @@ check_gamma_extension (GSFade *fade, int screen_idx)  	gboolean res;  #endif /* HAVE_XF86VMODE_GAMMA */ +#if GTK_CHECK_VERSION(3, 10, 0) +	screen_priv = &fade->priv->screen_priv; +#else  	screen_priv = &fade->priv->screen_priv[screen_idx]; +#endif  #ifdef HAVE_XF86VMODE_GAMMA  	res = XF86VidModeQueryExtension (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &event, &error); @@ -466,7 +526,11 @@ fade_none:  /* Xrandr support */ +#if GTK_CHECK_VERSION(3, 10, 0) +static gboolean xrandr_fade_setup (GSFade *fade) +#else  static gboolean xrandr_fade_setup (GSFade *fade, int screen_idx) +#endif  {  	struct GSFadeScreenPrivate *screen_priv;  	MateRRCrtc *crtc; @@ -475,7 +539,11 @@ static gboolean xrandr_fade_setup (GSFade *fade, int screen_idx)  	struct GSGammaInfo *info;  	gboolean res; +#if GTK_CHECK_VERSION(3, 10, 0) +	screen_priv = &fade->priv->screen_priv; +#else  	screen_priv = &fade->priv->screen_priv[screen_idx]; +#endif  	if (screen_priv->info)  		return TRUE; @@ -564,7 +632,9 @@ static void xrandr_crtc_whack_gamma (MateRRCrtc *crtc,  }  static gboolean xrandr_fade_set_alpha_gamma (GSFade *fade, +#if !GTK_CHECK_VERSION(3, 10, 0)          int screen_idx, +#endif          gdouble alpha)  {  	struct GSFadeScreenPrivate *screen_priv; @@ -572,7 +642,11 @@ static gboolean xrandr_fade_set_alpha_gamma (GSFade *fade,  	MateRRCrtc **crtcs;  	int i; +#if GTK_CHECK_VERSION(3, 10, 0) +	screen_priv = &fade->priv->screen_priv; +#else  	screen_priv = &fade->priv->screen_priv[screen_idx]; +#endif  	if (!screen_priv->info)  		return FALSE; @@ -591,13 +665,25 @@ static gboolean xrandr_fade_set_alpha_gamma (GSFade *fade,  }  static void +#if GTK_CHECK_VERSION(3, 10, 0) +check_randr_extension (GSFade *fade) +#else  check_randr_extension (GSFade *fade, int screen_idx) +#endif  {  	GdkDisplay *display = gdk_display_get_default (); +#if GTK_CHECK_VERSION(3, 10, 0) +	GdkScreen *screen = gdk_display_get_default_screen (display); +#else  	GdkScreen *screen = gdk_display_get_screen (display, screen_idx); +#endif  	struct GSFadeScreenPrivate *screen_priv; +#if GTK_CHECK_VERSION(3, 10, 0) +	screen_priv = &fade->priv->screen_priv; +#else  	screen_priv = &fade->priv->screen_priv[screen_idx]; +#endif  	screen_priv->rrscreen = mate_rr_screen_new (screen,  	                        NULL); @@ -618,6 +704,24 @@ gs_fade_set_alpha (GSFade *fade,                     gdouble alpha)  {  	gboolean ret = FALSE; +#if GTK_CHECK_VERSION (3, 10, 0) + +	switch (fade->priv->screen_priv.fade_type) +	{ +	case FADE_TYPE_GAMMA_RAMP: +	case FADE_TYPE_GAMMA_NUMBER: +	case FADE_TYPE_XRANDR: +		ret = fade->priv->screen_priv.fade_set_alpha_gamma (fade, alpha); +		break; +	case FADE_TYPE_NONE: +		ret = FALSE; +		break; +	default: +		g_warning ("Unknown fade type"); +		ret = FALSE; +		break; +	} +#else  	int i;  	for (i = 0; i < fade->priv->num_screens; i++) @@ -638,6 +742,7 @@ gs_fade_set_alpha (GSFade *fade,  			break;  		}  	} +#endif  	return ret;  } @@ -730,12 +835,22 @@ gs_fade_start (GSFade *fade,  {  	guint steps_per_sec = 60;  	guint msecs_per_step; +#if !GTK_CHECK_VERSION (3, 10, 0)  	struct GSFadeScreenPrivate *screen_priv; -	gboolean active_fade, res;  	int i; +#endif +	gboolean active_fade, res;  	g_return_if_fail (GS_IS_FADE (fade)); +#if GTK_CHECK_VERSION (3, 10, 0) +	if (fade->priv->screen_priv.fade_type != FADE_TYPE_NONE) +	{ +		res = fade->priv->screen_priv.fade_setup (fade); +		if (res == FALSE) +			return; +	} +#else  	for (i = 0; i < fade->priv->num_screens; i++)  	{  		screen_priv = &fade->priv->screen_priv[i]; @@ -746,6 +861,7 @@ gs_fade_start (GSFade *fade,  				return;  		}  	} +#endif  	if (fade->priv->timer_id > 0)  	{ @@ -757,12 +873,18 @@ gs_fade_start (GSFade *fade,  	gs_fade_set_timeout (fade, timeout);  	active_fade = FALSE; +#if GTK_CHECK_VERSION (3, 10, 0) +	if (fade->priv->screen_priv.fade_type != FADE_TYPE_NONE) +		active_fade = TRUE; +#else  	for (i = 0; i < fade->priv->num_screens; i++)  	{  		screen_priv = &fade->priv->screen_priv[i];  		if (screen_priv->fade_type != FADE_TYPE_NONE)  			active_fade = TRUE;  	} +#endif +  	if (active_fade)  	{  		guint num_steps; @@ -870,7 +992,9 @@ gs_fade_sync (GSFade        *fade,  void  gs_fade_reset (GSFade *fade)  { +#if !GTK_CHECK_VERSION(3, 10, 0)  	int i; +#endif  	g_return_if_fail (GS_IS_FADE (fade));  	gs_debug ("Resetting fade"); @@ -884,9 +1008,14 @@ gs_fade_reset (GSFade *fade)  	gs_fade_set_alpha (fade, fade->priv->current_alpha); +#if GTK_CHECK_VERSION (3, 10, 0) +	if (fade->priv->screen_priv.fade_type != FADE_TYPE_NONE) +		fade->priv->screen_priv.fade_finish (fade); +#else  	for (i = 0; i < fade->priv->num_screens; i++)  		if (fade->priv->screen_priv[i].fade_type != FADE_TYPE_NONE)  			fade->priv->screen_priv[i].fade_finish (fade, i); +#endif  }  static void @@ -913,16 +1042,22 @@ gs_fade_class_init (GSFadeClass *klass)  static void  gs_fade_init (GSFade *fade)  { -	GdkDisplay *display; +#if !GTK_CHECK_VERSION (3, 10, 0)  	int i; +#endif  	fade->priv = GS_FADE_GET_PRIVATE (fade);  	fade->priv->timeout = 1000;  	fade->priv->current_alpha = 1.0; -	display = gdk_display_get_default (); -	fade->priv->num_screens = gdk_display_get_n_screens (display); +#if GTK_CHECK_VERSION (3, 10, 0) +	check_randr_extension (fade); +	if (!fade->priv->screen_priv.fade_type) +		check_gamma_extension (fade); +	gs_debug ("Fade type: %d", fade->priv->screen_priv.fade_type); +#else +	fade->priv->num_screens = gdk_display_get_n_screens (gdk_display_get_default ());  	fade->priv->screen_priv = g_new0 (struct GSFadeScreenPrivate, fade->priv->num_screens); @@ -933,13 +1068,16 @@ gs_fade_init (GSFade *fade)  			check_gamma_extension (fade, i);  		gs_debug ("Fade type: %d", fade->priv->screen_priv[i].fade_type);  	} +#endif  }  static void  gs_fade_finalize (GObject *object)  {  	GSFade *fade; +#if !GTK_CHECK_VERSION (3, 10, 0)  	int i; +#endif  	g_return_if_fail (object != NULL);  	g_return_if_fail (GS_IS_FADE (object)); @@ -948,6 +1086,13 @@ gs_fade_finalize (GObject *object)  	g_return_if_fail (fade->priv != NULL); +#if GTK_CHECK_VERSION (3, 10, 0) +	fade->priv->screen_priv.fade_finish(fade); + +	if (fade->priv->screen_priv.rrscreen) +		g_object_unref (fade->priv->screen_priv.rrscreen); +	fade->priv->screen_priv.rrscreen = NULL; +#else  	for (i = 0; i < fade->priv->num_screens; i++)  		fade->priv->screen_priv[i].fade_finish(fade, i); @@ -963,6 +1108,7 @@ gs_fade_finalize (GObject *object)  		g_free (fade->priv->screen_priv);  		fade->priv->screen_priv = NULL;  	} +#endif  	G_OBJECT_CLASS (gs_fade_parent_class)->finalize (object);  } diff --git a/src/gs-grab-x11.c b/src/gs-grab-x11.c index 0a5d601..2133e6d 100644 --- a/src/gs-grab-x11.c +++ b/src/gs-grab-x11.c @@ -73,6 +73,10 @@ grab_string (int status)  		return "GrabNotViewable";  	case GDK_GRAB_FROZEN:  		return "GrabFrozen"; +#if GTK_CHECK_VERSION (3, 0, 0) +	case GDK_GRAB_FAILED: +		return "GrabFailed"; +#endif  	default:  	{  		static char foo [255]; @@ -241,7 +245,7 @@ gs_grab_get_mouse (GSGrab    *grab,  	}  #if GTK_CHECK_VERSION (3, 0, 0) -	g_object_unref (cursor); +	g_object_unref (G_OBJECT (cursor));  #else  	gdk_cursor_unref (cursor);  #endif @@ -302,14 +306,15 @@ gs_grab_move_mouse (GSGrab    *grab,                      GdkScreen *screen,                      gboolean   hide_cursor)  { -	gboolean   result; -	GdkWindow *old_window; -	GdkScreen *old_screen; +	gboolean    result; +	GdkWindow  *old_window; +	GdkScreen  *old_screen;  	gboolean   old_hide_cursor; +  	/* if the pointer is not grabbed and we have a  	   mouse_grab_window defined then we lost the grab */ -	if (! gdk_pointer_is_grabbed ()) +	if (!gdk_pointer_is_grabbed ())  	{  		gs_grab_mouse_reset (grab);  	} @@ -323,7 +328,7 @@ gs_grab_move_mouse (GSGrab    *grab,  #if 0  	gs_debug ("Intentionally skipping move pointer grabs"); -	/* FIXME: GTK doesn't like having the pointer grabbed */ +	/* FIXME: GTK+ doesn't like having the pointer grabbed */  	return TRUE;  #else  	if (grab->priv->mouse_grab_window) @@ -377,9 +382,9 @@ gs_grab_move_keyboard (GSGrab    *grab,                         GdkWindow *window,                         GdkScreen *screen)  { -	gboolean   result; -	GdkWindow *old_window; -	GdkScreen *old_screen; +	gboolean    result; +	GdkWindow  *old_window; +	GdkScreen  *old_screen;  	if (grab->priv->keyboard_grab_window == window)  	{ @@ -475,11 +480,11 @@ gs_grab_grab_window (GSGrab    *grab,                       GdkScreen *screen,                       gboolean   hide_cursor)  { -	gboolean mstatus = FALSE; -	gboolean kstatus = FALSE; -	int      i; -	int      retries = 4; -	gboolean focus_fuckus = FALSE; +	gboolean    mstatus = FALSE; +	gboolean    kstatus = FALSE; +	int         i; +	int         retries = 4; +	gboolean    focus_fuckus = FALSE;  AGAIN: @@ -524,7 +529,7 @@ AGAIN:  	}  #if 0 -	/* FIXME: release the pointer grab so GTK will work */ +	/* FIXME: release the pointer grab so GTK+ will work */  	gs_grab_release_mouse (grab);  #endif @@ -568,12 +573,24 @@ gs_grab_grab_root (GSGrab  *grab,  	GdkDisplay *display;  	GdkWindow  *root;  	GdkScreen  *screen; +#if GTK_CHECK_VERSION (3, 0, 0) +	GdkDevice  *device; +#endif  	gboolean    res;  	gs_debug ("Grabbing the root window");  	display = gdk_display_get_default (); +#if GTK_CHECK_VERSION (3, 0, 0) +#if GTK_CHECK_VERSION(3, 20, 0) +	device = gdk_seat_get_pointer (gdk_display_get_default_seat (display)); +#else +	device = gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (display)); +#endif +	gdk_device_get_position (device, &screen, NULL, NULL); +#else  	gdk_display_get_pointer (display, &screen, NULL, NULL, NULL); +#endif  	root = gdk_screen_get_root_window (screen);  	res = gs_grab_grab_window (grab, root, screen, hide_cursor); diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c index 53b091f..2893714 100644 --- a/src/gs-lock-plug.c +++ b/src/gs-lock-plug.c @@ -87,6 +87,10 @@ static void gs_lock_plug_finalize   (GObject         *object);  #define gtk_vbox_new(X,Y) gtk_box_new(GTK_ORIENTATION_VERTICAL,Y)  #endif +#if !GTK_CHECK_VERSION (3, 20, 0) +#define gtk_widget_set_focus_on_click(a, b) gtk_button_set_focus_on_click(GTK_BUTTON(a), b) +#endif +  struct GSLockPlugPrivate  {  	GtkWidget   *vbox; @@ -1708,7 +1712,7 @@ gs_lock_plug_add_button (GSLockPlug  *plug,  	g_return_val_if_fail (GS_IS_LOCK_PLUG (plug), NULL);  	g_return_val_if_fail (button_text != NULL, NULL); -	button = gtk_button_new_from_stock (button_text); +	button = gtk_button_new_with_label (button_text);  	gtk_widget_set_can_default (button, TRUE); @@ -1773,24 +1777,24 @@ create_page_one_buttons (GSLockPlug *plug)  	gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (plug->priv->auth_action_area),  	                                    plug->priv->auth_switch_button,  	                                    TRUE); -	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_switch_button), FALSE); +	gtk_widget_set_focus_on_click (GTK_WIDGET (plug->priv->auth_switch_button), FALSE);  	gtk_widget_set_no_show_all (plug->priv->auth_switch_button, TRUE);  	plug->priv->auth_logout_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),  	                                  plug->priv->auth_action_area,  	                                  _("Log _Out")); -	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_logout_button), FALSE); +	gtk_widget_set_focus_on_click (GTK_WIDGET (plug->priv->auth_logout_button), FALSE);  	gtk_widget_set_no_show_all (plug->priv->auth_logout_button, TRUE);  	plug->priv->auth_cancel_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),  	                                  plug->priv->auth_action_area,  	                                  GTK_STOCK_CANCEL); -	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_cancel_button), FALSE); +	gtk_widget_set_focus_on_click (GTK_WIDGET (plug->priv->auth_cancel_button), FALSE);  	plug->priv->auth_unlock_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),  	                                  plug->priv->auth_action_area,  	                                  _("_Unlock")); -	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_unlock_button), FALSE); +	gtk_widget_set_focus_on_click (GTK_WIDGET (plug->priv->auth_unlock_button), FALSE);  	gtk_window_set_default (GTK_WINDOW (plug), plug->priv->auth_unlock_button); @@ -1940,19 +1944,31 @@ expand_string_for_label (GtkWidget *label)  static void  create_page_one (GSLockPlug *plug)  { -	GtkWidget            *align;  	GtkWidget            *vbox;  	GtkWidget            *vbox2;  	GtkWidget            *hbox; +#if !GTK_CHECK_VERSION(3, 0, 0) +	GtkWidget            *align; +#endif  	char                 *str;  	gs_profile_start ("page one"); +#if GTK_CHECK_VERSION(3, 0, 0) +	vbox = gtk_vbox_new (FALSE, 12); +	gtk_widget_set_halign (GTK_WIDGET (vbox), +	                       GTK_ALIGN_CENTER); +	gtk_widget_set_valign (GTK_WIDGET (vbox), +	                       GTK_ALIGN_CENTER); + +	gtk_notebook_append_page (GTK_NOTEBOOK (plug->priv->notebook), vbox, NULL); +#else  	align = gtk_alignment_new (0.5, 0.5, 1, 1);  	gtk_notebook_append_page (GTK_NOTEBOOK (plug->priv->notebook), align, NULL);  	vbox = gtk_vbox_new (FALSE, 12);  	gtk_container_add (GTK_CONTAINER (align), vbox); +#endif  	vbox2 = gtk_vbox_new (FALSE, 0);  	gtk_box_pack_start (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0); @@ -1962,7 +1978,7 @@ create_page_one (GSLockPlug *plug)  	g_free (str);  #if GTK_CHECK_VERSION (3, 16, 0)  	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_time_label), 0.5); -	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_time_label), 0.5); +	gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_time_label), 0.5);  #else  	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_time_label), 0.5, 0.5);  #endif @@ -1974,7 +1990,7 @@ create_page_one (GSLockPlug *plug)  	g_free (str);  #if GTK_CHECK_VERSION (3, 16, 0)  	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_date_label), 0.5); -	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_date_label), 0.5); +	gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_date_label), 0.5);  #else  	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_date_label), 0.5, 0.5);  #endif @@ -1999,7 +2015,7 @@ create_page_one (GSLockPlug *plug)  	expand_string_for_label (plug->priv->auth_realname_label);  #if GTK_CHECK_VERSION (3, 16, 0)  	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_realname_label), 0.5); -	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_realname_label), 0.5); +	gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_realname_label), 0.5);  #else  	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_realname_label), 0.5, 0.5);  #endif @@ -2013,7 +2029,7 @@ create_page_one (GSLockPlug *plug)  	expand_string_for_label (plug->priv->auth_username_label);  #if GTK_CHECK_VERSION (3, 16, 0)  	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_realname_label), 0.5); -	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_realname_label), 0.5); +	gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_realname_label), 0.5);  #else  	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_username_label), 0.5, 0.5);  #endif @@ -2029,6 +2045,7 @@ create_page_one (GSLockPlug *plug)  	plug->priv->auth_prompt_label = gtk_label_new_with_mnemonic (_("_Password:"));  #if GTK_CHECK_VERSION (3, 16, 0)  	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_prompt_label), 0.0); +	gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_prompt_label), 0.5);  #else  	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_prompt_label), 0.0, 0.5);  #endif @@ -2043,7 +2060,7 @@ create_page_one (GSLockPlug *plug)  	plug->priv->auth_capslock_label = gtk_label_new ("");  #if GTK_CHECK_VERSION (3, 16, 0)  	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_capslock_label), 0.5); -	gtk_label_set_xalign (GTK_LABEL (plug->priv->auth_capslock_label), 0.5); +	gtk_label_set_yalign (GTK_LABEL (plug->priv->auth_capslock_label), 0.5);  #else  	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_capslock_label), 0.5, 0.5);  #endif @@ -2123,7 +2140,7 @@ load_theme (GSLockPlug *plug)  	char       *theme;  	char       *filename;  	char       *gtkbuilder; -	char       *rc; +	char       *css;  	GtkBuilder *builder;  	GtkWidget  *lock_dialog;  	GError     *error=NULL; @@ -2144,17 +2161,30 @@ load_theme (GSLockPlug *plug)  		return FALSE;  	} -	filename = g_strdup_printf ("lock-dialog-%s.gtkrc", theme); +#if GTK_CHECK_VERSION (3, 0, 0) +	filename = g_strdup_printf ("lock-dialog-%s.css", theme);  	g_free (theme); -	rc = g_build_filename (GTKBUILDERDIR, filename, NULL); +	css = g_build_filename (GTKBUILDERDIR, filename, NULL);  	g_free (filename); -	if (g_file_test (rc, G_FILE_TEST_IS_REGULAR)) +	if (g_file_test (css, G_FILE_TEST_IS_REGULAR))  	{ -		gtk_rc_parse (rc); +		GtkCssProvider *style_provider = gtk_css_provider_get_default (); +		gtk_css_provider_load_from_path (style_provider, css, NULL);  	} -	g_free (rc); +	g_free (css); +#else +	filename = g_strdup_printf ("lock-dialog-%s.gtkrc", theme); +	g_free (theme); +	css = g_build_filename (GTKBUILDERDIR, filename, NULL); +	g_free (filename); +	if (g_file_test (css, G_FILE_TEST_IS_REGULAR)) +	{ +		gtk_rc_parse (css); +	} +	g_free (css); +#endif  	builder = gtk_builder_new();  	if (!gtk_builder_add_from_file (builder,gtkbuilder,&error)) diff --git a/src/gs-manager.c b/src/gs-manager.c index a77ebd7..c5ce240 100644 --- a/src/gs-manager.c +++ b/src/gs-manager.c @@ -1103,6 +1103,9 @@ find_window_at_pointer (GSManager *manager)  {  	GdkDisplay *display;  	GdkScreen  *screen; +#if GTK_CHECK_VERSION (3, 0, 0) +	GdkDevice  *device; +#endif  	int         monitor;  	int         x, y;  	GSWindow   *window; @@ -1110,7 +1113,17 @@ find_window_at_pointer (GSManager *manager)  	GSList     *l;  	display = gdk_display_get_default (); + +#if GTK_CHECK_VERSION (3, 0, 0) +#if GTK_CHECK_VERSION(3, 20, 0) +	device = gdk_seat_get_pointer (gdk_display_get_default_seat (display)); +#else +	device = gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (display)); +#endif +	gdk_device_get_position (device, &screen, &x, &y); +#else  	gdk_display_get_pointer (display, &screen, &x, &y, NULL); +#endif  	monitor = gdk_screen_get_monitor_at_point (screen, x, y);  	screen_num = gdk_screen_get_number (screen); @@ -1163,12 +1176,24 @@ manager_maybe_grab_window (GSManager *manager,  {  	GdkDisplay *display;  	GdkScreen  *screen; +#if GTK_CHECK_VERSION (3, 0, 0) +	GdkDevice  *device; +#endif  	int         monitor;  	int         x, y;  	gboolean    grabbed;  	display = gdk_display_get_default (); +#if GTK_CHECK_VERSION (3, 0, 0) +#if GTK_CHECK_VERSION(3, 20, 0) +	device = gdk_seat_get_pointer (gdk_display_get_default_seat (display)); +#else +	device = gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (display)); +#endif +	gdk_device_get_position (device, &screen, &x, &y); +#else  	gdk_display_get_pointer (display, &screen, &x, &y, NULL); +#endif  	monitor = gdk_screen_get_monitor_at_point (screen, x, y);  	gdk_flush (); @@ -1641,8 +1666,10 @@ gs_manager_destroy_windows (GSManager *manager)  {  	GdkDisplay  *display;  	GSList      *l; +#if !GTK_CHECK_VERSION (3, 10, 0)  	int          n_screens;  	int          i; +#endif  	g_return_if_fail (manager != NULL);  	g_return_if_fail (GS_IS_MANAGER (manager)); @@ -1654,6 +1681,11 @@ gs_manager_destroy_windows (GSManager *manager)  	display = gdk_display_get_default (); +#if GTK_CHECK_VERSION (3, 10, 0) +	g_signal_handlers_disconnect_by_func (gdk_display_get_default_screen (display), +	                                      on_screen_monitors_changed, +	                                      manager); +#else  	n_screens = gdk_display_get_n_screens (display);  	for (i = 0; i < n_screens; i++) @@ -1662,6 +1694,7 @@ gs_manager_destroy_windows (GSManager *manager)  		                                      on_screen_monitors_changed,  		                                      manager);  	} +#endif  	for (l = manager->priv->windows; l; l = l->next)  	{ @@ -1744,8 +1777,10 @@ static void  gs_manager_create_windows (GSManager *manager)  {  	GdkDisplay  *display; +#if !GTK_CHECK_VERSION (3, 10, 0)  	int          n_screens;  	int          i; +#endif  	g_return_if_fail (manager != NULL);  	g_return_if_fail (GS_IS_MANAGER (manager)); @@ -1753,6 +1788,15 @@ gs_manager_create_windows (GSManager *manager)  	g_assert (manager->priv->windows == NULL);  	display = gdk_display_get_default (); +#if GTK_CHECK_VERSION (3, 10, 0) +	g_signal_connect (gdk_display_get_default_screen (display), +	                  "monitors-changed", +	                  G_CALLBACK (on_screen_monitors_changed), +	                  manager); + +	gs_manager_create_windows_for_screen (manager, +	                                      gdk_display_get_default_screen (display)); +#else  	n_screens = gdk_display_get_n_screens (display);  	for (i = 0; i < n_screens; i++) @@ -1762,8 +1806,10 @@ gs_manager_create_windows (GSManager *manager)  		                  G_CALLBACK (on_screen_monitors_changed),  		                  manager); -		gs_manager_create_windows_for_screen (manager, gdk_display_get_screen (display, i)); +		gs_manager_create_windows_for_screen (manager, +		                                      gdk_display_get_screen (display, i));  	} +#endif  }  GSManager * diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c index 8199786..e49cbd4 100644 --- a/src/gs-window-x11.c +++ b/src/gs-window-x11.c @@ -1107,7 +1107,7 @@ gs_window_real_show (GtkWidget *widget)  static void  set_info_text_and_icon (GSWindow   *window, -                        const char *icon_stock_id, +                        const char *icon_name,                          const char *primary_text,                          const char *secondary_text)  { @@ -1123,7 +1123,7 @@ set_info_text_and_icon (GSWindow   *window,  	hbox_content = gtk_hbox_new (FALSE, 8);  	gtk_widget_show (hbox_content); -	image = gtk_image_new_from_stock (icon_stock_id, GTK_ICON_SIZE_DIALOG); +	image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_DIALOG);  	gtk_widget_show (image);  	gtk_box_pack_start (GTK_BOX (hbox_content), image, FALSE, FALSE, 0);  #if GTK_CHECK_VERSION (3, 0, 0) @@ -1700,7 +1700,15 @@ create_lock_socket (GSWindow *window,                      guint32   id)  {  	window->priv->lock_socket = gtk_socket_new (); +#if GTK_CHECK_VERSION(3, 12, 0) +	window->priv->lock_box = gtk_grid_new (); +	gtk_widget_set_halign (GTK_WIDGET (window->priv->lock_box), +	                       GTK_ALIGN_CENTER); +	gtk_widget_set_valign (GTK_WIDGET (window->priv->lock_box), +	                       GTK_ALIGN_CENTER); +#else  	window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0); +#endif  	gtk_widget_show (window->priv->lock_box);  	gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->lock_box, TRUE, TRUE, 0); @@ -1764,8 +1772,7 @@ static void  shake_dialog (GSWindow *window)  {  	int   i; -	guint left; -	guint right; +	guint start, end;  	window->priv->dialog_shake_in_progress = TRUE; @@ -1773,13 +1780,13 @@ shake_dialog (GSWindow *window)  	{  		if (i % 2 == 0)  		{ -			left = 30; -			right = 0; +			start = 30; +			end = 0;  		}  		else  		{ -			left = 0; -			right = 30; +			start = 0; +			end = 30;  		}  		if (! window->priv->lock_box) @@ -1787,10 +1794,16 @@ shake_dialog (GSWindow *window)  			break;  		} +#if GTK_CHECK_VERSION(3, 12, 0) +		gtk_widget_set_margin_start (GTK_WIDGET (window->priv->lock_box), +		                             start); +		gtk_widget_set_margin_end (GTK_WIDGET (window->priv->lock_box), +		                           end); +#else  		gtk_alignment_set_padding (GTK_ALIGNMENT (window->priv->lock_box),  		                           0, 0, -		                           left, -		                           right); +		                           start, end); +#endif  		while (gtk_events_pending ())  		{ diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c index fb0d311..5dd0757 100644 --- a/src/mate-screensaver-preferences.c +++ b/src/mate-screensaver-preferences.c @@ -301,12 +301,15 @@ config_set_lock (gboolean lock)  static void  preview_clear (GtkWidget *widget)  { -	GdkColor color = { 0, 0, 0 }; - -	gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &color);  #if GTK_CHECK_VERSION (3, 0, 0) +	GdkRGBA black = { 0.0, 0.0, 0.0, 1.0 }; + +	gdk_window_set_background_rgba (gtk_widget_get_window (widget), &black);  	gtk_widget_queue_draw (widget);  #else +	GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; + +	gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &black);  	gdk_window_clear (gtk_widget_get_window (widget));  #endif  } @@ -1203,7 +1206,7 @@ fullscreen_preview_start_cb (GtkWidget *widget,  static void  constrain_list_size (GtkWidget      *widget, -                     GtkRequisition *requisition, +                     GtkAllocation  *allocation,                       GtkWidget      *to_size)  {  	GtkRequisition req; @@ -1218,14 +1221,14 @@ constrain_list_size (GtkWidget      *widget,  	gtk_widget_size_request (to_size, &req);  #endif -	requisition->height = MIN (req.height, max_height); +	allocation->height = MIN (req.height, max_height);  }  static void  setup_list_size_constraint (GtkWidget *widget,                              GtkWidget *to_size)  { -	g_signal_connect (widget, "size-request", +	g_signal_connect (widget, "size-allocate",  	                  G_CALLBACK (constrain_list_size), to_size);  } | 
