1
/* This file is part of GQ
4
* Sven Herzberg <herzi@gnome-de.org>
6
* Copyright (C) 2007 Sven Herzberg
8
* This program is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public License as
10
* published by the Free Software Foundation; either version 2.1 of the
11
* License, or (at your option) any later version.
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Lesser General Public License for more details.
18
* You should have received a copy of the GNU Lesser General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
24
#include "gq-tree-view.h"
26
#include "gq-main-loop.h"
28
struct GqTreeViewPrivate {
31
#define P(i) (G_TYPE_INSTANCE_GET_PRIVATE((i), GQ_TYPE_TREE_VIEW, struct GqTreeViewPrivate))
34
gq_tree_view_new(void)
36
return g_object_new(GQ_TYPE_TREE_VIEW, NULL);
40
G_DEFINE_TYPE(GqTreeView, gq_tree_view, GTK_TYPE_TREE_VIEW);
43
gq_tree_view_init(GqTreeView* self G_GNUC_UNUSED)
47
tree_view_dispose(GObject* object)
49
if(P(object)->source_id) {
50
g_source_remove(P(object)->source_id);
51
P(object)->source_id = 0;
53
G_OBJECT_CLASS(gq_tree_view_parent_class)->dispose(object);
57
tree_view_queue_draw(gpointer data)
59
if(!gq_main_loop_blocked()) {
60
GtkWidget* widget = GTK_WIDGET(data);
61
gtk_widget_queue_draw(widget);
62
P(widget)->source_id = 0;
70
tree_view_expose_event(GtkWidget * widget,
71
GdkEventExpose* event)
73
if(gq_main_loop_blocked() && !P(widget)->source_id) {
74
P(widget)->source_id = g_timeout_add(100, tree_view_queue_draw, widget);
77
else if(!gq_main_loop_blocked())
79
return GTK_WIDGET_CLASS(gq_tree_view_parent_class)->expose_event(widget, event);
85
gq_tree_view_class_init(GqTreeViewClass* self_class)
87
GObjectClass* object_class = G_OBJECT_CLASS(self_class);
88
GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(self_class);
90
object_class->dispose = tree_view_dispose;
91
widget_class->expose_event = tree_view_expose_event;
93
g_type_class_add_private(self_class, sizeof(struct GqTreeViewPrivate));