|
||||
File indexing completed on 2025-01-31 09:21:53
0001 // 0002 // ******************************************************************** 0003 // * License and Disclaimer * 0004 // * * 0005 // * The Geant4 software is copyright of the Copyright Holders of * 0006 // * the Geant4 Collaboration. It is provided under the terms and * 0007 // * conditions of the Geant4 Software License, included in the file * 0008 // * LICENSE and available at http://cern.ch/geant4/license . These * 0009 // * include a list of copyright holders. * 0010 // * * 0011 // * Neither the authors of this software system, nor their employing * 0012 // * institutes,nor the agencies providing financial support for this * 0013 // * work make any representation or warranty, express or implied, * 0014 // * regarding this software system or assume any liability for its * 0015 // * use. Please see the license in the file LICENSE and URL above * 0016 // * for the full disclaimer and the limitation of liability. * 0017 // * * 0018 // * This code implementation is the result of the scientific and * 0019 // * technical work of the GEANT4 collaboration. * 0020 // * By using, copying, modifying or distributing the software (or * 0021 // * any work based on the software) you agree to acknowledge its * 0022 // * use in resulting scientific publications, and indicate your * 0023 // * acceptance of all terms of the Geant4 Software license. * 0024 // ******************************************************************** 0025 // 0026 /* 0027 * ============================================================================= 0028 * 0029 * Filename: CexmcHistoWidget.cc 0030 * 0031 * Description: histogram widget without context menu 0032 * (derived from TQtWidget) 0033 * 0034 * Version: 1.0 0035 * Created: 15.03.2010 19:01:52 0036 * Revision: none 0037 * Compiler: gcc 0038 * 0039 * Author: Alexey Radkov (), 0040 * Company: PNPI 0041 * 0042 * ============================================================================= 0043 */ 0044 0045 #ifdef CEXMC_USE_ROOTQT 0046 0047 #include <QContextMenuEvent> 0048 #include <TObject.h> 0049 #include <TH1.h> 0050 #include <TAxis.h> 0051 #include <TList.h> 0052 #include "CexmcHistoWidget.hh" 0053 0054 0055 CexmcHistoWidget::CexmcHistoWidget() 0056 { 0057 /* this is a workaround of the repaint bug in the ROOT Qt backend: 0058 * see http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=17081#p73055 */ 0059 fCanvas->SetFillColor( 10 ); 0060 } 0061 0062 0063 void CexmcHistoWidget::contextMenuEvent( QContextMenuEvent * aEvent ) 0064 { 0065 /* TRootContextMenu responsiveness is very ugly and unstable in Geant4 0066 * environment, so we have to replace it with something more useful 0067 * (e.g. unzooming histogram axes). 0068 * We can switcn back to context menu as soon as ROOT will implement Qt 0069 * backend for its context menu. 0070 * TQtWidget utilizes QContextMenuEvent::Other reason to draw 0071 * TRootContextMenu object. */ 0072 if ( aEvent->reason() == QContextMenuEvent::Other ) 0073 { 0074 TObject * object( NULL ); 0075 TListIter curPrimitive( fCanvas->GetListOfPrimitives() ); 0076 while ( ( object = curPrimitive.Next() ) ) 0077 { 0078 if ( ! object->InheritsFrom( TH1::Class() ) ) 0079 continue; 0080 TH1 * histo( static_cast< TH1 * >( object ) ); 0081 TAxis * axis( histo->GetXaxis() ); 0082 if ( axis ) 0083 axis->UnZoom(); 0084 axis = histo->GetYaxis(); 0085 if ( axis ) 0086 axis->UnZoom(); 0087 axis = histo->GetZaxis(); 0088 if ( axis ) 0089 axis->UnZoom(); 0090 } 0091 fCanvas->Update(); 0092 } 0093 } 0094 0095 #endif 0096
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |