File indexing completed on 2024-05-12 17:05:49
0001 /* 0002 this file is part of the oxygen gtk engine 0003 SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "oxygenpaneddata.h" 0009 0010 #include <cassert> 0011 0012 namespace Oxygen 0013 { 0014 0015 //_______________________________________________ 0016 void PanedData::connect( GtkWidget* widget ) 0017 { 0018 updateCursor( widget ); 0019 _realizeId.connect( G_OBJECT(widget), "realize", G_CALLBACK( realizeEvent ), this ); 0020 } 0021 0022 //_______________________________________________ 0023 void PanedData::disconnect( GtkWidget* ) 0024 { _realizeId.disconnect(); } 0025 0026 //_______________________________________________ 0027 void PanedData::realizeEvent( GtkWidget* widget, gpointer data ) 0028 { static_cast<PanedData*>( data )->updateCursor( widget ); } 0029 0030 //_______________________________________________ 0031 void PanedData::updateCursor( GtkWidget* widget ) 0032 { 0033 0034 // do nothing if incorrect widget type 0035 if( !GTK_IS_PANED( widget ) ) return; 0036 0037 // load cursor if needed 0038 if( !_cursorLoaded ) 0039 { 0040 assert( !_cursor ); 0041 0042 GdkDisplay *display( gtk_widget_get_display( widget ) ); 0043 _cursor = gdk_cursor_new_from_name( display, GTK_IS_VPANED( widget ) ? "col-resize":"row-resize" ); 0044 _cursorLoaded = true; 0045 0046 } 0047 0048 // assign to widget 0049 if( _cursor ) 0050 { 0051 0052 // load handle window 0053 #if GTK_CHECK_VERSION(2, 20, 0) 0054 GdkWindow* window( gtk_paned_get_handle_window( GTK_PANED( widget ) ) ); 0055 #else 0056 GdkWindow* window( GTK_PANED( widget )->handle ); 0057 #endif 0058 0059 // assign cursor 0060 gdk_window_set_cursor( window, _cursor ); 0061 0062 } 0063 0064 } 0065 0066 }