pidgin/pidgin
Clone
Summary
Browse
Changes
Graph
Merged in rw_grim/pidgin/replace-nm-with-gio (pull request #4)
2015-12-30, Gary Kramlich
d45200b32287
Merged in rw_grim/pidgin/replace-nm-with-gio (pull request #4)
Replace nm with gio
/* pidgin
*
* Pidgin is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#ifndef _PIDGINGTK3COMPAT_H_
#define _PIDGINGTK3COMPAT_H_
/*
* SECTION:gtk3compat
* @section_id: pidgin-gtk3compat
* @short_description: <filename>gtk3compat.h</filename>
* @title: GTK3 version-dependent definitions
*
* This file is internal to Pidgin. Do not use!
* Also, any public API should not depend on this file.
*/
#include
<gtk/gtk.h>
#include
<math.h>
#if !GTK_CHECK_VERSION(3,4,0)
#define gtk_color_chooser_dialog_new(title, parent) \
gtk_color_selection_dialog_new(title)
#define GTK_COLOR_CHOOSER(widget) (GTK_WIDGET(widget))
static
inline
void
gtk_color_chooser_set_use_alpha
(
GtkWidget
*
widget
,
gboolean
use_alpha
)
{
if
(
GTK_IS_COLOR_BUTTON
(
widget
))
{
gtk_color_button_set_use_alpha
(
GTK_COLOR_BUTTON
(
widget
),
use_alpha
);
}
}
static
inline
void
pidgin_color_chooser_set_rgb
(
GtkWidget
*
widget
,
const
GdkColor
*
color
)
{
if
(
GTK_IS_COLOR_SELECTION_DIALOG
(
widget
))
{
GtkWidget
*
colorsel
;
colorsel
=
gtk_color_selection_dialog_get_color_selection
(
GTK_COLOR_SELECTION_DIALOG
(
widget
));
gtk_color_selection_set_current_color
(
GTK_COLOR_SELECTION
(
colorsel
),
color
);
}
else
gtk_color_button_set_color
(
GTK_COLOR_BUTTON
(
widget
),
color
);
}
static
inline
void
pidgin_color_chooser_get_rgb
(
GtkWidget
*
widget
,
GdkColor
*
color
)
{
if
(
GTK_IS_COLOR_SELECTION_DIALOG
(
widget
))
{
GtkWidget
*
colorsel
;
colorsel
=
gtk_color_selection_dialog_get_color_selection
(
GTK_COLOR_SELECTION_DIALOG
(
widget
));
gtk_color_selection_get_current_color
(
GTK_COLOR_SELECTION
(
colorsel
),
color
);
}
else
gtk_color_button_get_color
(
GTK_COLOR_BUTTON
(
widget
),
color
);
}
#else
/* 3.4.0 */
static
inline
void
pidgin_color_chooser_set_rgb
(
GtkColorChooser
*
chooser
,
const
GdkColor
*
rgb
)
{
GdkRGBA
rgba
;
rgba
.
red
=
rgb
->
red
/
65535.0
;
rgba
.
green
=
rgb
->
green
/
65535.0
;
rgba
.
blue
=
rgb
->
blue
/
65535.0
;
rgba
.
alpha
=
1.0
;
gtk_color_chooser_set_rgba
(
chooser
,
&
rgba
);
}
static
inline
void
pidgin_color_chooser_get_rgb
(
GtkColorChooser
*
chooser
,
GdkColor
*
rgb
)
{
GdkRGBA
rgba
;
gtk_color_chooser_get_rgba
(
chooser
,
&
rgba
);
rgb
->
red
=
(
int
)
round
(
rgba
.
red
*
65535.0
);
rgb
->
green
=
(
int
)
round
(
rgba
.
green
*
65535.0
);
rgb
->
blue
=
(
int
)
round
(
rgba
.
blue
*
65535.0
);
}
#endif
/* 3.4.0 and gtk_color_chooser_ */
#if GTK_CHECK_VERSION(3,0,0)
static
inline
GtkWidget
*
gtk_grid_table_new
(
guint
rows
,
guint
columns
)
{
return
gtk_grid_new
();
}
static
inline
void
gtk_grid_attach_defaults
(
GtkGrid
*
grid
,
GtkWidget
*
child
,
gint
left
,
gint
top
,
gint
width
,
gint
height
)
{
gtk_grid_attach
(
grid
,
child
,
left
,
top
,
width
,
height
);
gtk_widget_set_hexpand
(
child
,
TRUE
);
gtk_widget_set_vexpand
(
child
,
TRUE
);
}
static
inline
void
gtk_grid_attach_full
(
GtkGrid
*
grid
,
GtkWidget
*
child
,
guint
left
,
guint
top
,
guint
width
,
guint
height
,
GtkAttachOptions
xoptions
,
GtkAttachOptions
yoptions
,
guint
xpadding
,
guint
ypadding
)
{
gtk_grid_attach
(
grid
,
child
,
left
,
top
,
width
,
height
);
if
(
xoptions
&
GTK_EXPAND
)
gtk_widget_set_hexpand
(
child
,
TRUE
);
if
(
!
(
xoptions
&
GTK_FILL
))
gtk_widget_set_halign
(
child
,
GTK_ALIGN_CENTER
);
gtk_widget_set_margin_left
(
child
,
xpadding
);
gtk_widget_set_margin_right
(
child
,
xpadding
);
if
(
yoptions
&
GTK_EXPAND
)
gtk_widget_set_vexpand
(
child
,
TRUE
);
if
(
!
(
yoptions
&
GTK_FILL
))
gtk_widget_set_valign
(
child
,
GTK_ALIGN_CENTER
);
gtk_widget_set_margin_top
(
child
,
ypadding
);
gtk_widget_set_margin_bottom
(
child
,
ypadding
);
}
#else
/* 3.0.0 and gtk_grid_ */
#define GTK_GRID GTK_TABLE
#define GtkGrid GtkTable
static
inline
GtkWidget
*
gtk_grid_table_new
(
guint
rows
,
guint
columns
)
{
return
gtk_table_new
(
rows
,
columns
,
FALSE
);
}
static
inline
void
gtk_grid_set_row_spacing
(
GtkGrid
*
grid
,
guint
spacing
)
{
gtk_table_set_row_spacings
(
grid
,
spacing
);
}
static
inline
void
gtk_grid_set_column_spacing
(
GtkGrid
*
grid
,
guint
spacing
)
{
gtk_table_set_col_spacings
(
grid
,
spacing
);
}
static
inline
void
gtk_grid_attach_defaults
(
GtkGrid
*
grid
,
GtkWidget
*
child
,
gint
left
,
gint
top
,
gint
width
,
gint
height
)
{
gtk_table_attach_defaults
(
grid
,
child
,
left
,
left
+
width
,
top
,
top
+
height
);
}
static
inline
void
gtk_grid_attach_full
(
GtkGrid
*
grid
,
GtkWidget
*
child
,
guint
left
,
guint
top
,
guint
width
,
guint
height
,
GtkAttachOptions
xoptions
,
GtkAttachOptions
yoptions
,
guint
xpadding
,
guint
ypadding
)
{
gtk_table_attach
(
grid
,
child
,
left
,
left
+
width
,
top
,
top
+
height
,
xoptions
,
yoptions
,
xpadding
,
ypadding
);
}
#endif
/* 3.0.0 and gtk_grid_ */
#if !GTK_CHECK_VERSION(3,2,0)
#define GTK_FONT_CHOOSER GTK_FONT_SELECTION_DIALOG
#define gtk_font_chooser_get_font gtk_font_selection_dialog_get_font_name
#define gtk_font_chooser_set_font gtk_font_selection_dialog_set_font_name
static
inline
GtkWidget
*
gtk_font_chooser_dialog_new
(
const
gchar
*
title
,
GtkWindow
*
parent
)
{
return
gtk_font_selection_dialog_new
(
title
);
}
#if !GTK_CHECK_VERSION(3,0,0)
#define gdk_x11_window_get_xid GDK_WINDOW_XWINDOW
#define gtk_widget_get_preferred_size(x,y,z) gtk_widget_size_request(x,z)
#ifdef GDK_WINDOWING_X11
#define GDK_IS_X11_WINDOW(window) TRUE
#endif
#ifdef GDK_WINDOWING_WIN32
#define GDK_IS_WIN32_WINDOW(window) TRUE
#endif
#ifdef GDK_WINDOWING_QUARTZ
#define GDK_IS_QUARTZ_WINDOW(window) TRUE
#endif
static
inline
GdkPixbuf
*
gdk_pixbuf_get_from_surface
(
cairo_surface_t
*
surface
,
gint
src_x
,
gint
src_y
,
gint
width
,
gint
height
)
{
GdkPixmap
*
pixmap
;
GdkPixbuf
*
pixbuf
;
cairo_t
*
cr
;
pixmap
=
gdk_pixmap_new
(
NULL
,
width
,
height
,
24
);
cr
=
gdk_cairo_create
(
pixmap
);
cairo_set_source_surface
(
cr
,
surface
,
-
src_x
,
-
src_y
);
cairo_paint
(
cr
);
cairo_destroy
(
cr
);
pixbuf
=
gdk_pixbuf_get_from_drawable
(
NULL
,
pixmap
,
gdk_drawable_get_colormap
(
pixmap
),
0
,
0
,
0
,
0
,
width
,
height
);
g_object_unref
(
pixmap
);
return
pixbuf
;
}
static
inline
GdkPixbuf
*
gdk_pixbuf_get_from_window
(
GdkWindow
*
window
,
gint
src_x
,
gint
src_y
,
gint
width
,
gint
height
)
{
return
gdk_pixbuf_get_from_drawable
(
NULL
,
window
,
NULL
,
src_x
,
src_y
,
0
,
0
,
width
,
height
);
}
static
inline
GtkWidget
*
gtk_box_new
(
GtkOrientation
orientation
,
gint
spacing
)
{
g_return_val_if_fail
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
||
orientation
==
GTK_ORIENTATION_VERTICAL
,
NULL
);
if
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
)
return
gtk_hbox_new
(
FALSE
,
spacing
);
else
/* GTK_ORIENTATION_VERTICAL */
return
gtk_vbox_new
(
FALSE
,
spacing
);
}
static
inline
GtkWidget
*
gtk_separator_new
(
GtkOrientation
orientation
)
{
g_return_val_if_fail
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
||
orientation
==
GTK_ORIENTATION_VERTICAL
,
NULL
);
if
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
)
return
gtk_hseparator_new
();
else
/* GTK_ORIENTATION_VERTICAL */
return
gtk_vseparator_new
();
}
static
inline
GtkWidget
*
gtk_button_box_new
(
GtkOrientation
orientation
)
{
g_return_val_if_fail
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
||
orientation
==
GTK_ORIENTATION_VERTICAL
,
NULL
);
if
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
)
return
gtk_hbutton_box_new
();
else
/* GTK_ORIENTATION_VERTICAL */
return
gtk_vbutton_box_new
();
}
static
inline
GtkWidget
*
gtk_paned_new
(
GtkOrientation
orientation
)
{
g_return_val_if_fail
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
||
orientation
==
GTK_ORIENTATION_VERTICAL
,
NULL
);
if
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
)
return
gtk_hpaned_new
();
else
/* GTK_ORIENTATION_VERTICAL */
return
gtk_vpaned_new
();
}
static
inline
GtkWidget
*
gtk_scale_new_with_range
(
GtkOrientation
orientation
,
gdouble
min
,
gdouble
max
,
gdouble
step
)
{
g_return_val_if_fail
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
||
orientation
==
GTK_ORIENTATION_VERTICAL
,
NULL
);
if
(
orientation
==
GTK_ORIENTATION_HORIZONTAL
)
return
gtk_hscale_new_with_range
(
min
,
max
,
step
);
else
/* GTK_ORIENTATION_VERTICAL */
return
gtk_vscale_new_with_range
(
min
,
max
,
step
);
}
#if !GTK_CHECK_VERSION(2,24,0)
#define gdk_x11_set_sm_client_id gdk_set_sm_client_id
#define gdk_window_get_display gdk_drawable_get_display
#define GtkComboBoxText GtkComboBox
#define GTK_COMBO_BOX_TEXT GTK_COMBO_BOX
#define gtk_combo_box_text_new gtk_combo_box_new_text
#define gtk_combo_box_text_new_with_entry gtk_combo_box_entry_new_text
#define gtk_combo_box_text_append_text gtk_combo_box_append_text
#define gtk_combo_box_text_get_active_text gtk_combo_box_get_active_text
#define gtk_combo_box_text_remove gtk_combo_box_remove_text
static
inline
gint
gdk_window_get_width
(
GdkWindow
*
x
)
{
gint
w
;
gdk_drawable_get_size
(
GDK_DRAWABLE
(
x
),
&
w
,
NULL
);
return
w
;
}
static
inline
gint
gdk_window_get_height
(
GdkWindow
*
x
)
{
gint
h
;
gdk_drawable_get_size
(
GDK_DRAWABLE
(
x
),
NULL
,
&
h
);
return
h
;
}
#if !GTK_CHECK_VERSION(2,22,0)
#define gdk_drag_context_get_actions(x) (x)->action
#define gdk_drag_context_get_suggested_action(x) (x)->suggested_action
#define gtk_text_view_get_vadjustment(x) (x)->vadjustment
#define gtk_font_selection_dialog_get_font_selection(x) (x)->fontsel
#if !GTK_CHECK_VERSION(2,20,0)
#define gtk_widget_get_mapped GTK_WIDGET_MAPPED
#define gtk_widget_set_mapped(x,y) do { \
if (y) \
GTK_WIDGET_SET_FLAGS(x, GTK_MAPPED); \
else \
GTK_WIDGET_UNSET_FLAGS(x, GTK_MAPPED); \
} while(0)
#define gtk_widget_get_realized GTK_WIDGET_REALIZED
#define gtk_widget_set_realized(x,y) do { \
if (y) \
GTK_WIDGET_SET_FLAGS(x, GTK_REALIZED); \
else \
GTK_WIDGET_UNSET_FLAGS(x, GTK_REALIZED); \
} while(0)
#endif
/* 2.20.0 */
#endif
/* 2.22.0 */
#endif
/* 2.24.0 */
#endif
/* 3.0.0 */
#endif
/* 3.2.0 */
#endif
/* _PIDGINGTK3COMPAT_H_ */