~ubuntu-branches/ubuntu/precise/evince/precise-updates

« back to all changes in this revision

Viewing changes to cut-n-paste/zoom-control/ephy-zoom-control.c

  • Committer: Bazaar Package Importer
  • Author(s): Didier Roche
  • Date: 2009-02-10 15:24:04 UTC
  • mto: (1.6.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 72.
  • Revision ID: james.westby@ubuntu.com-20090210152404-9el29bkm4unsnj6n
Tags: upstream-2.25.90
ImportĀ upstreamĀ versionĀ 2.25.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 *  along with this program; if not, write to the Free Software
18
18
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
19
 *
20
 
 *  $Id: ephy-zoom-control.c 3240 2008-10-27 12:17:08Z chpe $
 
20
 *  $Id: ephy-zoom-control.c 3402 2009-02-01 17:03:05Z carlosgc $
21
21
 */
22
22
 
23
23
#include "config.h"
28
28
#include <gtk/gtk.h>
29
29
#include <glib/gi18n.h>
30
30
 
31
 
#define EPHY_ZOOM_CONTROL_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_ZOOM_CONTROL, EphyZoomControlPrivate))
 
31
#define EPHY_ZOOM_CONTROL_GET_PRIVATE(object)\
 
32
        (G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_ZOOM_CONTROL, EphyZoomControlPrivate))
32
33
 
33
34
struct _EphyZoomControlPrivate
34
35
{
57
58
 
58
59
static guint signals[LAST_SIGNAL];
59
60
 
60
 
static GObjectClass *parent_class = NULL;
61
 
 
62
 
static void     ephy_zoom_control_class_init    (EphyZoomControlClass *klass);
63
 
static void     ephy_zoom_control_init          (EphyZoomControl *control);
64
 
static void     ephy_zoom_control_finalize      (GObject *o);
65
 
 
66
 
GType
67
 
ephy_zoom_control_get_type (void)
68
 
{
69
 
        static GType type = 0;
70
 
 
71
 
        if (G_UNLIKELY (type == 0))
72
 
        {
73
 
                const GTypeInfo our_info =
74
 
                        {
75
 
                                sizeof (EphyZoomControlClass),
76
 
                                NULL, /* base_init */
77
 
                                NULL, /* base_finalize */
78
 
                                (GClassInitFunc) ephy_zoom_control_class_init,
79
 
                                NULL,
80
 
                                NULL, /* class_data */
81
 
                                sizeof (EphyZoomControl),
82
 
                                0, /* n_preallocs */
83
 
                                (GInstanceInitFunc) ephy_zoom_control_init,
84
 
                        };
85
 
 
86
 
                type = g_type_register_static (GTK_TYPE_TOOL_ITEM,
87
 
                                               "EphyZoomControl",
88
 
                                               &our_info, 0);
89
 
        }
90
 
 
91
 
        return type;
92
 
}
 
61
G_DEFINE_TYPE (EphyZoomControl, ephy_zoom_control, GTK_TYPE_TOOL_ITEM)
93
62
 
94
63
static void
95
64
combo_changed_cb (GtkComboBox *combo, EphyZoomControl *control)
130
99
}
131
100
 
132
101
static void
 
102
ephy_zoom_control_finalize (GObject *o)
 
103
{
 
104
        EphyZoomControl *control = EPHY_ZOOM_CONTROL (o);
 
105
 
 
106
        g_object_unref (control->priv->combo);
 
107
 
 
108
        G_OBJECT_CLASS (ephy_zoom_control_parent_class)->finalize (o);
 
109
}
 
110
 
 
111
static void
133
112
ephy_zoom_control_init (EphyZoomControl *control)
134
113
{
135
114
        EphyZoomControlPrivate *p;
232
211
        }
233
212
}
234
213
 
235
 
#if !GTK_CHECK_VERSION (2, 11, 5)
236
 
static void
237
 
set_combo_tooltip (GtkWidget *widget, 
238
 
                   GtkTooltipsData *data)
239
 
{
240
 
        if (GTK_IS_BUTTON (widget))
241
 
        {
242
 
                gtk_tooltips_set_tip (data->tooltips, widget,
243
 
                                      data->tip_text, data->tip_private);
244
 
        }
245
 
}
246
 
 
247
 
static void
248
 
combo_realized (GtkWidget *combo,
249
 
                GtkWidget *control)
250
 
{
251
 
        GtkTooltipsData *data;
252
 
 
253
 
        data = gtk_tooltips_data_get (control);
254
 
        g_return_if_fail (data != NULL);
255
 
 
256
 
        gtk_container_forall (GTK_CONTAINER (combo),
257
 
                              (GtkCallback) set_combo_tooltip, data);
258
 
}
259
 
 
260
 
static gboolean
261
 
ephy_zoom_control_set_tooltip (GtkToolItem *tool_item,
262
 
                               GtkTooltips *tooltips,
263
 
                               const char *tip_text,
264
 
                               const char *tip_private)
265
 
{
266
 
        EphyZoomControl *control = EPHY_ZOOM_CONTROL (tool_item);
267
 
        GtkWidget *widget = GTK_WIDGET (tool_item);
268
 
 
269
 
        /* hack to make tooltips work also on Ctrl-F1 */
270
 
        gtk_tooltips_set_tip (tooltips, widget, tip_text, tip_private);
271
 
 
272
 
        g_signal_handlers_disconnect_by_func
273
 
                (control->priv->combo, G_CALLBACK (combo_realized), widget);
274
 
 
275
 
        if (GTK_WIDGET_REALIZED (tool_item))
276
 
        {
277
 
                combo_realized (GTK_WIDGET (control->priv->combo), widget);
278
 
        }
279
 
        else
280
 
        {
281
 
                g_signal_connect_after (control->priv->combo, "realize",
282
 
                                        G_CALLBACK (combo_realized), widget);
283
 
        }
284
 
 
285
 
        return TRUE;
286
 
}
287
 
#endif /* !GTK_CHECK_VERSION (2, 11, 5) */
288
 
 
289
214
static void
290
215
ephy_zoom_control_class_init (EphyZoomControlClass *klass)
291
216
{
292
217
        GObjectClass *object_class;
293
218
        GtkToolItemClass *tool_item_class;
294
219
 
295
 
        parent_class = g_type_class_peek_parent (klass);
296
 
 
297
220
        object_class = (GObjectClass *)klass;
298
221
        tool_item_class = (GtkToolItemClass *)klass;
299
222
 
301
224
        object_class->get_property = ephy_zoom_control_get_property;
302
225
        object_class->finalize = ephy_zoom_control_finalize;
303
226
 
304
 
#if !GTK_CHECK_VERSION (2, 11, 5)
305
 
        tool_item_class->set_tooltip = ephy_zoom_control_set_tooltip;
306
 
#endif
307
 
 
308
227
        g_object_class_install_property (object_class,
309
228
                                         PROP_ZOOM,
310
229
                                         g_param_spec_float ("zoom",
330
249
        g_type_class_add_private (object_class, sizeof (EphyZoomControlPrivate));
331
250
}
332
251
 
333
 
static void
334
 
ephy_zoom_control_finalize (GObject *o)
335
 
{
336
 
        EphyZoomControl *control = EPHY_ZOOM_CONTROL (o);
337
 
 
338
 
        g_object_unref (control->priv->combo);
339
 
 
340
 
        G_OBJECT_CLASS (parent_class)->finalize (o);
341
 
}
342
 
 
343
252
void
344
253
ephy_zoom_control_set_zoom_level (EphyZoomControl *control, float zoom)
345
254
{