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