diff options
Diffstat (limited to 'kwin/clients/quartz')
-rw-r--r-- | kwin/clients/quartz/CMakeLists.txt | 37 | ||||
-rw-r--r-- | kwin/clients/quartz/Makefile.am | 23 | ||||
-rw-r--r-- | kwin/clients/quartz/config/CMakeLists.txt | 29 | ||||
-rw-r--r-- | kwin/clients/quartz/config/Makefile.am | 16 | ||||
-rw-r--r-- | kwin/clients/quartz/config/config.cpp | 104 | ||||
-rw-r--r-- | kwin/clients/quartz/config/config.h | 47 | ||||
-rw-r--r-- | kwin/clients/quartz/quartz.cpp | 797 | ||||
-rw-r--r-- | kwin/clients/quartz/quartz.desktop | 39 | ||||
-rw-r--r-- | kwin/clients/quartz/quartz.h | 95 |
9 files changed, 0 insertions, 1187 deletions
diff --git a/kwin/clients/quartz/CMakeLists.txt b/kwin/clients/quartz/CMakeLists.txt deleted file mode 100644 index c521bc19c..000000000 --- a/kwin/clients/quartz/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -################################################# -# -# (C) 2010-2011 Serghei Amelian -# serghei (DOT) amelian (AT) gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -add_subdirectory( config ) - -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/twin/lib - ${TDE_INCLUDE_DIR} - ${TQT_INCLUDE_DIRS} -) - -link_directories( - ${TQT_LIBRARY_DIRS} -) - - -##### other data ################################ - -install( FILES quartz.desktop DESTINATION ${DATA_INSTALL_DIR}/twin ) - - -##### twin3_quartz (module) ##################### - -tde_add_kpart( twin3_quartz AUTOMOC - SOURCES quartz.cpp - LINK tdecorations-shared tdeui-shared - DESTINATION ${PLUGIN_INSTALL_DIR} -) diff --git a/kwin/clients/quartz/Makefile.am b/kwin/clients/quartz/Makefile.am deleted file mode 100644 index 3a5709773..000000000 --- a/kwin/clients/quartz/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ - -INCLUDES = -I$(srcdir)/../../lib $(all_includes) - -SUBDIRS = . config - -kde_module_LTLIBRARIES = twin3_quartz.la - -twin3_quartz_la_SOURCES = quartz.cpp -twin3_quartz_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module -twin3_quartz_la_LIBADD = $(LIB_TDEUI) ../../lib/libtdecorations.la - -METASOURCES = AUTO -noinst_HEADERS = quartz.h - -lnkdir = $(kde_datadir)/twin/ -lnk_DATA = quartz.desktop - -EXTRA_DIST = $(lnk_DATA) - - -###KMAKE-start (don't edit or delete this block) - -###KMAKE-end diff --git a/kwin/clients/quartz/config/CMakeLists.txt b/kwin/clients/quartz/config/CMakeLists.txt deleted file mode 100644 index e5554bb40..000000000 --- a/kwin/clients/quartz/config/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -################################################# -# -# (C) 2010-2011 Serghei Amelian -# serghei (DOT) amelian (AT) gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ${TDE_INCLUDE_DIR} - ${TQT_INCLUDE_DIRS} -) - -link_directories( - ${TQT_LIBRARY_DIRS} -) - - -##### twin_quartz_config (module) ############### - -tde_add_kpart( twin_quartz_config AUTOMOC - SOURCES config.cpp - LINK tdeui-shared - DESTINATION ${PLUGIN_INSTALL_DIR} -) diff --git a/kwin/clients/quartz/config/Makefile.am b/kwin/clients/quartz/config/Makefile.am deleted file mode 100644 index 8a96e85a3..000000000 --- a/kwin/clients/quartz/config/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -INCLUDES = $(all_includes) - -kde_module_LTLIBRARIES = twin_quartz_config.la - -twin_quartz_config_la_SOURCES = config.cpp -twin_quartz_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module -twin_quartz_config_la_LIBADD = $(LIB_TDEUI) - -METASOURCES = AUTO -noinst_HEADERS = config.h - -lnkdir = $(kde_datadir)/twin/ - -###KMAKE-start (don't edit or delete this block) - -###KMAKE-end diff --git a/kwin/clients/quartz/config/config.cpp b/kwin/clients/quartz/config/config.cpp deleted file mode 100644 index c4c8e5cba..000000000 --- a/kwin/clients/quartz/config/config.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * This file contains the quartz configuration widget - * - * Copyright (c) 2001 - * Karol Szwed <[email protected]> - * http://gallium.n3.net/ - */ - -#include "config.h" -#include <kglobal.h> -#include <tqwhatsthis.h> -#include <klocale.h> - - -extern "C" -{ - KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent ) - { - return(new QuartzConfig(conf, parent)); - } -} - - -/* NOTE: - * 'conf' is a pointer to the twindecoration modules open twin config, - * and is by default set to the "Style" group. - * - * 'parent' is the parent of the TQObject, which is a VBox inside the - * Configure tab in twindecoration - */ - -QuartzConfig::QuartzConfig( KConfig* conf, TQWidget* parent ) - : TQObject( parent ) -{ - quartzConfig = new KConfig("twinquartzrc"); - KGlobal::locale()->insertCatalogue("twin_clients"); - gb = new TQVBox( parent ); - cbColorBorder = new TQCheckBox( - i18n("Draw window frames using &titlebar colors"), gb ); - TQWhatsThis::add( cbColorBorder, - i18n("When selected, the window decoration borders " - "are drawn using the titlebar colors; otherwise, they are " - "drawn using normal border colors instead.") ); - cbExtraSmall = new TQCheckBox( i18n("Quartz &extra slim"), gb ); - TQWhatsThis::add( cbExtraSmall, - i18n("Quartz window decorations with extra-small title bar.") ); - // Load configuration options - load( conf ); - - // Ensure we track user changes properly - connect( cbColorBorder, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotSelectionChanged()) ); - connect( cbExtraSmall, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotSelectionChanged()) ); - - // Make the widgets visible in twindecoration - gb->show(); -} - - -QuartzConfig::~QuartzConfig() -{ - delete gb; - delete quartzConfig; -} - - -void QuartzConfig::slotSelectionChanged() -{ - emit changed(); -} - - -// Loads the configurable options from the twinrc config file -// It is passed the open config from twindecoration to improve efficiency -void QuartzConfig::load( KConfig* /*conf*/ ) -{ - quartzConfig->setGroup("General"); - bool override = quartzConfig->readBoolEntry( "UseTitleBarBorderColors", true ); - cbColorBorder->setChecked( override ); - override = quartzConfig->readBoolEntry( "UseQuartzExtraSlim", false ); - cbExtraSmall->setChecked( override ); -} - - -// Saves the configurable options to the twinrc config file -void QuartzConfig::save( KConfig* /*conf*/ ) -{ - quartzConfig->setGroup("General"); - quartzConfig->writeEntry( "UseTitleBarBorderColors", cbColorBorder->isChecked() ); - quartzConfig->writeEntry( "UseQuartzExtraSlim", cbExtraSmall->isChecked() ); - // Ensure others trying to read this config get updated - quartzConfig->sync(); -} - - -// Sets UI widget defaults which must correspond to style defaults -void QuartzConfig::defaults() -{ - cbColorBorder->setChecked( true ); - cbExtraSmall->setChecked( false ); -} - -#include "config.moc" -// vim: ts=4 diff --git a/kwin/clients/quartz/config/config.h b/kwin/clients/quartz/config/config.h deleted file mode 100644 index 6bd1ba384..000000000 --- a/kwin/clients/quartz/config/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * This file contains the quartz configuration widget - * - * Copyright (c) 2001 - * Karol Szwed <[email protected]> - * http://gallium.n3.net/ - */ - -#ifndef __KDE_QUARTZCONFIG_H -#define __KDE_QUARTZCONFIG_H - -#include <tqcheckbox.h> -#include <tqvbox.h> -#include <kconfig.h> - -class QuartzConfig: public TQObject -{ - Q_OBJECT - - public: - QuartzConfig( KConfig* conf, TQWidget* parent ); - ~QuartzConfig(); - - // These public signals/slots work similar to KCM modules - signals: - void changed(); - - public slots: - void load( KConfig* conf ); - void save( KConfig* conf ); - void defaults(); - - protected slots: - void slotSelectionChanged(); // Internal use - - private: - KConfig* quartzConfig; - TQCheckBox* cbColorBorder; - TQCheckBox* cbExtraSmall; - TQVBox* gb; -}; - - -#endif - -// vim: ts=4 diff --git a/kwin/clients/quartz/quartz.cpp b/kwin/clients/quartz/quartz.cpp deleted file mode 100644 index d0b8974cf..000000000 --- a/kwin/clients/quartz/quartz.cpp +++ /dev/null @@ -1,797 +0,0 @@ -/* - * - * Gallium-Quartz KWin client - * - * Copyright (C) 2005 Sandro Giessl <[email protected]> - * Copyright 2001 - * Karol Szwed <[email protected]> - * http://gallium.n3.net/ - * - * Based on the KDE default client. - * - * Includes mini titlebars for ToolWindow Support. - * Button positions are now customizable. - * - */ - -#include <kconfig.h> -#include <kdrawutil.h> -#include <kglobal.h> -#include <klocale.h> -#include <kpixmapeffect.h> -#include <tqbitmap.h> -#include <tqdrawutil.h> -#include <tqimage.h> -#include <tqapplication.h> - -#include "quartz.h" - - -namespace Quartz { - -static const unsigned char iconify_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - -static const unsigned char close_bits[] = { - 0x00, 0x00, 0x86, 0x01, 0xcc, 0x00, 0x78, 0x00, 0x30, 0x00, 0x78, 0x00, - 0xcc, 0x00, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char maximize_bits[] = { - 0xff, 0x01, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0xff, 0x01, 0x00, 0x00}; - -static const unsigned char minmax_bits[] = { - 0xfc, 0x00, 0xfc, 0x00, 0x84, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xe1, 0x00, - 0x21, 0x00, 0x21, 0x00, 0x3f, 0x00, 0x00, 0x00}; - -static const unsigned char question_bits[] = { - 0x00, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00}; - -static const unsigned char pindown_white_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xa0, 0x03, - 0xb0, 0x01, 0x30, 0x01, 0xf0, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char pindown_gray_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char pindown_dgray_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x10, 0x70, 0x20, 0x50, 0x20, - 0x48, 0x30, 0xc8, 0x38, 0x08, 0x1f, 0x08, 0x18, 0x10, 0x1c, 0x10, 0x0e, - 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char pinup_white_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x11, - 0x3f, 0x15, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char pinup_gray_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x0a, 0xbf, 0x0a, 0x80, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char pinup_dgray_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x40, 0x31, 0x40, 0x2e, - 0x40, 0x20, 0x40, 0x20, 0x7f, 0x2a, 0x40, 0x3f, 0xc0, 0x31, 0xc0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char above_on_bits[] = { - 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0x30, 0x00, 0xfc, 0x00, 0x78, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char above_off_bits[] = { - 0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - -static const unsigned char below_on_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, - 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0x00, 0x00}; - -static const unsigned char below_off_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, - 0x30, 0x00, 0xfc, 0x00, 0x78, 0x00, 0x30, 0x00}; - -static const unsigned char shade_on_bits[] = { - 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x02, 0x01, 0x02, 0x01, - 0x02, 0x01, 0x02, 0x01, 0xfe, 0x01, 0x00, 0x00}; - -static const unsigned char shade_off_bits[] = { - 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - -/////////////////////////////////////////////////////////////////////////// - -// Titlebar button positions -bool onAllDesktopsButtonOnLeft = true; -bool coloredFrame = true; -bool extraSlim = false; - -KPixmap* titleBlocks = NULL; -KPixmap* ititleBlocks = NULL; -KPixmap* pinDownPix = NULL; -KPixmap* pinUpPix = NULL; -KPixmap* ipinDownPix = NULL; -KPixmap* ipinUpPix = NULL; -static int normalTitleHeight; -static int toolTitleHeight; -static int borderWidth; - -bool quartz_initialized = false; -QuartzHandler* clientHandler; - -/////////////////////////////////////////////////////////////////////////// - - -QuartzHandler::QuartzHandler() -{ - quartz_initialized = false; - readConfig(); - createPixmaps(); - quartz_initialized = true; -} - - -QuartzHandler::~QuartzHandler() -{ - quartz_initialized = false; - freePixmaps(); -} - - -KDecoration* QuartzHandler::createDecoration( KDecorationBridge* bridge ) -{ - return new QuartzClient( bridge, this ); -} - - -bool QuartzHandler::reset(unsigned long changed) -{ - quartz_initialized = false; - freePixmaps(); - readConfig(); - createPixmaps(); - quartz_initialized = true; - - // Do we need to "hit the wooden hammer" ? - bool needHardReset = true; - if (changed & SettingColors) - { - needHardReset = false; - } else if (changed & SettingButtons) { - // handled by KCommonDecoration - needHardReset = false; - } - - if (needHardReset) { - return true; - } else { - resetDecorations(changed); - return false; - } - return true; -} - - -bool QuartzHandler::supports( Ability ability ) -{ - switch( ability ) - { - case AbilityAnnounceButtons: - case AbilityButtonMenu: - case AbilityButtonOnAllDesktops: - case AbilityButtonHelp: - case AbilityButtonMinimize: - case AbilityButtonMaximize: - case AbilityButtonClose: - case AbilityButtonAboveOthers: - case AbilityButtonBelowOthers: - case AbilityButtonShade: - case AbilityButtonSpacer: - return true; - default: - return false; - }; -} - - -void QuartzHandler::readConfig() -{ - KConfig conf("twinquartzrc"); - conf.setGroup("General"); - coloredFrame = conf.readBoolEntry( "UseTitleBarBorderColors", true ); - extraSlim = conf.readBoolEntry( "UseQuartzExtraSlim", false ); - - // A small hack to make the on all desktops button look nicer - onAllDesktopsButtonOnLeft = KDecoration::options()->titleButtonsLeft().contains( 'S' ); - if ( TQApplication::reverseLayout() ) - onAllDesktopsButtonOnLeft = !onAllDesktopsButtonOnLeft; - switch(options()->preferredBorderSize(this)) { - case BorderLarge: - borderWidth = 8; - break; - case BorderVeryLarge: - borderWidth = 12; - break; - case BorderHuge: - borderWidth = 18; - break; - case BorderVeryHuge: - borderWidth = 27; - break; - case BorderOversized: - borderWidth = 40; - break; - case BorderTiny: - case BorderNormal: - default: - borderWidth = extraSlim?2:4; - } - - normalTitleHeight = TQFontMetrics(options()->font(true)).height(); - int nTH_limit=extraSlim?14:18; - normalTitleHeight = TQFontMetrics(options()->font(true)).height()-(extraSlim?1:0); - if (normalTitleHeight < nTH_limit) normalTitleHeight = nTH_limit; - if (normalTitleHeight < borderWidth) normalTitleHeight = borderWidth; - - toolTitleHeight = TQFontMetrics(options()->font(true, true)).height(); - if (toolTitleHeight < 12) toolTitleHeight = 12; - if (toolTitleHeight < borderWidth) toolTitleHeight = borderWidth; -} - - -// This does the colour transition magic. (You say "Oh, is that it?") -// This may be made configurable at a later stage -void QuartzHandler::drawBlocks( KPixmap *pi, KPixmap &p, const TQColor &c1, const TQColor &c2 ) -{ - TQPainter px; - - px.begin( pi ); - - // Draw a background gradient first - KPixmapEffect::gradient(p, c1, c2, KPixmapEffect::HorizontalGradient); - - int factor = (pi->height()-2)/4; - int square = factor - (factor+2)/4; - - int x = pi->width() - 5*factor - square; - int y = (pi->height() - 4*factor)/2; - - px.fillRect( x, y, square, square, c1.light(120) ); - px.fillRect( x, y+factor, square, square, c1 ); - px.fillRect( x, y+2*factor, square, square, c1.light(110) ); - px.fillRect( x, y+3*factor, square, square, c1 ); - - px.fillRect( x+factor, y, square, square, c1.light(110) ); - px.fillRect( x+factor, y+factor, square, square, c2.light(110) ); - px.fillRect( x+factor, y+2*factor, square, square, c1.light(120) ); - px.fillRect( x+factor, y+3*factor, square, square, c2.light(130) ); - - px.fillRect( x+2*factor, y+factor, square, square, c1.light(110) ); - px.fillRect( x+2*factor, y+2*factor, square, square, c2.light(120) ); - px.fillRect( x+2*factor, y+3*factor, square, square, c2.light(150) ); - - px.fillRect( x+3*factor, y, square, square, c1.dark(110) ); - px.fillRect( x+3*factor, y+2*factor, square, square, c2.light(120) ); - px.fillRect( x+3*factor, y+3*factor, square, square, c1.dark(120) ); - - px.fillRect( x+4*factor, y+factor, square, square, c1.light(110) ); - px.fillRect( x+4*factor, y+3*factor, square, square, c1.dark(110) ); - - px.fillRect( x+5*factor, y+2*factor, square, square, c2.light(120)); - px.fillRect( x+5*factor, y+3*factor, square, square, c2.light(110) ); -} - - -// This paints the button pixmaps upon loading the style. -void QuartzHandler::createPixmaps() -{ - // Obtain titlebar blend colours, and create the block stuff on pixmaps. - TQColorGroup g2 = options()->tqcolorGroup(ColorTitleBlend, true); - TQColor c2 = g2.background(); - g2 = options()->tqcolorGroup(ColorTitleBar, true ); - TQColor c = g2.background().light(130); - - titleBlocks = new KPixmap(); - titleBlocks->resize( normalTitleHeight*25/18, normalTitleHeight ); - drawBlocks( titleBlocks, *titleBlocks, c, c2 ); - - g2 = options()->tqcolorGroup(ColorTitleBlend, false); - c2 = g2.background(); - g2 = options()->tqcolorGroup(ColorTitleBar, false ); - c = g2.background().light(130); - - ititleBlocks = new KPixmap(); - ititleBlocks->resize( normalTitleHeight*25/18, normalTitleHeight ); - drawBlocks( ititleBlocks, *ititleBlocks, c, c2 ); - - // Set the on all desktops pin pixmaps; - TQColorGroup g; - TQPainter p; - - g = options()->tqcolorGroup( onAllDesktopsButtonOnLeft ? ColorTitleBar : ColorTitleBlend, true ); - c = onAllDesktopsButtonOnLeft ? TQColor(g.background().light(130)) : g.background(); - g2 = options()->tqcolorGroup( ColorButtonBg, true ); - - pinUpPix = new KPixmap(); - pinUpPix->resize(16, 16); - p.begin( pinUpPix ); - p.fillRect( 0, 0, 16, 16, c); - kColorBitmaps( &p, g2, 0, 1, 16, 16, true, pinup_white_bits, - pinup_gray_bits, NULL, NULL, pinup_dgray_bits, NULL ); - p.end(); - - pinDownPix = new KPixmap(); - pinDownPix->resize(16, 16); - p.begin( pinDownPix ); - p.fillRect( 0, 0, 16, 16, c); - kColorBitmaps( &p, g2, 0, 1, 16, 16, true, pindown_white_bits, - pindown_gray_bits, NULL, NULL, pindown_dgray_bits, NULL ); - p.end(); - - - // Inactive pins - g = options()->tqcolorGroup( onAllDesktopsButtonOnLeft ? ColorTitleBar : ColorTitleBlend, false ); - c = onAllDesktopsButtonOnLeft ? TQColor(g.background().light(130)) : g.background(); - g2 = options()->tqcolorGroup( ColorButtonBg, false ); - - ipinUpPix = new KPixmap(); - ipinUpPix->resize(16, 16); - p.begin( ipinUpPix ); - p.fillRect( 0, 0, 16, 16, c); - kColorBitmaps( &p, g2, 0, 1, 16, 16, true, pinup_white_bits, - pinup_gray_bits, NULL, NULL, pinup_dgray_bits, NULL ); - p.end(); - - ipinDownPix = new KPixmap(); - ipinDownPix->resize(16, 16); - p.begin( ipinDownPix ); - p.fillRect( 0, 0, 16, 16, c); - kColorBitmaps( &p, g2, 0, 1, 16, 16, true, pindown_white_bits, - pindown_gray_bits, NULL, NULL, pindown_dgray_bits, NULL ); - p.end(); -} - - -void QuartzHandler::freePixmaps() -{ - delete titleBlocks; - delete ititleBlocks; - - // On all desktops pin images - delete pinUpPix; - delete ipinUpPix; - delete pinDownPix; - delete ipinDownPix; -} - - -TQValueList< QuartzHandler::BorderSize > QuartzHandler::borderSizes() const -{ // the list must be sorted - return TQValueList< BorderSize >() << BorderNormal << BorderLarge << - BorderVeryLarge << BorderHuge << BorderVeryHuge << BorderOversized; -} - - -QuartzButton::QuartzButton(ButtonType type, QuartzClient *parent, const char *name) - : KCommonDecorationButton(type, parent, name) -{ - // Eliminate any possible background flicker - setBackgroundMode( TQWidget::NoBackground ); - - deco = 0; -} - - -QuartzButton::~QuartzButton() -{ - delete deco; -} - -void QuartzButton::reset(unsigned long changed) -{ - if (changed&DecorationReset || changed&ManualReset || changed&SizeChange || changed&StateChange) { - switch (type() ) { - case CloseButton: - setBitmap(close_bits); - break; - case HelpButton: - setBitmap(question_bits); - break; - case MinButton: - setBitmap(iconify_bits); - break; - case MaxButton: - setBitmap( isOn() ? minmax_bits : maximize_bits ); - break; - case OnAllDesktopsButton: - setBitmap(0); - break; - case ShadeButton: - setBitmap( isOn() ? shade_on_bits : shade_off_bits ); - break; - case AboveButton: - setBitmap( isOn() ? above_on_bits : above_off_bits ); - break; - case BelowButton: - setBitmap( isOn() ? below_on_bits : below_off_bits ); - break; - default: - setBitmap(0); - break; - } - - this->update(); - } -} - -void QuartzButton::setBitmap(const unsigned char *bitmap) -{ - delete deco; - deco = 0; - - if (bitmap) { - deco = new TQBitmap(10, 10, bitmap, true); - deco->setMask( *deco ); - tqrepaint( false ); - } -} - -void QuartzButton::drawButton(TQPainter *p) -{ - // Never paint if the pixmaps have not been created - if (!quartz_initialized) - return; - - TQColor c; - - if (isLeft() ) - c = KDecoration::options()->color(KDecoration::ColorTitleBar, decoration()->isActive()).light(130); - else - c = KDecoration::options()->color(KDecoration::ColorTitleBlend, decoration()->isActive()); - - // Fill the button background with an appropriate color - p->fillRect(0, 0, width(), height(), c ); - - // If we have a decoration bitmap, then draw that - // otherwise we paint a menu button (with mini icon), or a onAllDesktops button. - if( deco ) - { - int xOff = (width()-10)/2; - int yOff = (height()-10)/2; - p->setPen( Qt::black ); - p->drawPixmap(isDown() ? xOff+2: xOff+1, isDown() ? yOff+2 : yOff+1, *deco); - p->setPen( KDecoration::options()->color(KDecoration::ColorButtonBg, decoration()->isActive()).light(150) ); - p->drawPixmap(isDown() ? xOff+1: xOff, isDown() ? yOff+1 : yOff, *deco); - } else - { - TQPixmap btnpix; - int Offset = 0; - - if (type() == OnAllDesktopsButton) - { - if (isDown()) - Offset = 1; - - // Select the right onAllDesktops button to paint - if (decoration()->isActive()) - btnpix = isOn() ? *pinDownPix : *pinUpPix; - else - btnpix = isOn() ? *ipinDownPix : *ipinUpPix; - - } else - btnpix = decoration()->icon().pixmap( TQIconSet::Small, TQIconSet::Normal); - - // Shrink the miniIcon for tiny titlebars. - if ( height() < 16) - { - TQPixmap tmpPix; - - // Smooth scale the image - tmpPix.convertFromImage( TQImage(btnpix.convertToImage()).smoothScale(height(), height())); - p->drawPixmap( 0, 0, tmpPix ); - } else { - Offset += (height() - 16)/2; - p->drawPixmap( Offset, Offset, btnpix ); - } - } -} - -/////////////////////////////////////////////////////////////////////////// - -QuartzClient::QuartzClient(KDecorationBridge* bridge, KDecorationFactory* factory) - : KCommonDecoration (bridge, factory) -{ -} - -TQString QuartzClient::visibleName() const -{ - return i18n("Quartz"); -} - -TQString QuartzClient::defaultButtonsLeft() const -{ - return "M"; -} - -TQString QuartzClient::defaultButtonsRight() const -{ - return "HIAX"; -} - -bool QuartzClient::decorationBehaviour(DecorationBehaviour behaviour) const -{ - switch (behaviour) { - case DB_MenuClose: - return false; - - case DB_WindowMask: - return false; - - case DB_ButtonHide: - return true; - - default: - return KCommonDecoration::decorationBehaviour(behaviour); - } -} - -int QuartzClient::layoutMetric(LayoutMetric lm, bool respectWindowState, const KCommonDecorationButton *btn) const -{ - bool maximized = maximizeMode()==MaximizeFull && !options()->moveResizeMaximizedWindows(); - - switch (lm) { - case LM_BorderLeft: - case LM_BorderRight: - case LM_BorderBottom: - case LM_TitleEdgeLeft: - case LM_TitleEdgeRight: - { - if (respectWindowState && maximized) { - return 0; - } else { - return borderSize; - } - } - - case LM_TitleEdgeTop: - return borderSize-1; - - case LM_TitleEdgeBottom: - return 1; - - case LM_TitleBorderLeft: - case LM_TitleBorderRight: - return 5; - - case LM_TitleHeight: - return titleHeight; - - case LM_ButtonWidth: - case LM_ButtonHeight: - return titleHeight-2; - - case LM_ButtonSpacing: - return 1; - - case LM_ExplicitButtonSpacer: - return 3; - - default: - return KCommonDecoration::layoutMetric(lm, respectWindowState, btn); - } -} - -KCommonDecorationButton *QuartzClient::createButton(ButtonType type) -{ - switch (type) { - case MenuButton: - return new QuartzButton(MenuButton, this, "menu"); - - case OnAllDesktopsButton: - return new QuartzButton(OnAllDesktopsButton, this, "on_all_desktops"); - - case HelpButton: - return new QuartzButton(HelpButton, this, "help"); - - case MinButton: - return new QuartzButton(MinButton, this, "minimize"); - - case MaxButton: - return new QuartzButton(MaxButton, this, "maximize"); - - case CloseButton: - return new QuartzButton(CloseButton, this, "close"); - - case AboveButton: - return new QuartzButton(AboveButton, this, "above"); - - case BelowButton: - return new QuartzButton(BelowButton, this, "below"); - - case ShadeButton: - return new QuartzButton(ShadeButton, this, "shade"); - - default: - return 0; - } -} - - -void QuartzClient::init() -{ - // Finally, toolWindows look small - if ( isToolWindow() ) { - titleHeight = toolTitleHeight; - largeButtons = false; - } - else { - titleHeight = normalTitleHeight; - largeButtons = true; - } - - borderSize = borderWidth; - - KCommonDecoration::init(); -} - -void QuartzClient::reset( unsigned long changed ) -{ - if (changed & SettingColors || changed & SettingFont) - { - // tqrepaint the whole thing - widget()->tqrepaint(false); - } - - KCommonDecoration::reset(changed); -} - - -// Quartz Paint magic goes here. -void QuartzClient::paintEvent( TQPaintEvent* ) -{ - // Never paint if the pixmaps have not been created - if (!quartz_initialized) - return; - - const bool maxFull = (maximizeMode()==MaximizeFull) && !options()->moveResizeMaximizedWindows(); - - TQColorGroup g; - TQPainter p(widget()); - - // Obtain widget bounds. - TQRect r(widget()->rect()); - int x = r.x(); - int y = r.y(); - int x2 = r.width() - 1; - int y2 = r.height() - 1; - int w = r.width(); - int h = r.height(); - - // Draw part of the frame that is the title color - - if( coloredFrame ) - g = options()->tqcolorGroup(ColorTitleBar, isActive()); - else - g = options()->tqcolorGroup(ColorFrame, isActive()); - - // Draw outer highlights and lowlights - p.setPen( g.light().light(120) ); - p.drawLine( x, y, x2-1, y ); - p.drawLine( x, y+1, x, y2-1 ); - p.setPen( g.dark().light(120) ); - p.drawLine( x2, y, x2, y2 ); - p.drawLine( x, y2, x2, y2 ); - - // Fill out the border edges - TQColor frameColor; - if ( coloredFrame) - frameColor = g.background().light(130); - else - frameColor = g.background(); - if (borderSize > 2) { - p.fillRect(x+1, y+1, w-2, borderSize-2, frameColor); // top - if (!maxFull) { - p.fillRect(x+1, y+h-(borderSize-1), w-2, borderSize-2, frameColor); // bottom - p.fillRect(x+1, y+borderSize-1, borderSize-1, h-2*(borderSize-1), frameColor); // left - p.fillRect(x+w-(borderSize), y+borderSize-1, borderSize-1, h-2*(borderSize-1), frameColor); // right - } - } - - // Draw a frame around the wrapped widget. - p.setPen( g.background() ); - if (maxFull) { - p.drawLine(x+1, y+titleHeight+(borderSize-1), w-2, y+titleHeight+(borderSize-1)); - } else { - p.drawRect( x+(borderSize-1), y+titleHeight+(borderSize-1), w-2*(borderSize-1), h-titleHeight-2*(borderSize-1) ); - } - - // Drawing this extra line removes non-drawn areas when shaded - p.drawLine( x+borderSize, y2-borderSize, x2-borderSize, y2-borderSize); - - // Highlight top corner - p.setPen( g.light().light(160) ); - p.drawPoint( x, y ); - p.setPen( g.light().light(140) ); - p.drawPoint( x+1, y ); - p.drawPoint( x, y+1 ); - - // Draw the title bar. - // =================== - int r_x, r_y, r_x2, r_y2; - TQT_TQRECT_OBJECT(widget()->rect()).coords(&r_x, &r_y, &r_x2, &r_y2); - const int titleEdgeLeft = layoutMetric(LM_TitleEdgeLeft); - const int titleEdgeTop = layoutMetric(LM_TitleEdgeTop); - const int titleEdgeRight = layoutMetric(LM_TitleEdgeRight); - const int titleEdgeBottom = layoutMetric(LM_TitleEdgeBottom); - const int ttlHeight = layoutMetric(LM_TitleHeight); - const int titleEdgeBottomBottom = r_y+titleEdgeTop+ttlHeight+titleEdgeBottom-1; - r = TQRect(r_x+titleEdgeLeft+buttonsLeftWidth(), r_y+titleEdgeTop, - r_x2-titleEdgeRight-buttonsRightWidth()-(r_x+titleEdgeLeft+buttonsLeftWidth()), - titleEdgeBottomBottom-(r_y+titleEdgeTop) ); - - // Obtain titlebar blend colours - TQColor c1 = options()->color(ColorTitleBar, isActive() ).light(130); - TQColor c2 = options()->color(ColorTitleBlend, isActive() ); - - // Create a disposable pixmap buffer for the titlebar - KPixmap* titleBuffer = new KPixmap; - titleBuffer->resize( maxFull?w-2:(w-2*(borderSize-1)), titleHeight ); - - TQPainter p2( titleBuffer, this ); - - // subtract titleBlocks pixmap width and some - int rightoffset = r.x()+r.width()-titleBlocks->width()-borderSize; - - p2.fillRect( 0, 0, w, r.height(), c1 ); - p2.fillRect( rightoffset, 0, maxFull?w-rightoffset:w-rightoffset-2*(borderSize-1), r.height(), c2 ); - - // 8 bit displays will be a bit dithered, but they still look ok. - if ( isActive() ) - p2.drawPixmap( rightoffset, 0, *titleBlocks ); - else - p2.drawPixmap( rightoffset, 0, *ititleBlocks ); - - // Draw the title text on the pixmap, and with a smaller font - // for toolwindows than the default. - TQFont fnt; - if ( largeButtons ) { - fnt = options()->font(true, false); // font not small - } else { - fnt = options()->font(true, true); // font small - fnt.setWeight( TQFont::Normal ); // and disable bold - } - p2.setFont( fnt ); - - p2.setPen( options()->color(ColorFont, isActive() )); - p2.drawText(r.x()+4-borderSize, 0, r.width()-3, r.height(), - AlignLeft | AlignVCenter, caption() ); - p2.end(); - - p.drawPixmap( maxFull?1:borderSize-1, borderSize-1, *titleBuffer ); - - delete titleBuffer; -} - -} - -// Extended KWin plugin interface -///////////////////////////////// -extern "C" -{ - KDE_EXPORT KDecorationFactory *create_factory() - { - Quartz::clientHandler = new Quartz::QuartzHandler(); - return Quartz::clientHandler; - } -} - - - -#include "quartz.moc" -// vim: ts=4 -// kate: space-indent off; tab-width 4; diff --git a/kwin/clients/quartz/quartz.desktop b/kwin/clients/quartz/quartz.desktop deleted file mode 100644 index d84c1d4dd..000000000 --- a/kwin/clients/quartz/quartz.desktop +++ /dev/null @@ -1,39 +0,0 @@ -[Desktop Entry] -Name=Quartz -Name[az]=Kvarts -Name[be]=Кварц -Name[bn]=কোয়ার্ট্জ -Name[csb]=Kwarc -Name[cy]=Cwarts -Name[eo]=Kvarco -Name[es]=Cuarzo -Name[eu]=Kuartzoa -Name[fa]=کوارتز -Name[ga]=Grianchloch -Name[hi]=क्वार्ट्ज -Name[hr]=Kvarc -Name[ka]=კვარცი -Name[kk]=Кварц -Name[ko]=수정 -Name[lo]=ແບບຄວອທ -Name[lv]=Kvarcs -Name[mk]=Кварц -Name[mt]=Kwartz -Name[ne]=क्वार्ज -Name[pl]=Kwarc -Name[pt_BR]=Quartzo -Name[ro]=Cuarț -Name[ru]=Кварц -Name[rw]=Ibuye -Name[ta]=குவார்ட்ஸ் -Name[te]=క్వార్జ్ -Name[tg]=Квартс -Name[th]=แบบควอทซ์ -Name[tr]=Kuartz -Name[uk]=Кварц -Name[uz]=Chaqmoqtosh -Name[uz@cyrillic]=Чақмоқтош -Name[ven]=Musuku -Name[vi]=Thạch anh -Name[zh_TW]=石英 -X-KDE-Library=twin3_quartz diff --git a/kwin/clients/quartz/quartz.h b/kwin/clients/quartz/quartz.h deleted file mode 100644 index ddb68ced3..000000000 --- a/kwin/clients/quartz/quartz.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Gallium-Quartz KWin client - * - * Copyright (C) 2005 Sandro Giessl <[email protected]> - * Copyright 2001 - * Karol Szwed <[email protected]> - * http://gallium.n3.net/ - * - * Based on the KDE default client. - * - * Includes mini titlebars for ToolWindow Support. - * Button positions are now customizable. - * - */ - -#ifndef __KDEGALLIUM_QUARTZ_H -#define __KDEGALLIUM_QUARTZ_H - -#include <tqbitmap.h> -#include <kpixmap.h> -#include "../../lib/kcommondecoration.h" -#include "../../lib/kdecorationfactory.h" - -class TQSpacerItem; -class TQBoxLayout; - -namespace Quartz { - -class QuartzClient; - -class QuartzHandler: public TQObject, public KDecorationFactory -{ - Q_OBJECT - public: - QuartzHandler(); - ~QuartzHandler(); - - virtual KDecoration* createDecoration( KDecorationBridge* ); - virtual bool reset(unsigned long changed); - virtual bool supports( Ability ability ); - virtual TQValueList< BorderSize > borderSizes() const; - - private: - void readConfig(); - void createPixmaps(); - void freePixmaps(); - void drawBlocks(KPixmap* pi, KPixmap &p, const TQColor &c1, const TQColor &c2); -}; - - -class QuartzButton : public KCommonDecorationButton -{ - public: - QuartzButton(ButtonType type, QuartzClient *parent, const char *name); - ~QuartzButton(); - void setBitmap(const unsigned char *bitmap); - - void reset(unsigned long changed); - - protected: - void drawButton(TQPainter *p); - - TQBitmap* deco; -}; - - -class QuartzClient : public KCommonDecoration -{ - public: - QuartzClient(KDecorationBridge* bridge, KDecorationFactory* factory); - ~QuartzClient() {;} - - virtual TQString visibleName() const; - virtual TQString defaultButtonsLeft() const; - virtual TQString defaultButtonsRight() const; - virtual bool decorationBehaviour(DecorationBehaviour behaviour) const; - virtual int layoutMetric(LayoutMetric lm, bool respectWindowState = true, const KCommonDecorationButton * = 0) const; - virtual KCommonDecorationButton *createButton(ButtonType type); - - virtual void init(); - - protected: - virtual void reset( unsigned long changed ); - void paintEvent( TQPaintEvent* ); - - private: - int titleHeight, borderSize; - bool largeButtons; -}; - -} - -#endif -// vim: ts=4 -// kate: space-indent off; tab-width 4; |