diff options
Diffstat (limited to 'tqtinterface/qt4/src/styles/tqsgistyle.cpp')
-rw-r--r-- | tqtinterface/qt4/src/styles/tqsgistyle.cpp | 1470 |
1 files changed, 0 insertions, 1470 deletions
diff --git a/tqtinterface/qt4/src/styles/tqsgistyle.cpp b/tqtinterface/qt4/src/styles/tqsgistyle.cpp deleted file mode 100644 index 45ac25b..0000000 --- a/tqtinterface/qt4/src/styles/tqsgistyle.cpp +++ /dev/null @@ -1,1470 +0,0 @@ -/**************************************************************************** -** -** Implementation of Motif-like style class -** -** Created : 981231 -** -** Copyright (C) 1998-2008 Trolltech ASA. All rights reserved. -** -** This file is part of the widgets module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at sales@trolltech.com. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#include "tqsgistyle.h" - -#if !defined(TQT_NO_STYLE_SGI) || defined(TQT_PLUGIN) - -#include "tqpopupmenu.h" -#include "tqapplication.h" -#include "tqbutton.h" -#include "tqpainter.h" -#include "tqdrawutil.h" -#include "tqpixmap.h" -#include "tqpalette.h" -#include "tqwidget.h" -#include "tqpushbutton.h" -#include "tqscrollbar.h" -#include "tqcombobox.h" -#include "tqslider.h" -#include "tqtextedit.h" -#include "tqtoolbar.h" -#include "tqlineedit.h" -#include "tqmenubar.h" -#include <limits.h> - -#ifndef TQT_NO_SLIDER -struct SliderLastPosition -{ - SliderLastPosition() : rect(0,-1,0,-1), slider(0) {} - TQRect rect; - const TQSlider* slider; -}; -#endif - -#ifndef TQT_NO_SCROLLBAR -struct ScrollbarLastPosition -{ - ScrollbarLastPosition() : rect( 0,-1, 0,-1 ), scrollbar(0) {} - TQRect rect; - const TQScrollBar *scrollbar; -}; -#endif - -class TQSGIStylePrivate -{ -public: - TQSGIStylePrivate() - : hotWidget( 0 ), mousePos( -1, -1 ) - { - } - - const TQWidget *hotWidget; - TQPoint mousePos; -#ifndef TQT_NO_SCROLLBAR - ScrollbarLastPosition lastScrollbarRect; -#endif -#ifndef TQT_NO_SLIDER - SliderLastPosition lastSliderRect; -#endif -}; - -/*! - \class TQSGIStyle tqsgistyle.h - \brief The TQSGIStyle class provides SGI/Irix look and feel. - - \ingroup appearance - - This class implements the SGI look and feel. It resembles the - SGI/Irix Motif GUI style as closely as TQStyle allows. -*/ - -/*! - Constructs a TQSGIStyle. - - If \a useHighlightCols is FALSE (default value), the style will - polish the application's color palette to emulate the Motif way of - highlighting, which is a simple inversion between the base and the - text color. - - \sa TQMotifStyle::useHighlightColors() -*/ -TQSGIStyle::TQSGIStyle( bool useHighlightCols ) : TQMotifStyle( useHighlightCols ), isApplicationStyle( 0 ) -{ - d = new TQSGIStylePrivate; -} - -/*! - Destroys the style. -*/ -TQSGIStyle::~TQSGIStyle() -{ - delete d; -} - -/*! - \reimp - - Changes some application-wide settings to be SGI-like, e.g. sets a - bold italic font for menu options. -*/ -void -TQSGIStyle::polish( TQApplication* app) -{ - isApplicationStyle = 1; - TQMotifStyle::polish( app ); - - TQPalette pal = TQApplication::palette(); - // check this on SGI-Boxes - //pal.setColor( TQColorGroup::Background, pal.active().midlight() ); - if (pal.active().button() == pal.active().background()) - pal.setColor( TQColorGroup::Button, pal.active().button().dark(120) ); - // darker basecolor in list-widgets - pal.setColor( TQColorGroup::Base, pal.active().base().dark(130) ); - if (! useHighlightColors() ) { - pal.setColor( TQPalette::Active, TQColorGroup::Highlight, pal.active().text() ); - pal.setColor( TQPalette::Active, TQColorGroup::HighlightedText, pal.active().base() ); - pal.setColor( TQPalette::Inactive, TQColorGroup::Highlight, pal.inactive().text() ); - pal.setColor( TQPalette::Inactive, TQColorGroup::HighlightedText, pal.inactive().base() ); - pal.setColor( TQPalette::Disabled, TQColorGroup::Highlight, pal.disabled().text() ); - pal.setColor( TQPalette::Disabled, TQColorGroup::HighlightedText, pal.disabled().base() ); - } - TQApplication::tqsetPalette( pal, TRUE ); - - // different basecolor and highlighting in Q(Multi)LineEdit - pal.setColor( TQColorGroup::Base, TQColor(211,181,181) ); - pal.setColor( TQPalette::Active, TQColorGroup::Highlight, pal.active().midlight() ); - pal.setColor( TQPalette::Active, TQColorGroup::HighlightedText, pal.active().text() ); - pal.setColor( TQPalette::Inactive, TQColorGroup::Highlight, pal.inactive().midlight() ); - pal.setColor( TQPalette::Inactive, TQColorGroup::HighlightedText, pal.inactive().text() ); - pal.setColor( TQPalette::Disabled, TQColorGroup::Highlight, pal.disabled().midlight() ); - pal.setColor( TQPalette::Disabled, TQColorGroup::HighlightedText, pal.disabled().text() ); - - TQApplication::tqsetPalette( pal, TRUE, "TQLineEdit" ); - TQApplication::tqsetPalette( pal, TRUE, "TQTextEdit" ); - TQApplication::tqsetPalette( pal, TRUE, "TQDateTimeEditBase" ); - - pal = TQApplication::palette(); - pal.setColor( TQColorGroup::Button, pal.active().background() ); - TQApplication::tqsetPalette( pal, TRUE, "TQMenuBar" ); - TQApplication::tqsetPalette( pal, TRUE, "TQToolBar" ); - TQApplication::tqsetPalette( pal, TRUE, "TQPopupMenu" ); -} - -/*! \reimp -*/ -void -TQSGIStyle::unPolish( TQApplication* /* app */ ) -{ - TQFont f = TQApplication::font(); - TQApplication::tqsetFont( f, TRUE ); // get rid of the special fonts for special widget classes -} - -/*! - \reimp - - Installs an event filter for several widget classes to enable - hovering. -*/ -void -TQSGIStyle::polish( TQWidget* w ) -{ - TQMotifStyle::polish(w); - - if ( !isApplicationStyle ) { - TQPalette sgiPal = TQApplication::palette(); - - sgiPal.setColor( TQColorGroup::Background, sgiPal.active().midlight() ); - if (sgiPal.active().button() == sgiPal.active().background()) - sgiPal.setColor( TQColorGroup::Button, sgiPal.active().button().dark(110) ); - sgiPal.setColor( TQColorGroup::Base, sgiPal.active().base().dark(130) ); - if (! useHighlightColors() ) { - sgiPal.setColor( TQPalette::Active, TQColorGroup::Highlight, sgiPal.active().text() ); - sgiPal.setColor( TQPalette::Active, TQColorGroup::HighlightedText, sgiPal.active().base() ); - sgiPal.setColor( TQPalette::Inactive, TQColorGroup::Highlight, sgiPal.inactive().text() ); - sgiPal.setColor( TQPalette::Inactive, TQColorGroup::HighlightedText, sgiPal.inactive().base() ); - sgiPal.setColor( TQPalette::Disabled, TQColorGroup::Highlight, sgiPal.disabled().text() ); - sgiPal.setColor( TQPalette::Disabled, TQColorGroup::HighlightedText, sgiPal.disabled().base() ); - } - - if ( ::tqqt_cast<TQLineEdit*>(w) || ::tqqt_cast<TQTextEdit*>(w) ) { - // different basecolor and highlighting in Q(Multi)LineEdit - sgiPal.setColor( TQColorGroup::Base, TQColor(211,181,181) ); - sgiPal.setColor( TQPalette::Active, TQColorGroup::Highlight, sgiPal.active().midlight() ); - sgiPal.setColor( TQPalette::Active, TQColorGroup::HighlightedText, sgiPal.active().text() ); - sgiPal.setColor( TQPalette::Inactive, TQColorGroup::Highlight, sgiPal.inactive().midlight() ); - sgiPal.setColor( TQPalette::Inactive, TQColorGroup::HighlightedText, sgiPal.inactive().text() ); - sgiPal.setColor( TQPalette::Disabled, TQColorGroup::Highlight, sgiPal.disabled().midlight() ); - sgiPal.setColor( TQPalette::Disabled, TQColorGroup::HighlightedText, sgiPal.disabled().text() ); - - } else if ( ::tqqt_cast<TQMenuBar*>(w) || ::tqqt_cast<TQToolBar*>(w) ) { - sgiPal.setColor( TQColorGroup::Button, sgiPal.active().midlight() ); - } - - w->setPalette( sgiPal ); - } - - if ( ::tqqt_cast<TQButton*>(w) || ::tqqt_cast<TQSlider*>(w) || ::tqqt_cast<TQScrollBar*>(w) ) { - w->installEventFilter( this ); - w->setMouseTracking( TRUE ); -#ifndef TQT_NO_SCROLLBAR - if ( ::tqqt_cast<TQScrollBar*>(w) ) - w->setBackgroundMode( TQt::NoBackground ); -#endif - } else if ( ::tqqt_cast<TQComboBox*>(w) ) { - TQFont f = TQApplication::font(); - f.setBold( TRUE ); - f.setItalic( TRUE ); - w->setFont( f ); -#ifndef TQT_NO_MENUBAR - } else if ( ::tqqt_cast<TQMenuBar*>(w) ) { - ((TQFrame*) w)->setFrameStyle(TQFrame::StyledPanel | TQFrame::Raised); - w->setBackgroundMode( TQt::PaletteBackground ); - TQFont f = TQApplication::font(); - f.setBold( TRUE ); - f.setItalic( TRUE ); - w->setFont( f ); -#endif -#ifndef TQT_NO_POPUPMENU - } else if ( ::tqqt_cast<TQPopupMenu*>(w) ) { - ((TQFrame*) w)->setLineWidth( tqpixelMetric( PM_DefaultFrameWidth ) + 1 ); - TQFont f = TQApplication::font(); - f.setBold( TRUE ); - f.setItalic( TRUE ); - w->setFont( f ); -#endif - } else if ( ::tqqt_cast<TQToolBar*>(w) || w->inherits("TQToolBarSeparator") ) { - w->setBackgroundMode( TQt::PaletteBackground ); - } -} - -/*! \reimp */ -void -TQSGIStyle::unPolish( TQWidget* w ) -{ - if ( ::tqqt_cast<TQButton*>(w) || ::tqqt_cast<TQSlider*>(w) || ::tqqt_cast<TQScrollBar*>(w) ) { - w->removeEventFilter( this ); -#ifndef TQT_NO_POPUPMENU - } else if ( ::tqqt_cast<TQPopupMenu*>(w) ) { - ((TQFrame*)w)->setLineWidth( tqpixelMetric( PM_DefaultFrameWidth ) ); - w->setFont( TQApplication::font() ); -#endif -#if !defined(TQT_NO_MENUBAR) || !defined(TQT_NO_COMBOBOX) - } else if ( ::tqqt_cast<TQMenuBar*>(w) || ::tqqt_cast<TQComboBox*>(w) ) { - w->setFont( TQApplication::font() ); -#endif - } -} - -/*! \reimp */ -bool TQSGIStyle::eventFilter( TQObject* o, TQEvent* e ) -{ - if ( !o->isWidgetType() || e->type() == TQEvent::Paint ) - return TQMotifStyle::eventFilter( o, e ); - - TQWidget *widget = (TQWidget*)o; - - switch ( e->type() ) { - case TQEvent::MouseButtonPress: - { -#ifndef TQT_NO_SCROLLBAR - if ( ::tqqt_cast<TQScrollBar*>(widget) ) { - d->lastScrollbarRect.rect = ((TQScrollBar*)widget)->sliderRect(); - d->lastScrollbarRect.scrollbar = ((TQScrollBar*)widget); - widget->tqrepaint( FALSE ); - } else -#endif - { -#ifndef TQT_NO_SLIDER - if ( ::tqqt_cast<TQSlider*>(widget) ) { - d->lastSliderRect.rect = ((TQSlider*)widget)->sliderRect(); - d->lastSliderRect.slider = ((TQSlider*)widget); - widget->tqrepaint( FALSE ); - } -#endif - } - } - break; - - case TQEvent::MouseButtonRelease: - { - if ( 0 ) { -#ifndef TQT_NO_SCROLLBAR - } else if ( ::tqqt_cast<TQScrollBar*>(widget) ) { - TQRect oldRect = d->lastScrollbarRect.rect; - d->lastScrollbarRect.rect = TQRect( 0, -1, 0, -1 ); - widget->tqrepaint( oldRect, FALSE ); -#endif -#ifndef TQT_NO_SLIDER - } else if ( ::tqqt_cast<TQSlider*>(widget) ) { - TQRect oldRect = d->lastSliderRect.rect; - d->lastSliderRect.rect = TQRect( 0, -1, 0, -1 ); - widget->tqrepaint( oldRect, FALSE ); -#endif - } - } - break; - - case TQEvent::MouseMove: - if ( !widget->isActiveWindow() ) - break; - if ( ((TQMouseEvent*)e)->button() ) - break; - - d->hotWidget = widget; - d->mousePos = ((TQMouseEvent*)e)->pos(); - widget->tqrepaint( FALSE ); - break; - - case TQEvent::Enter: - if ( !widget->isActiveWindow() ) - break; - d->hotWidget = widget; - widget->tqrepaint( FALSE ); - break; - - case TQEvent::Leave: - if ( !widget->isActiveWindow() ) - break; - if ( widget == d->hotWidget) { - d->hotWidget = 0; - widget->tqrepaint( FALSE ); - } - break; - - default: - break; - } - return TQMotifStyle::eventFilter( o, e ); -} - -static const int sgiItemFrame = 2; // menu item frame width -// static const int sgiSepHeight = 1; // separator item height -static const int sgiItemHMargin = 3; // menu item hor text margin -static const int sgiItemVMargin = 2; // menu item ver text margin -static const int sgiArrowHMargin = 6; // arrow horizontal margin -static const int sgiTabSpacing = 12; // space between text and tab -// static const int sgiCheckMarkHMargin = 2; // horiz. margins of check mark ### not used?!? -static const int sgiCheckMarkSpace = 20; - -/*! \reimp */ -int TQSGIStyle::tqpixelMetric( PixelMetric metric, const TQWidget *widget ) const -{ - switch ( metric ) { - case PM_DefaultFrameWidth: - return 2; - - case PM_ButtonDefaultIndicator: - return 4; - - case PM_ScrollBarExtent: - return 21; - - case PM_IndicatorWidth: - case PM_IndicatorHeight: - return 14; - - case PM_ExclusiveIndicatorWidth: - case PM_ExclusiveIndicatorHeight: - return 12; - - case PM_SplitterWidth: - return TQMAX( 10, TQApplication::globalStrut().width() ); - - default: - break; - } - return TQMotifStyle::tqpixelMetric( metric, widget ); -} - -static void drawPanel( TQPainter *p, int x, int y, int w, int h, - const TQColorGroup &g, bool sunken, - int lineWidth, const TQBrush* fill) -{ - if ( w == 0 || h == 0 ) - return; -#if defined(CHECK_RANGE) - ASSERT( w > 0 && h > 0 && lineWidth >= 0 ); -#endif - TQPen oldPen = p->pen(); // save pen - TQPointArray a( 4*lineWidth ); - if ( sunken ) - p->setPen( g.dark() ); - else - p->setPen( g.light() ); - int x1, y1, x2, y2; - int i; - int n = 0; - x1 = x; - y1 = y2 = y; - x2 = x+w-2; - for ( i=0; i<lineWidth; i++ ) { // top shadow - a.setPoint( n++, x1, y1++ ); - a.setPoint( n++, x2--, y2++ ); - } - x2 = x1; - y1 = y+h-2; - for ( i=0; i<lineWidth; i++ ) { // left shadow - a.setPoint( n++, x1++, y1 ); - a.setPoint( n++, x2++, y2-- ); - } - p->drawLineSegments( a ); - n = 0; - if ( sunken ) - p->setPen( g.light() ); - else - p->setPen( g.dark() ); - x1 = x; - y1 = y2 = y+h-1; - x2 = x+w-1; - for ( i=0; i<lineWidth; i++ ) { // bottom shadow - a.setPoint( n++, x1++, y1-- ); - a.setPoint( n++, x2, y2-- ); - } - x1 = x2; - y1 = y; - y2 = y+h-lineWidth-1; - for ( i=0; i<lineWidth; i++ ) { // right shadow - a.setPoint( n++, x1--, y1++ ); - a.setPoint( n++, x2--, y2 ); - } - p->drawLineSegments( a ); - if ( fill ) { // fill with fill color - TQBrush oldBrush = p->brush(); - p->setPen( TQt::NoPen ); - p->setBrush( *fill ); - p->drawRect( x+lineWidth, y+lineWidth, w-lineWidth*2, h-lineWidth*2 ); - p->setBrush( oldBrush ); - } - p->setPen( oldPen ); // restore pen -} - -static void drawSeparator( TQPainter *p, int x1, int y1, int x2, int y2, - const TQColorGroup &g ) -{ - TQPen oldPen = p->pen(); - - p->setPen( g.midlight() ); - p->drawLine( x1, y1, x2, y2 ); - p->setPen( g.shadow() ); - if ( y2-y1 < x2-x1 ) - p->drawLine( x1, y1+1, x2, y2+1 ); - else - p->drawLine( x1+1, y1, x2+1, y2 ); - - p->setPen( oldPen ); -} - -static void drawSGIPrefix( TQPainter *p, int x, int y, TQString* miText ) -{ - if ( miText && (!!(*miText)) ) { - int amp = 0; - bool nextAmp = FALSE; - while ( ( amp = miText->find( '&', amp ) ) != -1 ) { - if ( (uint)amp == miText->length()-1 ) - return; - miText->remove( amp,1 ); - nextAmp = (*miText)[amp] == '&'; // next time if && - - if ( !nextAmp ) { // draw special underlining - uint ulx = p->fontMetrics().width(*miText, amp); - - uint ulw = p->fontMetrics().width(*miText, amp+1) - ulx; - - p->drawLine( x+ulx, y, x+ulx+ulw, y ); - p->drawLine( x+ulx, y+1, x+ulx+ulw/2, y+1 ); - p->drawLine( x+ulx, y+2, x+ulx+ulw/4, y+2 ); - } - amp++; - } - } -} - -static int get_combo_extra_width( int h, int *return_awh=0 ) -{ - int awh; - if ( h < 8 ) { - awh = 6; - } else if ( h < 14 ) { - awh = h - 2; - } else { - awh = h/2; - } - if ( return_awh ) - *return_awh = awh; - return awh*2; -} - -static void get_combo_parameters( const TQRect &r, - int &ew, int &awh, int &ax, - int &ay, int &sh, int &dh, - int &sy ) -{ - ew = get_combo_extra_width( r.height(), &awh ); - - sh = (awh+3)/4; - if ( sh < 3 ) - sh = 3; - dh = sh/2 + 1; - - ay = r.y() + (r.height()-awh-sh-dh)/2; - if ( ay < 0 ) { - //panic mode - ay = 0; - sy = r.height(); - } else { - sy = ay+awh+dh; - } - if( TQApplication::reverseLayout() ) - ax = r.x(); - else - ax = r.x() + r.width() - ew; - ax += (ew-awh)/2; -} - -/*! \reimp */ -void TQSGIStyle::tqdrawPrimitiveBase( TQ_PrimitiveElement pe, - TQPainter *p, - const TQRect &r, - const TQColorGroup &cg, - SFlags flags, - const TQStyleOption& opt ) const -{ - const int x = r.x(); - const int y = r.y(); - const int w = r.width(); - const int h = r.height(); - const bool sunken = flags & ( Style_Sunken | Style_Down | Style_On ); - const int defaultFrameWidth = tqpixelMetric( PM_DefaultFrameWidth ); - bool hot = ( flags & Style_MouseOver ) && ( flags & Style_Enabled ); - - switch ( pe ) { - case PE_ButtonCommand: - { - TQBrush fill; - if ( hot ) { - if ( sunken ) - fill = cg.brush( TQColorGroup::Dark ); - else - fill = cg.brush( TQColorGroup::Midlight ); - } else if ( sunken ) { - fill = cg.brush( TQColorGroup::Mid ); - } else { - fill = cg.brush( TQColorGroup::Button ); - } - - drawPanel( p, x, y, w, h, cg, sunken, defaultFrameWidth, &fill ); - } - break; - - case PE_PanelPopup: - case PE_ButtonBevel: - case PE_ButtonTool: - { - tqdrawPrimitive( PE_ButtonCommand, p, TQRect( x+1, y+1, w-2, h-2 ), cg, flags, opt ); - - TQPen oldPen = p->pen(); - TQPointArray a; - - // draw twocolored rectangle - p->setPen( sunken ? cg.light() : TQT_TQCOLOR_OBJECT(cg.dark().dark(200)) ); - a.setPoints( 3, x, y+h-1, x+w-1, y+h-1, x+w-1, y ); - p->drawPolyline( a ); - p->setPen( cg.dark() ); - a.setPoints( 3, x, y+h-2, x, y, x+w-2, y ); - p->drawPolyline( a ); - - p->setPen( oldPen ); - } - break; - - case PE_ArrowUp: - case PE_ArrowDown: - case PE_ArrowLeft: - case PE_ArrowRight: - { - TQPointArray a; // arrow polygon - switch ( pe ) { - case PE_ArrowUp: - a.setPoints( 3, 0,-5, -5,4, 4,4 ); - break; - case PE_ArrowDown: - a.setPoints( 3, 0,4, -4,-4, 4,-4 ); - break; - case PE_ArrowLeft: - a.setPoints( 3, -4,0, 4,-5, 4,4 ); - break; - case PE_ArrowRight: - a.setPoints( 3, 4,0, -4,-5, -4,4 ); - break; - default: - return; - } - - p->save(); - p->setPen( TQt::NoPen ); - a.translate( x+w/2, y+h/2 ); - p->setBrush( flags & Style_Enabled ? cg.dark() : cg.light() ); - p->drawPolygon( a ); // draw arrow - p->restore(); - } - break; - - case PE_Indicator: - { - TQRect er = r; - er.addCoords( 1, 1, -1, -1 ); - int iflags = flags & ~Style_On; - tqdrawPrimitive( PE_ButtonBevel, p, er, cg, (QStyle::StateFlag)iflags, opt ); - if ( !(flags & TQStyle::Style_Off) ) { - er = r; - er.addCoords( 1, 2, 1, 1 ); - tqdrawPrimitive( PE_CheckMark, p, er, cg, flags, opt ); - } - } - break; - - case PE_IndicatorMask: - { - TQPen oldPen = p->pen(); - TQBrush oldBrush = p->brush(); - - p->setPen( TQt::color1 ); - p->setBrush( TQt::color1 ); - p->fillRect( x, y, w, h, TQBrush( TQt::color0 ) ); - TQRect er = r; - er.addCoords( 1, 1, -1, -1 ); - p->fillRect(er, TQBrush(TQt::color1)); - - if ( !(flags & TQStyle::Style_Off) ) { - er = r; - er.addCoords( 1, 2, 1, 1 ); - static const TQCOORD check_mark[] = { - 14,0, 10,0, 11,1, 8,1, 9,2, 7,2, 8,3, 6,3, - 7,4, 1,4, 6,5, 1,5, 6,6, 3,6, 5,7, 4,7, - 5,8, 5,8, 4,3, 2,3, 3,2, 3,2 }; - - TQPointArray amark; - amark = TQPointArray( sizeof(check_mark)/(sizeof(TQCOORD)*2), check_mark ); - amark.translate( er.x()+1, er.y()+1 ); - p->drawLineSegments( amark ); - amark.translate( -1, -1 ); - p->drawLineSegments( amark ); - } - - p->setBrush( oldBrush ); - p->setPen( oldPen ); - } - break; - -#ifndef USE_QT4 // [FIXME] - case PE_CheckMark: - { - static const TQCOORD check_mark[] = { - 14,0, 10,0, 11,1, 8,1, 9,2, 7,2, 8,3, 6,3, - 7,4, 1,4, 6,5, 1,5, 6,6, 3,6, 5,7, 4,7, - 5,8, 5,8, 4,3, 2,3, 3,2, 3,2 }; - - TQPen oldPen = p->pen(); - - TQPointArray amark; - amark = TQPointArray( sizeof(check_mark)/(sizeof(TQCOORD)*2), check_mark ); - amark.translate( x+1, y+1 ); - - if ( flags & Style_On ) { - p->setPen( flags & Style_Enabled ? cg.shadow() : cg.dark() ); - p->drawLineSegments( amark ); - amark.translate( -1, -1 ); - p->setPen( flags & Style_Enabled ? TQColor(255,0,0) : cg.dark() ); - p->drawLineSegments( amark ); - p->setPen( oldPen ); - } else { - p->setPen( flags & Style_Enabled ? cg.dark() : cg.mid() ); - p->drawLineSegments( amark ); - amark.translate( -1, -1 ); - p->setPen( flags & Style_Enabled ? TQColor(230,120,120) : cg.dark() ); - p->drawLineSegments( amark ); - p->setPen( oldPen ); - } - } - break; -#endif // USE_QT4 - - case PE_ExclusiveIndicator: - { - p->save(); - p->eraseRect( x, y, w, h ); - p->translate( x, y ); - - p->setPen( cg.button() ); - p->setBrush( hot ? cg.midlight() : cg.button() ); - TQPointArray a; - a.setPoints( 4, 5,0, 11,6, 6,11, 0,5); - p->drawPolygon( a ); - - p->setPen( cg.dark() ); - p->drawLine( 0,5, 5,0 ); - p->drawLine( 6,0, 11,5 ); - p->setPen( flags & Style_Down ? cg.light() : cg.dark() ); - p->drawLine( 11,6, 6,11 ); - p->drawLine( 5,11, 0,6 ); - p->drawLine( 2,7, 5,10 ); - p->drawLine( 6,10, 9,7 ); - p->setPen( cg.light() ); - p->drawLine( 2,5, 5,2 ); - - if ( flags & Style_On ) { - p->setPen( flags & Style_Enabled ? TQt::blue : TQt::darkGray ); - p->setBrush( flags & Style_Enabled ? TQt::blue : TQt::darkGray ); - a.setPoints(3, 6,2, 8,4, 6,6 ); - p->drawPolygon( a ); - p->setBrush( TQt::NoBrush ); - - p->setPen( cg.shadow() ); - p->drawLine( 7,7, 9,5 ); - } else { - p->drawLine( 6,2, 9,5 ); - } - p->restore(); - } - break; - - case PE_ExclusiveIndicatorMask: - { - p->save(); - TQPen oldPen = p->pen(); - TQBrush oldBrush = p->brush(); - - p->setPen( TQt::color1 ); - p->setBrush( TQt::color1 ); - TQPointArray a; - a.setPoints( 8, 0,5, 5,0, 6,0, 11,5, 11,6, 6,11, 5,11, 0,6 ); - a.translate( x, y ); - p->drawPolygon( a ); - - p->setBrush( oldBrush ); - p->setPen( oldPen ); - p->restore(); - } - break; - - case PE_Panel: - { - const int lineWidth = opt.isDefault() ? defaultFrameWidth : opt.lineWidth(); - drawPanel( p, x, y, w, h, cg, flags & (Style_Sunken | Style_Down | Style_On), lineWidth, 0 ); - if ( lineWidth <= 1 ) - return; - - // draw extra shadinglines - TQPen oldPen = p->pen(); - p->setPen( cg.midlight() ); - p->drawLine( x+1, y+h-3, x+1, y+1 ); - p->drawLine( x+1, y+1, x+w-3, y+1 ); - p->setPen( cg.mid() ); - p->drawLine( x+1, y+h-2, x+w-2, y+h-2 ); - p->drawLine( x+w-2, y+h-2, x+w-2, y+1 ); - p->setPen(oldPen); - } - break; - - case PE_ScrollBarSubLine: - if ( !r.contains( d->mousePos ) && !(flags & Style_Active) ) - flags &= ~Style_MouseOver; - tqdrawPrimitive( PE_ButtonCommand, p, r, cg, flags, opt ); - tqdrawPrimitive(((flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp), - p, r, cg, Style_Enabled | flags); - break; - - case PE_ScrollBarAddLine: - if ( !r.contains( d->mousePos ) ) - flags &= ~Style_MouseOver; - tqdrawPrimitive( PE_ButtonCommand, p, r, cg, flags, opt ); - tqdrawPrimitive(((flags & Style_Horizontal) ? PE_ArrowRight : PE_ArrowDown), - p, r, cg, Style_Enabled | flags); - break; - - case PE_ScrollBarSubPage: - case PE_ScrollBarAddPage: - if ( !r.contains( d->mousePos ) ) - flags &= ~Style_MouseOver; - if ( r.isValid() ) - qDrawShadePanel( p, x, y, w, h, cg, FALSE, 1, hot ? &cg.brush( TQColorGroup::Midlight ) : &cg.brush( TQColorGroup::Button ) ); - break; - - case PE_ScrollBarSlider: - { - if ( !r.isValid() ) - break; - if ( !(r.contains( d->mousePos ) || flags & Style_Active) || !(flags & Style_Enabled ) ) - flags &= ~Style_MouseOver; - - TQPixmap pm( r.width(), r.height() ); - TQPainter bp( &pm ); - tqdrawPrimitive(PE_ButtonBevel, &bp, TQRect(0,0,r.width(),r.height()), cg, flags | Style_Enabled | Style_Raised); - if ( flags & Style_Horizontal ) { - const int sliderM = r.width() / 2; - if ( r.width() > 20 ) { - drawSeparator( &bp, sliderM-5, 2, sliderM-5, r.height()-3, cg ); - drawSeparator( &bp, sliderM+3, 2, sliderM+3, r.height()-3, cg ); - } - if ( r.width() > 10 ) - drawSeparator( &bp, sliderM-1, 2, sliderM-1, r.height()-3, cg ); - - } else { - const int sliderM = r.height() / 2; - if ( r.height() > 20 ) { - drawSeparator( &bp, 2, sliderM-5, r.width()-3, sliderM-5, cg ); - drawSeparator( &bp, 2, sliderM+3, r.width()-3, sliderM+3, cg ); - } - if ( r.height() > 10 ) - drawSeparator( &bp, 2, sliderM-1, r.width()-3, sliderM-1, cg ); - } - bp.end(); - p->drawPixmap( r.x(), r.y(), pm ); - } - - break; - - case PE_Splitter: - { - const int motifOffset = 10; - int sw = tqpixelMetric( PM_SplitterWidth ); - if ( flags & Style_Horizontal ) { - int xPos = x + w/2; - int kPos = motifOffset; - int kSize = sw - 2; - - qDrawShadeLine( p, xPos, kPos + kSize - 1 , - xPos, h, cg ); - - tqdrawPrimitive( PE_ButtonBevel, p, TQRect(xPos-sw/2+1, kPos, kSize, kSize+1), cg, flags, opt ); - qDrawShadeLine( p, xPos+2, 0, xPos, kPos, cg ); - } else { - int yPos = y + h/2; - int kPos = w - motifOffset - sw; - int kSize = sw - 2; - - qDrawShadeLine( p, 0, yPos, kPos, yPos, cg ); - tqdrawPrimitive( PE_ButtonBevel, p, TQRect( kPos, yPos-sw/2+1, kSize+1, kSize ), cg, flags, opt ); - qDrawShadeLine( p, kPos + kSize+1, yPos, w, yPos, cg ); - } - } - break; - - default: - TQMotifStyle::tqdrawPrimitive( pe, p, r, cg, flags, opt ); - break; - } -} - -/*! \reimp */ -void TQSGIStyle::tqdrawControl( TQ_ControlElement element, - TQPainter *p, - const TQWidget *widget, - const TQRect &r, - const TQColorGroup &cg, - SFlags flags, - const TQStyleOption& opt ) const -{ - if ( widget == d->hotWidget ) - flags |= Style_MouseOver; - - switch ( element ) { - case CE_PushButton: - { -#ifndef TQT_NO_PUSHBUTTON - const TQPushButton *btn = (TQPushButton*)widget; - int x1, y1, x2, y2; - r.coords( &x1, &y1, &x2, &y2 ); - - p->setPen( cg.foreground() ); - p->setBrush( TQBrush( cg.button(), Qt::NoBrush ) ); - p->setBrushOrigin( -widget->backgroundOffset().x(), - -widget->backgroundOffset().y() ); - - int diw = tqpixelMetric( TQStyle::PM_ButtonDefaultIndicator ); - if ( btn->isDefault() || btn->autoDefault() ) { - x1 += diw; - y1 += diw; - x2 -= diw; - y2 -= diw; - } - - TQPointArray a; - if ( btn->isDefault() ) { - if ( diw == 0 ) { - a.setPoints( 9, - x1, y1, x2, y1, x2, y2, x1, y2, x1, y1+1, - x2-1, y1+1, x2-1, y2-1, x1+1, y2-1, x1+1, y1+1 ); - p->setPen( cg.shadow() ); - p->drawPolyline( a ); - x1 += 2; - y1 += 2; - x2 -= 2; - y2 -= 2; - } else { - qDrawShadePanel( p, btn->rect(), cg, TRUE ); - } - } - - TQBrush fill = cg.brush( TQColorGroup::Button ); - if ( !btn->isFlat() || btn->isOn() || btn->isDown() ) - tqdrawPrimitive( PE_ButtonBevel, p, TQRect( x1, y1, x2-x1+1, y2-y1+1 ), cg, flags, opt ); - - if ( p->brush().style() != TQt::NoBrush ) - p->setBrush( TQt::NoBrush ); -#endif - } - break; - - case CE_PopupMenuItem: - { -#ifndef TQT_NO_POPUPMENU - if (! widget || opt.isDefault()) - break; - TQMenuItem *mi = opt.menuItem(); - if ( !mi ) - break; - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; - int tab = opt.tabWidth(); - int maxpmw = opt.maxIconWidth(); - bool dis = ! (flags & Style_Enabled); - bool checkable = popupmenu->isCheckable(); - bool act = flags & Style_Active; - int x, y, w, h; - - r.rect(&x, &y, &w, &h); - - if ( checkable ) - maxpmw = TQMAX( maxpmw, sgiCheckMarkSpace ); - int checkcol = maxpmw; - - if (mi && mi->isSeparator() ) { - p->setPen( cg.mid() ); - p->drawLine(x, y, x+w, y ); - return; - } - - int pw = sgiItemFrame; - - if ( act && !dis ) { - if ( tqpixelMetric( PM_DefaultFrameWidth ) > 1 ) - drawPanel( p, x, y, w, h, cg, FALSE, pw, - &TQT_TQBRUSH_OBJECT(cg.brush( TQColorGroup::Light )) ); - else - drawPanel( p, x+1, y+1, w-2, h-2, cg, FALSE, 1, - &TQT_TQBRUSH_OBJECT(cg.brush( TQColorGroup::Light )) ); - } else { - p->fillRect( x, y, w, h, cg.brush( TQColorGroup::Button ) ); - } - - if ( !mi ) - return; - - if ( mi->isChecked() ) { - if ( mi->iconSet() ) { - drawPanel( p, x+sgiItemFrame, y+sgiItemFrame, checkcol, h-2*sgiItemFrame, - cg, TRUE, 1, &TQT_TQBRUSH_OBJECT(cg.brush( TQColorGroup::Light )) ); - } - } else { - if ( !act ) - p->fillRect( x+sgiItemFrame, y+sgiItemFrame, checkcol, h-2*sgiItemFrame, - cg.brush( TQColorGroup::Button ) ); - } - - if ( mi->iconSet() ) { - TQIconSet::Mode mode = TQIconSet::Normal; - if ( act && !dis ) - mode = TQIconSet::Active; - TQPixmap pixmap; - if ( checkable && mi->isChecked() ) - pixmap = mi->iconSet()->pixmap( TQIconSet::Small, mode, TQIconSet::On ); - else - pixmap = mi->iconSet()->pixmap( TQIconSet::Small, mode ); - - int pixw = pixmap.width(); - int pixh = pixmap.height(); - TQRect cr( x+sgiItemFrame, y+sgiItemFrame, checkcol, h-2*sgiItemFrame ); - TQRect pmr( 0, 0, pixw, pixh ); - pmr.moveCenter( cr.center() ); - p->setPen( cg.text() ); - p->drawPixmap( pmr.topLeft(), pixmap ); - } else { - if ( checkable ) { - SFlags cflags = Style_Default; - if (! dis) - cflags |= Style_Enabled; - if (act) - cflags |= Style_On; - - if ( mi->isChecked() ) { - TQRect er( x+sgiItemFrame+1, y+sgiItemFrame+3, - tqpixelMetric(PM_IndicatorWidth), - tqpixelMetric(PM_IndicatorHeight) ); - er.addCoords( 1, 1, -1, -1 ); - tqdrawPrimitive( PE_ButtonBevel, p, er, cg, cflags, opt ); - er.addCoords( 0, 1, 1, 1 ); - tqdrawPrimitive( PE_CheckMark, p, er, cg, cflags | Style_On, opt ); - } - } - } - - p->setPen( cg.buttonText() ); - - TQColor discol; - if ( dis ) { - discol = cg.text(); - p->setPen( discol ); - } - - int xm = sgiItemFrame + checkcol + sgiItemHMargin; - - if ( mi->custom() ) { - int m = sgiItemVMargin; - p->save(); - mi->custom()->paint( p, cg, act, !dis, - x+xm, y+m, w-xm-tab+1, h-2*m ); - p->restore(); - } - - TQString s = mi->text(); - if ( !!s ) { - int t = s.find( '\t' ); - int m = sgiItemVMargin; - const int text_flags = TQt::AlignVCenter | TQt::DontClip | TQt::SingleLine; //special underline for &x - - TQString miText = s; - if ( t>=0 ) { - p->drawText(x+w-tab-sgiItemHMargin-sgiItemFrame, - y+m, tab, h-2*m, text_flags, miText.mid( t+1 ) ); - miText = s.mid( 0, t ); - } - TQRect br = p->fontMetrics().boundingRect( x+xm, y+m, w-xm-tab+1, h-2*m, - text_flags, mi->text() ); - - drawSGIPrefix( p, br.x()+p->fontMetrics().leftBearing(miText[0]), - br.y()+br.height()+p->fontMetrics().underlinePos()-2, &miText ); - p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, miText, miText.length() ); - } else { - if ( mi->pixmap() ) { - TQPixmap *pixmap = mi->pixmap(); - if ( pixmap->depth() == 1 ) - p->setBackgroundMode( Qt::OpaqueMode ); - p->drawPixmap( x+xm, y+sgiItemFrame, *pixmap ); - if ( pixmap->depth() == 1 ) - p->setBackgroundMode( Qt::TransparentMode ); - } - } - if ( mi->popup() ) { - int dim = (h-2*sgiItemFrame) / 2; - tqdrawPrimitive( PE_ArrowRight, p, TQRect( x+w-sgiArrowHMargin-sgiItemFrame-dim, y+h/2-dim/2, dim, dim ), cg, flags ); - } -#endif - } - break; - - case CE_MenuBarItem: - { -#ifndef TQT_NO_MENUDATA - if (opt.isDefault()) - break; - - TQMenuItem *mi = opt.menuItem(); - - bool active = flags & Style_Active; - int x, y, w, h; - r.rect( &x, &y, &w, &h ); - - if ( active ) { - p->setPen( TQPen( cg.shadow(), 1) ); - p->drawRect( x, y, w, h ); - qDrawShadePanel( p, TQRect(x+1,y+1,w-2,h-2), cg, FALSE, 2, - &cg.brush( TQColorGroup::Light )); - } else { - p->fillRect( x, y, w, h, cg.brush( TQColorGroup::Button )); - } - - if ( mi->pixmap() ) - drawItem( p, r, TQt::AlignCenter|TQt::DontClip|TQt::SingleLine, - cg, mi->isEnabled(), mi->pixmap(), "", -1, TQT_TQCOLOR_CONST(&cg.buttonText()) ); - - if ( !!mi->text() ) { - TQString* text = new TQString(mi->text()); - TQRect br = p->fontMetrics().boundingRect( x, y-2, w+1, h, - TQt::AlignCenter|TQt::DontClip|TQt::SingleLine|TQt::ShowPrefix, mi->text() ); - - drawSGIPrefix( p, br.x()+p->fontMetrics().leftBearing((*text)[0]), - br.y()+br.height()+p->fontMetrics().underlinePos()-2, text ); - p->drawText( x, y-2, w+1, h, TQt::AlignCenter|TQt::DontClip|TQt::SingleLine, *text, text->length() ); - delete text; - } -#endif - } - break; - - case CE_CheckBox: - TQMotifStyle::tqdrawControl( element, p, widget, r, cg, flags, opt ); - break; - - default: - TQMotifStyle::tqdrawControl( element, p, widget, r, cg, flags, opt ); - break; - } -} - -/*! \reimp */ -void TQSGIStyle::tqdrawComplexControl( TQ_ComplexControl control, - TQPainter *p, - const TQWidget* widget, - const TQRect& r, - const TQColorGroup& cg, - SFlags flags, - SCFlags sub, - SCFlags subActive, - const TQStyleOption& opt ) const -{ - if ( widget == d->hotWidget ) - flags |= Style_MouseOver; - - switch ( control ) { - case CC_Slider: - { -#ifndef TQT_NO_SLIDER - const TQSlider * slider = (const TQSlider *) widget; - - TQRect groove = querySubControlMetrics(CC_Slider, widget, SC_SliderGroove, - opt), - handle = querySubControlMetrics(CC_Slider, widget, SC_SliderHandle, - opt); - - if ((sub & SC_SliderGroove) && groove.isValid()) { - TQRegion region( groove ); - if ( ( sub & SC_SliderHandle ) && handle.isValid() ) - region = region.subtract( handle ); - if ( d->lastSliderRect.slider == slider && d->lastSliderRect.rect.isValid() ) - region = region.subtract( d->lastSliderRect.rect ); - p->setClipRegion( region ); - - TQRect grooveTop = groove; - grooveTop.addCoords( 1, 1, -1, -1 ); - tqdrawPrimitive( PE_ButtonBevel, p, grooveTop, cg, flags & ~Style_MouseOver, opt ); - - if ( flags & Style_HasFocus ) { - TQRect fr = subRect( SR_SliderFocusRect, widget ); - tqdrawPrimitive( PE_FocusRect, p, fr, cg, flags & ~Style_MouseOver ); - } - - if ( d->lastSliderRect.slider == slider && d->lastSliderRect.rect.isValid() ) { - if ( ( sub & SC_SliderHandle ) && handle.isValid() ) { - region = widget->rect(); - region = region.subtract( handle ); - p->setClipRegion( region ); - } else { - p->setClipping( FALSE ); - } - qDrawShadePanel( p, d->lastSliderRect.rect, cg, TRUE, 1, &cg.brush( TQColorGroup::Dark ) ); - } - p->setClipping( FALSE ); - } - - if (( sub & SC_SliderHandle ) && handle.isValid()) { - if ( flags & Style_MouseOver && !handle.contains( d->mousePos ) && subActive != SC_SliderHandle ) - flags &= ~Style_MouseOver; - tqdrawPrimitive( PE_ButtonBevel, p, handle, cg, flags ); - - if ( slider->orientation() == Qt::Horizontal ) { - TQCOORD mid = handle.x() + handle.width() / 2; - qDrawShadeLine( p, mid, handle.y(), mid, - handle.y() + handle.height() - 2, - cg, TRUE, 1); - } else { - TQCOORD mid = handle.y() + handle.height() / 2; - qDrawShadeLine( p, handle.x(), mid, - handle.x() + handle.width() - 2, mid, - cg, TRUE, 1); - } - } - - if ( sub & SC_SliderTickmarks ) - TQMotifStyle::tqdrawComplexControl( control, p, widget, r, cg, flags, - SC_SliderTickmarks, subActive, - opt ); -#endif - break; - } - case CC_ComboBox: - { -#ifndef TQT_NO_COMBOBOX - const TQComboBox * cb = (TQComboBox *) widget; - - if (sub & SC_ComboBoxFrame) { - TQRect fr = - TQStyle::tqvisualRect( querySubControlMetrics( CC_ComboBox, cb, - SC_ComboBoxFrame ), cb ); - tqdrawPrimitive( PE_ButtonBevel, p, fr, cg, flags ); - } - - if ( sub & SC_ComboBoxArrow ) { - p->save(); - TQRect er = - TQStyle::tqvisualRect( querySubControlMetrics( CC_ComboBox, cb, SC_ComboBoxArrow ), cb ); - - er.addCoords( 0, 3, 0, 0 ); - - tqdrawPrimitive( PE_ArrowDown, p, er, cg, flags | Style_Enabled, opt ); - - int awh, ax, ay, sh, sy, dh, ew; - get_combo_parameters( widget->rect(), ew, awh, ax, ay, sh, dh, sy ); - - TQBrush arrow = cg.brush( TQColorGroup::Dark ); - p->fillRect( ax, sy-1, awh, sh, arrow ); - - p->restore(); - if ( cb->hasFocus() ) { - TQRect re = TQStyle::tqvisualRect( subRect( SR_ComboBoxFocusRect, cb ), cb ); - tqdrawPrimitive( PE_FocusRect, p, re, cg ); - } - } - if ( sub & SC_ComboBoxEditField ) { - if ( cb->editable() ) { - TQRect er = - TQStyle::tqvisualRect( querySubControlMetrics( CC_ComboBox, cb, - SC_ComboBoxEditField ), cb ); - er.addCoords( -1, -1, 1, 1); - qDrawShadePanel( p, TQRect( er.x()-1, er.y()-1, - er.width()+2, er.height()+2 ), - cg, TRUE, 1, &cg.brush( TQColorGroup::Button ) ); - } - } -#endif - p->setPen(cg.buttonText()); - break; - } - - case CC_ScrollBar: - { -#ifndef TQT_NO_SCROLLBAR - TQScrollBar *scrollbar = (TQScrollBar*)widget; - bool maxedOut = (scrollbar->minValue() == scrollbar->maxValue()); - if ( maxedOut ) - flags &= ~Style_Enabled; - - TQRect handle = TQStyle::tqvisualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarSlider, opt ), widget ); - - if ( sub & SC_ScrollBarGroove ) { - } - if ( sub & SC_ScrollBarAddLine ) { - TQRect er = TQStyle::tqvisualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarAddLine, opt ), widget ); - tqdrawPrimitive( PE_ScrollBarAddLine, p, er, cg, flags, opt ); - } - if ( sub & SC_ScrollBarSubLine ) { - TQRect er = TQStyle::tqvisualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarSubLine, opt ), widget ); - tqdrawPrimitive( PE_ScrollBarSubLine, p, er, cg, flags, opt ); - } - if ( sub & SC_ScrollBarAddPage ) { - TQRect er = TQStyle::tqvisualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarAddPage, opt ), widget ); - TQRegion region( er ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && - d->lastScrollbarRect.rect.isValid() && - er.intersects( d->lastScrollbarRect.rect ) ) { - region = region.subtract( d->lastScrollbarRect.rect ); - p->setClipRegion( region ); - } - if ( sub & SC_ScrollBarSlider && er.intersects( handle ) ) { - region = region.subtract( handle ); - p->setClipRegion( region ); - } - - tqdrawPrimitive( PE_ScrollBarAddPage, p, er, cg, flags & ~Style_MouseOver, opt ); - - if ( d->lastScrollbarRect.scrollbar == scrollbar && - d->lastScrollbarRect.rect.isValid() && - er.intersects( d->lastScrollbarRect.rect ) ) { - if ( sub & SC_ScrollBarSlider && handle.isValid() ) { - region = er; - region.subtract( handle ); - p->setClipRegion( region ); - } else { - p->setClipping( FALSE ); - } - qDrawShadePanel( p, d->lastScrollbarRect.rect, cg, TRUE, 1, &cg.brush( TQColorGroup::Dark ) ); - } - p->setClipping( FALSE ); - } - if ( sub & SC_ScrollBarSubPage ) { - TQRect er = TQStyle::tqvisualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarSubPage, opt ), widget ); - TQRegion region( er ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && - d->lastScrollbarRect.rect.isValid() && - er.intersects( d->lastScrollbarRect.rect ) ) { - region = region.subtract( d->lastScrollbarRect.rect ); - p->setClipRegion( region ); - } - if ( sub & SC_ScrollBarSlider && er.intersects( handle ) ) { - region = region.subtract( handle ); - p->setClipRegion( region ); - } - tqdrawPrimitive( PE_ScrollBarSubPage, p, er, cg, flags & ~Style_MouseOver, opt ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && - d->lastScrollbarRect.rect.isValid() && - er.intersects( d->lastScrollbarRect.rect ) ) { - if ( sub & SC_ScrollBarSlider && handle.isValid() ) { - region = er; - region.subtract( handle ); - p->setClipRegion( region ); - } else { - p->setClipping( FALSE ); - } - qDrawShadePanel( p, d->lastScrollbarRect.rect, cg, TRUE, 1, &cg.brush( TQColorGroup::Dark ) ); - } - p->setClipping( FALSE ); - } - if ( sub & SC_ScrollBarSlider ) { - p->setClipping( FALSE ); - if ( subActive == SC_ScrollBarSlider ) - flags |= Style_Active; - - tqdrawPrimitive( PE_ScrollBarSlider, p, handle, cg, flags, opt ); - } -#endif - } - break; - - default: - TQMotifStyle::tqdrawComplexControl( control, p, widget, r, cg, flags, sub, subActive, opt ); - break; - } -} - -/*!\reimp -*/ -TQSize TQSGIStyle::tqsizeFromContents( ContentsType contents, - const TQWidget *widget, - const TQSize &contentsSize, - const TQStyleOption& opt ) const -{ - TQSize sz(contentsSize); - - switch(contents) { - case CT_PopupMenuItem: - { -#ifndef TQT_NO_POPUPMENU - if (! widget || opt.isDefault()) - break; - - TQMenuItem *mi = opt.menuItem(); - sz = TQMotifStyle::tqsizeFromContents( contents, widget, contentsSize, - opt ); - // SGI checkmark items needs a bit more room - const TQPopupMenu *popup = (TQPopupMenu *) widget; - if ( popup && popup->isCheckable() ) - sz.setWidth( sz.width() + 8 ); - // submenu indicator needs a bit more room - if (mi->popup()) - sz.setWidth( sz.width() + sgiTabSpacing ); -#endif - break; - } - case CT_ComboBox: - sz.rwidth() += 30; - break; - - default: - sz = TQMotifStyle::tqsizeFromContents( contents, widget, contentsSize, opt ); - break; - } - - return sz; -} - -/*! \reimp */ -TQRect TQSGIStyle::subRect( SubRect r, const TQWidget *widget ) const -{ - TQRect rect; - - switch ( r ) { - case SR_ComboBoxFocusRect: - { - int awh, ax, ay, sh, sy, dh, ew; - int fw = tqpixelMetric( PM_DefaultFrameWidth, widget ); - TQRect tr = widget->rect(); - - tr.addCoords( fw, fw, -fw, -fw ); - get_combo_parameters( tr, ew, awh, ax, ay, sh, dh, sy ); - rect.setRect(ax-2, ay-2, awh+4, awh+sh+dh+4); - } - break; - default: - return TQMotifStyle::subRect( r, widget ); - } - - return rect; -} - -/*! \reimp */ -TQRect TQSGIStyle::querySubControlMetrics( TQ_ComplexControl control, - const TQWidget *widget, - SubControl sub, - const TQStyleOption& opt ) const -{ - switch ( control ) { - case CC_ComboBox: - switch ( sub ) { - case SC_ComboBoxFrame: - return widget->rect(); - - case SC_ComboBoxArrow: { - int ew, awh, sh, dh, ax, ay, sy; - int fw = tqpixelMetric( PM_DefaultFrameWidth, widget ); - TQRect cr = widget->rect(); - cr.addCoords( fw, fw, -fw, -fw ); - get_combo_parameters( cr, ew, awh, ax, ay, sh, dh, sy ); - return TQRect( ax, ay, awh, awh ); } - - case SC_ComboBoxEditField: { - int fw = tqpixelMetric( PM_DefaultFrameWidth, widget ); - TQRect rect = widget->rect(); - rect.addCoords( fw, fw, -fw, -fw ); - int ew = get_combo_extra_width( rect.height() ); - rect.addCoords( 1, 1, -1-ew, -1 ); - return rect; } - - default: - break; - } - break; - case CC_ScrollBar: - return TQCommonStyle::querySubControlMetrics( control, widget, sub, opt ); - default: break; - } - return TQMotifStyle::querySubControlMetrics( control, widget, sub, opt ); -} - -#endif // TQT_NO_STYLE_SGI |