1 /*
2 * this file is part of the oxygen gtk engine
3 * Copyright (c) 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
4 * Copyright (c) 2010 Ruslan Kabatsayev <b7.10110111@gmail.com>
5 *
6 * This  library is free  software; you can  redistribute it and/or
7 * modify it  under  the terms  of the  GNU Lesser  General  Public
8 * License  as published  by the Free  Software  Foundation; either
9 * version 2 of the License, or(at your option ) any later version.
10 *
11 * This library is distributed  in the hope that it will be useful,
12 * but  WITHOUT ANY WARRANTY; without even  the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License  along  with  this library;  if not,  write to  the Free
18 * Software Foundation, Inc., 51  Franklin St, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 */
21 
22 #include "oxygentreeviewengine.h"
23 
24 namespace Oxygen
25 {
26 
27 
28     //____________________________________________________________________
TreeViewEngine(Animations * parent)29     TreeViewEngine::TreeViewEngine( Animations* parent ):
30         GenericEngine<TreeViewData>( parent ),
31         _cursorLoaded( false ),
32         _cursor( 0L )
33     {}
34 
35     //____________________________________________________________________
~TreeViewEngine(void)36     TreeViewEngine::~TreeViewEngine( void )
37     { if( _cursor ) gdk_cursor_unref( _cursor ); }
38 
39     //____________________________________________________________________
registerWidget(GtkWidget * widget)40     bool TreeViewEngine::registerWidget( GtkWidget* widget )
41     {
42         if( !GenericEngine<TreeViewData>::registerWidget( widget ) ) return false;
43         else if( GTK_IS_TREE_VIEW( widget ) )
44         {
45 
46             // always disable treelines.
47             /* tree lines are rendered by the style, in order to be able to draw them with custom color */
48             GtkTreeView* treeView( GTK_TREE_VIEW( widget ) );
49             gtk_tree_view_set_enable_tree_lines( treeView, false );
50 
51             GtkWidget* parent( gtk_widget_get_parent( widget ) );
52             GtkScrolledWindow* scrolledWindow(0);
53             if(
54                 GTK_IS_SCROLLED_WINDOW( parent ) &&
55                 gtk_scrolled_window_get_shadow_type( (scrolledWindow = GTK_SCROLLED_WINDOW( parent ) ) ) != GTK_SHADOW_IN &&
56                 !Gtk::gtk_parent_is_shadow_in( parent ) )
57             { gtk_scrolled_window_set_shadow_type( scrolledWindow, GTK_SHADOW_IN ); }
58 
59             // load cursor if needed
60             if( !_cursorLoaded )
61             {
62                 assert( !_cursor );
63                 GdkDisplay *display( gtk_widget_get_display( widget ) );
64                 _cursor = gdk_cursor_new_from_name( display, "row-resize" );
65                 _cursorLoaded = true;
66             }
67 
68             // pass cursor to data
69             data().value( widget ).setCursor( _cursor );
70 
71         }
72 
73         return true;
74 
75     }
76 
77 
78 }
79