File indexing completed on 2024-05-12 17:05:51
0001 /* 0002 this file is part of the oxygen gtk engine 0003 SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0004 SPDX-FileCopyrightText: 2010 Ruslan Kabatsayev <b7.10110111@gmail.com> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "oxygentreeviewengine.h" 0010 0011 namespace Oxygen 0012 { 0013 0014 0015 //____________________________________________________________________ 0016 TreeViewEngine::TreeViewEngine( Animations* parent ): 0017 GenericEngine<TreeViewData>( parent ), 0018 _cursorLoaded( false ), 0019 _cursor( 0L ) 0020 {} 0021 0022 //____________________________________________________________________ 0023 TreeViewEngine::~TreeViewEngine( void ) 0024 { if( _cursor ) gdk_cursor_unref( _cursor ); } 0025 0026 //____________________________________________________________________ 0027 bool TreeViewEngine::registerWidget( GtkWidget* widget ) 0028 { 0029 if( !GenericEngine<TreeViewData>::registerWidget( widget ) ) return false; 0030 else if( GTK_IS_TREE_VIEW( widget ) ) 0031 { 0032 0033 // always disable treelines. 0034 /* tree lines are rendered by the style, in order to be able to draw them with custom color */ 0035 GtkTreeView* treeView( GTK_TREE_VIEW( widget ) ); 0036 gtk_tree_view_set_enable_tree_lines( treeView, false ); 0037 0038 GtkWidget* parent( gtk_widget_get_parent( widget ) ); 0039 GtkScrolledWindow* scrolledWindow(0); 0040 if( 0041 GTK_IS_SCROLLED_WINDOW( parent ) && 0042 gtk_scrolled_window_get_shadow_type( (scrolledWindow = GTK_SCROLLED_WINDOW( parent ) ) ) != GTK_SHADOW_IN && 0043 !Gtk::gtk_parent_is_shadow_in( parent ) ) 0044 { gtk_scrolled_window_set_shadow_type( scrolledWindow, GTK_SHADOW_IN ); } 0045 0046 // load cursor if needed 0047 if( !_cursorLoaded ) 0048 { 0049 assert( !_cursor ); 0050 GdkDisplay *display( gtk_widget_get_display( widget ) ); 0051 _cursor = gdk_cursor_new_from_name( display, "row-resize" ); 0052 _cursorLoaded = true; 0053 } 0054 0055 // pass cursor to data 0056 data().value( widget ).setCursor( _cursor ); 0057 0058 } 0059 0060 return true; 0061 0062 } 0063 0064 0065 }