Sophie

Sophie

distrib > Mandriva > 2006.0 > x86_64 > by-pkgid > d0c58635c3fcc548e9b6ce88c8980028 > files > 1805

lib64kdebase4-devel-3.4.2-55.5.20060mdk.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <title>kwin Library: kdedefault.cpp Source File (kwin Library)</title>
  <link href="../../common/doxygen.css" rel="stylesheet" type="text/css">
</head>
<div class="header">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td rowspan="2" width="92">
<a href="../../index.html" title="The API documentation main page"><img src="../../common/docheadergears.png" style="border:0px;" alt=""></a>
</td>
<td width="95%">
<h1>kwin Library API Documentation</h1>
</td>
</tr>
<tr>
<td valign="bottom">
<table class="links" border=0 cellspacing=0>
<tr>
<td><a href="index.html">Overview</a></td>
<td><a href="hierarchy.html" title="Inheritance list, sorted roughly  alphabetically">Class&nbsp;Hierarchy</a></td>
<td><a href="classes.html" title="Alphabetical list of classes">Classes</a></td>
<td><a href="annotated.html" title="Classes, structs, unions and interfaces with brief descriptions">Classes&nbsp;(annotated)</a></td>
<td><a href="functions.html" title="Documented class members with links to the classes they belong to">Members</a></td>
<td><a href="namespaces.html" title="All documented namespaces with brief descriptions">Namespaces</a></td>
<td><a href="files.html" title="A list of all documented files with brief descriptions">Source&nbsp;Files</a></td>
</tr>
</table>
</td></tr></table>
</div>
<div id="hgrad"></div>
<div class="text">
<!-- Generated by Doxygen 1.4.4 -->
<div class="nav">
<a class="el" href="dir_000000.html">clients</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000007.html">default</a></div>
<h1>kdedefault.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> *</span>
<a name="l00003"></a>00003 <span class="comment"> *  KDE2 Default KWin client</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> *  Copyright (C) 1999, 2001 Daniel Duley &lt;mosfet@kde.org&gt;</span>
<a name="l00006"></a>00006 <span class="comment"> *  Matthias Ettrich &lt;ettrich@kde.org&gt;</span>
<a name="l00007"></a>00007 <span class="comment"> *  Karol Szwed &lt;gallium@kde.org&gt;</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> *  Draws mini titlebars for tool windows.</span>
<a name="l00010"></a>00010 <span class="comment"> *  Many features are now customizable.</span>
<a name="l00011"></a>00011 <span class="comment"> */</span>
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 <span class="preprocessor">#include "kdedefault.h"</span>
<a name="l00014"></a>00014 
<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;kconfig.h&gt;</span>
<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;kglobal.h&gt;</span>
<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;kpixmapeffect.h&gt;</span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;kimageeffect.h&gt;</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;kdrawutil.h&gt;</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;klocale.h&gt;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;qlayout.h&gt;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;qdrawutil.h&gt;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;qbitmap.h&gt;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;qimage.h&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;qtooltip.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;qapplication.h&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;qlabel.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;kdebug.h&gt;</span>
<a name="l00029"></a>00029 
<a name="l00030"></a><a class="code" href="namespaceDefault.html">00030</a> <span class="keyword">namespace </span>Default
<a name="l00031"></a>00031 {
<a name="l00032"></a>00032 
<a name="l00033"></a><a class="code" href="namespaceDefault.html#a0">00033</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a0">iconify_bits</a>[] = {
<a name="l00034"></a>00034   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00,
<a name="l00035"></a>00035   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00036"></a>00036 
<a name="l00037"></a><a class="code" href="namespaceDefault.html#a1">00037</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a1">close_bits</a>[] = {
<a name="l00038"></a>00038   0x00, 0x00, 0x84, 0x00, 0xce, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x78, 0x00,
<a name="l00039"></a>00039   0xfc, 0x00, 0xce, 0x01, 0x84, 0x00, 0x00, 0x00};
<a name="l00040"></a>00040 
<a name="l00041"></a><a class="code" href="namespaceDefault.html#a2">00041</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a2">maximize_bits</a>[] = {
<a name="l00042"></a>00042   0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0x86, 0x01, 0x86, 0x01, 0x86, 0x01,
<a name="l00043"></a>00043   0x86, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x00, 0x00};
<a name="l00044"></a>00044 
<a name="l00045"></a><a class="code" href="namespaceDefault.html#a3">00045</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a3">minmax_bits</a>[] = {
<a name="l00046"></a>00046   0x7f, 0x00, 0x7f, 0x00, 0x63, 0x00, 0xfb, 0x03, 0xfb, 0x03, 0x1f, 0x03,
<a name="l00047"></a>00047   0x1f, 0x03, 0x18, 0x03, 0xf8, 0x03, 0xf8, 0x03};
<a name="l00048"></a>00048 
<a name="l00049"></a><a class="code" href="namespaceDefault.html#a4">00049</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a4">question_bits</a>[] = {
<a name="l00050"></a>00050   0x00, 0x00, 0x78, 0x00, 0xcc, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00,
<a name="l00051"></a>00051   0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00};
<a name="l00052"></a>00052 
<a name="l00053"></a><a class="code" href="namespaceDefault.html#a5">00053</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a5">above_on_bits</a>[] = {
<a name="l00054"></a>00054    0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0x30, 0x00, 0xfc, 0x00, 0x78, 0x00,
<a name="l00055"></a>00055    0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
<a name="l00056"></a>00056 
<a name="l00057"></a><a class="code" href="namespaceDefault.html#a6">00057</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a6">above_off_bits</a>[] = {
<a name="l00058"></a>00058    0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01,
<a name="l00059"></a>00059    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
<a name="l00060"></a>00060 
<a name="l00061"></a><a class="code" href="namespaceDefault.html#a7">00061</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a7">below_on_bits</a>[] = {
<a name="l00062"></a>00062    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x00, 0xfc, 0x00,
<a name="l00063"></a>00063    0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0x00, 0x00 };
<a name="l00064"></a>00064 
<a name="l00065"></a><a class="code" href="namespaceDefault.html#a8">00065</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a8">below_off_bits</a>[] = {
<a name="l00066"></a>00066    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01,
<a name="l00067"></a>00067    0x30, 0x00, 0xfc, 0x00, 0x78, 0x00, 0x30, 0x00 };
<a name="l00068"></a>00068 
<a name="l00069"></a><a class="code" href="namespaceDefault.html#a9">00069</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a9">shade_on_bits</a>[] = {
<a name="l00070"></a>00070    0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x02, 0x01, 0x02, 0x01,
<a name="l00071"></a>00071    0x02, 0x01, 0x02, 0x01, 0xfe, 0x01, 0x00, 0x00 };
<a name="l00072"></a>00072 
<a name="l00073"></a><a class="code" href="namespaceDefault.html#a10">00073</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a10">shade_off_bits</a>[] = {
<a name="l00074"></a>00074    0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00,
<a name="l00075"></a>00075    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
<a name="l00076"></a>00076 
<a name="l00077"></a><a class="code" href="namespaceDefault.html#a11">00077</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a11">pindown_white_bits</a>[] = {
<a name="l00078"></a>00078   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xa0, 0x03,
<a name="l00079"></a>00079   0xb0, 0x01, 0x30, 0x01, 0xf0, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00,
<a name="l00080"></a>00080   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00081"></a>00081 
<a name="l00082"></a><a class="code" href="namespaceDefault.html#a12">00082</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a12">pindown_gray_bits</a>[] = {
<a name="l00083"></a>00083   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
<a name="l00084"></a>00084   0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01,
<a name="l00085"></a>00085   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00086"></a>00086 
<a name="l00087"></a><a class="code" href="namespaceDefault.html#a13">00087</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a13">pindown_dgray_bits</a>[] = {
<a name="l00088"></a>00088   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x10, 0x70, 0x20, 0x50, 0x20,
<a name="l00089"></a>00089   0x48, 0x30, 0xc8, 0x38, 0x08, 0x1f, 0x08, 0x18, 0x10, 0x1c, 0x10, 0x0e,
<a name="l00090"></a>00090   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00091"></a>00091 
<a name="l00092"></a><a class="code" href="namespaceDefault.html#a14">00092</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a14">pindown_mask_bits</a>[] = {
<a name="l00093"></a>00093   0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x1f, 0xf0, 0x3f, 0xf0, 0x3f,
<a name="l00094"></a>00094   0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf0, 0x0f,
<a name="l00095"></a>00095   0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00096"></a>00096 
<a name="l00097"></a><a class="code" href="namespaceDefault.html#a15">00097</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a15">pinup_white_bits</a>[] = {
<a name="l00098"></a>00098   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x11,
<a name="l00099"></a>00099   0x3f, 0x15, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<a name="l00100"></a>00100   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00101"></a>00101 
<a name="l00102"></a><a class="code" href="namespaceDefault.html#a16">00102</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a16">pinup_gray_bits</a>[] = {
<a name="l00103"></a>00103   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<a name="l00104"></a>00104   0x80, 0x0a, 0xbf, 0x0a, 0x80, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
<a name="l00105"></a>00105   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00106"></a>00106 
<a name="l00107"></a><a class="code" href="namespaceDefault.html#a17">00107</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a17">pinup_dgray_bits</a>[] = {
<a name="l00108"></a>00108   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x40, 0x31, 0x40, 0x2e,
<a name="l00109"></a>00109   0x40, 0x20, 0x40, 0x20, 0x7f, 0x2a, 0x40, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
<a name="l00110"></a>00110   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00111"></a>00111 
<a name="l00112"></a><a class="code" href="namespaceDefault.html#a18">00112</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="namespaceDefault.html#a18">pinup_mask_bits</a>[] = {
<a name="l00113"></a>00113   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xc0, 0x31, 0xc0, 0x3f,
<a name="l00114"></a>00114   0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xc0, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
<a name="l00115"></a>00115   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
<a name="l00116"></a>00116 
<a name="l00117"></a>00117 <span class="comment">// ===========================================================================</span>
<a name="l00118"></a>00118 
<a name="l00119"></a><a class="code" href="namespaceDefault.html#a19">00119</a> <span class="keyword">static</span> QPixmap* <a class="code" href="namespaceDefault.html#a19">titlePix</a>;
<a name="l00120"></a><a class="code" href="namespaceDefault.html#a20">00120</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a20">titleBuffer</a>;
<a name="l00121"></a><a class="code" href="namespaceDefault.html#a21">00121</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a>;
<a name="l00122"></a><a class="code" href="namespaceDefault.html#a22">00122</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>;
<a name="l00123"></a>00123 
<a name="l00124"></a><a class="code" href="namespaceDefault.html#a23">00124</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a23">pinDownPix</a>;
<a name="l00125"></a><a class="code" href="namespaceDefault.html#a24">00125</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a24">pinUpPix</a>;
<a name="l00126"></a><a class="code" href="namespaceDefault.html#a25">00126</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a25">ipinDownPix</a>;
<a name="l00127"></a><a class="code" href="namespaceDefault.html#a26">00127</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a26">ipinUpPix</a>;
<a name="l00128"></a>00128 
<a name="l00129"></a><a class="code" href="namespaceDefault.html#a27">00129</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[2];
<a name="l00130"></a><a class="code" href="namespaceDefault.html#a28">00130</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[2];
<a name="l00131"></a><a class="code" href="namespaceDefault.html#a29">00131</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[2];
<a name="l00132"></a><a class="code" href="namespaceDefault.html#a30">00132</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[2];
<a name="l00133"></a>00133 
<a name="l00134"></a><a class="code" href="namespaceDefault.html#a31">00134</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[2];
<a name="l00135"></a><a class="code" href="namespaceDefault.html#a32">00135</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[2];
<a name="l00136"></a><a class="code" href="namespaceDefault.html#a33">00136</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[2];
<a name="l00137"></a><a class="code" href="namespaceDefault.html#a34">00137</a> <span class="keyword">static</span> KPixmap* <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[2];
<a name="l00138"></a>00138 
<a name="l00139"></a><a class="code" href="namespaceDefault.html#a35">00139</a> <span class="keyword">static</span> <a class="code" href="classDefault_1_1KDEDefaultHandler.html">KDEDefaultHandler</a>* <a class="code" href="namespaceDefault.html#a35">clientHandler</a>;
<a name="l00140"></a><a class="code" href="namespaceDefault.html#a36">00140</a> <span class="keyword">static</span> <span class="keywordtype">int</span>  <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>;
<a name="l00141"></a><a class="code" href="namespaceDefault.html#a37">00141</a> <span class="keyword">static</span> <span class="keywordtype">int</span>  <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>;
<a name="l00142"></a><a class="code" href="namespaceDefault.html#a38">00142</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="namespaceDefault.html#a38">borderWidth</a>;
<a name="l00143"></a><a class="code" href="namespaceDefault.html#a39">00143</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>;
<a name="l00144"></a><a class="code" href="namespaceDefault.html#a40">00144</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a> = <span class="keyword">false</span>;
<a name="l00145"></a><a class="code" href="namespaceDefault.html#a41">00145</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceDefault.html#a41">useGradients</a>;
<a name="l00146"></a><a class="code" href="namespaceDefault.html#a42">00146</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceDefault.html#a42">showGrabBar</a>;
<a name="l00147"></a><a class="code" href="namespaceDefault.html#a43">00147</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceDefault.html#a43">showTitleBarStipple</a>;
<a name="l00148"></a>00148 
<a name="l00149"></a>00149 
<a name="l00150"></a>00150 <span class="comment">// ===========================================================================</span>
<a name="l00151"></a>00151 
<a name="l00152"></a><a class="code" href="classDefault_1_1KDEDefaultHandler.html#a0">00152</a> <a class="code" href="classDefault_1_1KDEDefaultHandler.html#a0">KDEDefaultHandler::KDEDefaultHandler</a>()
<a name="l00153"></a>00153 {
<a name="l00154"></a>00154         <a class="code" href="namespaceDefault.html#a35">clientHandler</a> = <span class="keyword">this</span>;
<a name="l00155"></a>00155     readConfig( <span class="keyword">false</span> );
<a name="l00156"></a>00156     createPixmaps();
<a name="l00157"></a>00157     <a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a> = <span class="keyword">true</span>;
<a name="l00158"></a>00158 }
<a name="l00159"></a>00159 
<a name="l00160"></a>00160 
<a name="l00161"></a><a class="code" href="classDefault_1_1KDEDefaultHandler.html#a1">00161</a> <a class="code" href="classDefault_1_1KDEDefaultHandler.html#a1">KDEDefaultHandler::~KDEDefaultHandler</a>()
<a name="l00162"></a>00162 {
<a name="l00163"></a>00163     <a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a> = <span class="keyword">false</span>;
<a name="l00164"></a>00164     freePixmaps();
<a name="l00165"></a>00165         <a class="code" href="namespaceDefault.html#a35">clientHandler</a> = NULL;
<a name="l00166"></a>00166 }
<a name="l00167"></a>00167 
<a name="l00168"></a><a class="code" href="classDefault_1_1KDEDefaultHandler.html#a2">00168</a> <a class="code" href="classKDecoration.html">KDecoration</a>* <a class="code" href="classDefault_1_1KDEDefaultHandler.html#a2">KDEDefaultHandler::createDecoration</a>( KDecorationBridge* b )
<a name="l00169"></a>00169 {
<a name="l00170"></a>00170         <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html">KDEDefaultClient</a>( b, <span class="keyword">this</span> );
<a name="l00171"></a>00171 }
<a name="l00172"></a>00172 
<a name="l00173"></a><a class="code" href="classDefault_1_1KDEDefaultHandler.html#a3">00173</a> <span class="keywordtype">bool</span> <a class="code" href="classDefault_1_1KDEDefaultHandler.html#a3">KDEDefaultHandler::reset</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> changed )
<a name="l00174"></a>00174 {
<a name="l00175"></a>00175     <a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a> = <span class="keyword">false</span>;
<a name="l00176"></a>00176         changed |= readConfig( <span class="keyword">true</span> );
<a name="l00177"></a>00177         <span class="keywordflow">if</span>( changed &amp; <a class="code" href="classKDecorationDefines.html#w74w43">SettingColors</a> )
<a name="l00178"></a>00178         { <span class="comment">// pixmaps need to be recreated</span>
<a name="l00179"></a>00179             freePixmaps();
<a name="l00180"></a>00180                 createPixmaps();
<a name="l00181"></a>00181         }
<a name="l00182"></a>00182     <a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a> = <span class="keyword">true</span>;
<a name="l00183"></a>00183         <span class="keywordtype">bool</span> need_recreate = ( changed &amp; ( <a class="code" href="classKDecorationDefines.html#w74w42">SettingDecoration</a> | <a class="code" href="classKDecorationDefines.html#w74w44">SettingFont</a> | <a class="code" href="classKDecorationDefines.html#w74w45">SettingButtons</a> | <a class="code" href="classKDecorationDefines.html#w74w47">SettingBorder</a> )) != 0;
<a name="l00184"></a>00184         <span class="keywordflow">if</span>( need_recreate )  <span class="comment">// something else than colors changed</span>
<a name="l00185"></a>00185             <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00186"></a>00186         <a class="code" href="classKDecorationFactory.html#b0">resetDecorations</a>( changed );
<a name="l00187"></a>00187         <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189 
<a name="l00190"></a>00190 
<a name="l00191"></a>00191 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> KDEDefaultHandler::readConfig( <span class="keywordtype">bool</span> update )
<a name="l00192"></a>00192 {
<a name="l00193"></a>00193         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> changed = 0;
<a name="l00194"></a>00194     KConfig* conf = KGlobal::config();
<a name="l00195"></a>00195     conf-&gt;setGroup(<span class="stringliteral">"KDEDefault"</span>);
<a name="l00196"></a>00196 
<a name="l00197"></a>00197         <span class="keywordtype">bool</span> new_showGrabBar        = conf-&gt;readBoolEntry(<span class="stringliteral">"ShowGrabBar"</span>, <span class="keyword">true</span>);
<a name="l00198"></a>00198     <span class="keywordtype">bool</span> new_showTitleBarStipple = conf-&gt;readBoolEntry(<span class="stringliteral">"ShowTitleBarStipple"</span>, <span class="keyword">true</span>);
<a name="l00199"></a>00199     <span class="keywordtype">bool</span> new_useGradients       = conf-&gt;readBoolEntry(<span class="stringliteral">"UseGradients"</span>, <span class="keyword">true</span>);
<a name="l00200"></a>00200     <span class="keywordtype">int</span>  new_titleHeight        = QFontMetrics(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;font(<span class="keyword">true</span>)).height();
<a name="l00201"></a>00201     <span class="keywordtype">int</span>  new_toolTitleHeight    = QFontMetrics(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;font(<span class="keyword">true</span>, <span class="keyword">true</span>)).height()-2;
<a name="l00202"></a>00202 
<a name="l00203"></a>00203     <span class="keywordtype">int</span> new_borderWidth;
<a name="l00204"></a>00204     <span class="keywordflow">switch</span>(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a9">preferredBorderSize</a>(<span class="keyword">this</span>)) {
<a name="l00205"></a>00205     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w50">BorderLarge</a>:
<a name="l00206"></a>00206         new_borderWidth = 8;
<a name="l00207"></a>00207         <span class="keywordflow">break</span>;
<a name="l00208"></a>00208     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w51">BorderVeryLarge</a>:
<a name="l00209"></a>00209         new_borderWidth = 12;
<a name="l00210"></a>00210         <span class="keywordflow">break</span>;
<a name="l00211"></a>00211     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w52">BorderHuge</a>:
<a name="l00212"></a>00212         new_borderWidth = 18;
<a name="l00213"></a>00213         <span class="keywordflow">break</span>;
<a name="l00214"></a>00214     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w53">BorderVeryHuge</a>:
<a name="l00215"></a>00215         new_borderWidth = 27;
<a name="l00216"></a>00216         <span class="keywordflow">break</span>;
<a name="l00217"></a>00217     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w54">BorderOversized</a>:
<a name="l00218"></a>00218         new_borderWidth = 40;
<a name="l00219"></a>00219         <span class="keywordflow">break</span>;
<a name="l00220"></a>00220     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w48">BorderTiny</a>:
<a name="l00221"></a>00221     <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w75w49">BorderNormal</a>:
<a name="l00222"></a>00222     <span class="keywordflow">default</span>:
<a name="l00223"></a>00223         new_borderWidth = 4;
<a name="l00224"></a>00224     }
<a name="l00225"></a>00225 
<a name="l00226"></a>00226     <span class="keywordflow">if</span> (new_titleHeight &lt; 16)              new_titleHeight = 16;
<a name="l00227"></a>00227     <span class="keywordflow">if</span> (new_titleHeight &lt; new_borderWidth) new_titleHeight = new_borderWidth;
<a name="l00228"></a>00228     <span class="keywordflow">if</span> (new_toolTitleHeight &lt; 12)              new_toolTitleHeight = 12;
<a name="l00229"></a>00229     <span class="keywordflow">if</span> (new_toolTitleHeight &lt; new_borderWidth) new_toolTitleHeight = new_borderWidth;
<a name="l00230"></a>00230 
<a name="l00231"></a>00231         <span class="keywordflow">if</span>( update )
<a name="l00232"></a>00232         {
<a name="l00233"></a>00233                 <span class="keywordflow">if</span>( new_showGrabBar != <a class="code" href="namespaceDefault.html#a42">showGrabBar</a>
<a name="l00234"></a>00234                     || new_titleHeight != <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>
<a name="l00235"></a>00235                     || new_toolTitleHeight != <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>
<a name="l00236"></a>00236                     || new_borderWidth != <a class="code" href="namespaceDefault.html#a38">borderWidth</a> )
<a name="l00237"></a>00237                         changed |= <a class="code" href="classKDecorationDefines.html#w74w42">SettingDecoration</a>; <span class="comment">// need recreating the decoration</span>
<a name="l00238"></a>00238                 <span class="keywordflow">if</span>( new_showTitleBarStipple != <a class="code" href="namespaceDefault.html#a43">showTitleBarStipple</a>
<a name="l00239"></a>00239                     || new_useGradients != <a class="code" href="namespaceDefault.html#a41">useGradients</a>
<a name="l00240"></a>00240                     || new_titleHeight != <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>
<a name="l00241"></a>00241                     || new_toolTitleHeight != <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a> )
<a name="l00242"></a>00242                         changed |= <a class="code" href="classKDecorationDefines.html#w74w43">SettingColors</a>; <span class="comment">// just recreate the pixmaps and repaint</span>
<a name="l00243"></a>00243         }
<a name="l00244"></a>00244 
<a name="l00245"></a>00245         <a class="code" href="namespaceDefault.html#a42">showGrabBar</a>             = new_showGrabBar;
<a name="l00246"></a>00246         <a class="code" href="namespaceDefault.html#a43">showTitleBarStipple</a>     = new_showTitleBarStipple;
<a name="l00247"></a>00247         <a class="code" href="namespaceDefault.html#a41">useGradients</a>            = new_useGradients;
<a name="l00248"></a>00248         <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>       = new_titleHeight;
<a name="l00249"></a>00249         <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>         = new_toolTitleHeight;
<a name="l00250"></a>00250         <a class="code" href="namespaceDefault.html#a38">borderWidth</a>             = new_borderWidth;
<a name="l00251"></a>00251         <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>         = (<a class="code" href="namespaceDefault.html#a38">borderWidth</a> &gt; 15) ? <a class="code" href="namespaceDefault.html#a38">borderWidth</a> + 15 : 2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>;
<a name="l00252"></a>00252         <span class="keywordflow">return</span> changed;
<a name="l00253"></a>00253 }
<a name="l00254"></a>00254 
<a name="l00255"></a>00255 
<a name="l00256"></a>00256 <span class="comment">// This paints the button pixmaps upon loading the style.</span>
<a name="l00257"></a>00257 <span class="keywordtype">void</span> KDEDefaultHandler::createPixmaps()
<a name="l00258"></a>00258 {
<a name="l00259"></a>00259     <span class="keywordtype">bool</span> highcolor = <a class="code" href="namespaceDefault.html#a41">useGradients</a> &amp;&amp; (QPixmap::defaultDepth() &gt; 8);
<a name="l00260"></a>00260 
<a name="l00261"></a>00261     <span class="comment">// Make the titlebar stipple optional</span>
<a name="l00262"></a>00262     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a43">showTitleBarStipple</a>)
<a name="l00263"></a>00263     {
<a name="l00264"></a>00264         QPainter p;
<a name="l00265"></a>00265         QPainter maskPainter;
<a name="l00266"></a>00266         <span class="keywordtype">int</span> i, x, y;
<a name="l00267"></a>00267         <a class="code" href="namespaceDefault.html#a19">titlePix</a> = <span class="keyword">new</span> QPixmap(132, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>+2);
<a name="l00268"></a>00268         QBitmap mask(132, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>+2);
<a name="l00269"></a>00269         mask.fill(Qt::color0);
<a name="l00270"></a>00270 
<a name="l00271"></a>00271         p.begin(<a class="code" href="namespaceDefault.html#a19">titlePix</a>);
<a name="l00272"></a>00272         maskPainter.begin(&amp;mask);
<a name="l00273"></a>00273         maskPainter.setPen(Qt::color1);
<a name="l00274"></a>00274         <span class="keywordflow">for</span>(i=0, y=2; i &lt; 9; ++i, y+=4)
<a name="l00275"></a>00275             <span class="keywordflow">for</span>(x=1; x &lt;= 132; x+=3)
<a name="l00276"></a>00276             {
<a name="l00277"></a>00277                 p.setPen(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <span class="keyword">true</span>).light(150));
<a name="l00278"></a>00278                 p.drawPoint(x, y);
<a name="l00279"></a>00279                 maskPainter.drawPoint(x, y);
<a name="l00280"></a>00280                 p.setPen(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <span class="keyword">true</span>).dark(150));
<a name="l00281"></a>00281                 p.drawPoint(x+1, y+1);
<a name="l00282"></a>00282                 maskPainter.drawPoint(x+1, y+1);
<a name="l00283"></a>00283             }
<a name="l00284"></a>00284         maskPainter.end();
<a name="l00285"></a>00285         p.end();
<a name="l00286"></a>00286         <a class="code" href="namespaceDefault.html#a19">titlePix</a>-&gt;setMask(mask);
<a name="l00287"></a>00287     } <span class="keywordflow">else</span>
<a name="l00288"></a>00288         <a class="code" href="namespaceDefault.html#a19">titlePix</a> = NULL;
<a name="l00289"></a>00289 
<a name="l00290"></a>00290     QColor activeTitleColor1(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>,      <span class="keyword">true</span>));
<a name="l00291"></a>00291     QColor activeTitleColor2(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w36">ColorTitleBlend</a>,    <span class="keyword">true</span>));
<a name="l00292"></a>00292 
<a name="l00293"></a>00293     QColor inactiveTitleColor1(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>,    <span class="keyword">false</span>));
<a name="l00294"></a>00294     QColor inactiveTitleColor2(<a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w36">ColorTitleBlend</a>,  <span class="keyword">false</span>));
<a name="l00295"></a>00295 
<a name="l00296"></a>00296     <span class="comment">// Create titlebar gradient images if required</span>
<a name="l00297"></a>00297     <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a> = NULL;
<a name="l00298"></a>00298     <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a> = NULL;
<a name="l00299"></a>00299 
<a name="l00300"></a>00300     <span class="keywordflow">if</span>(highcolor)
<a name="l00301"></a>00301     {
<a name="l00302"></a>00302         <span class="comment">// Create the titlebar gradients</span>
<a name="l00303"></a>00303         <span class="keywordflow">if</span> (activeTitleColor1 != activeTitleColor2)
<a name="l00304"></a>00304         {
<a name="l00305"></a>00305             <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a> = <span class="keyword">new</span> KPixmap;
<a name="l00306"></a>00306             <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a>-&gt;resize(128, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>+2);
<a name="l00307"></a>00307             KPixmapEffect::gradient(*<a class="code" href="namespaceDefault.html#a21">aUpperGradient</a>,
<a name="l00308"></a>00308                 activeTitleColor1,
<a name="l00309"></a>00309                 activeTitleColor2,
<a name="l00310"></a>00310                 KPixmapEffect::VerticalGradient);
<a name="l00311"></a>00311         }
<a name="l00312"></a>00312 
<a name="l00313"></a>00313         <span class="keywordflow">if</span> (inactiveTitleColor1 != inactiveTitleColor2)
<a name="l00314"></a>00314         {
<a name="l00315"></a>00315             <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a> = <span class="keyword">new</span> KPixmap;
<a name="l00316"></a>00316             <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>-&gt;resize(128, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>+2);
<a name="l00317"></a>00317 
<a name="l00318"></a>00318             KPixmapEffect::gradient(*<a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>,
<a name="l00319"></a>00319                     inactiveTitleColor1,
<a name="l00320"></a>00320                     inactiveTitleColor2,
<a name="l00321"></a>00321             KPixmapEffect::VerticalGradient);
<a name="l00322"></a>00322         }
<a name="l00323"></a>00323     }
<a name="l00324"></a>00324 
<a name="l00325"></a>00325     <span class="comment">// Set the sticky pin pixmaps;</span>
<a name="l00326"></a>00326     QColorGroup g;
<a name="l00327"></a>00327     QPainter p;
<a name="l00328"></a>00328 
<a name="l00329"></a>00329     <span class="comment">// Active pins</span>
<a name="l00330"></a>00330     g = <a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>( <a class="code" href="classKDecorationDefines.html#w73w38">ColorButtonBg</a>, <span class="keyword">true</span> );
<a name="l00331"></a>00331     <a class="code" href="namespaceDefault.html#a24">pinUpPix</a>  = <span class="keyword">new</span> KPixmap();
<a name="l00332"></a>00332     <a class="code" href="namespaceDefault.html#a24">pinUpPix</a>-&gt;resize(16, 16);
<a name="l00333"></a>00333     p.begin( <a class="code" href="namespaceDefault.html#a24">pinUpPix</a> );
<a name="l00334"></a>00334     kColorBitmaps( &amp;p, g, 0, 0, 16, 16, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a15">pinup_white_bits</a>,
<a name="l00335"></a>00335         <a class="code" href="namespaceDefault.html#a16">pinup_gray_bits</a>, NULL, NULL, <a class="code" href="namespaceDefault.html#a17">pinup_dgray_bits</a>, NULL );
<a name="l00336"></a>00336     p.end();
<a name="l00337"></a>00337     <a class="code" href="namespaceDefault.html#a24">pinUpPix</a>-&gt;setMask( QBitmap(16, 16, <a class="code" href="namespaceDefault.html#a18">pinup_mask_bits</a>, <span class="keyword">true</span>) );
<a name="l00338"></a>00338 
<a name="l00339"></a>00339     <a class="code" href="namespaceDefault.html#a23">pinDownPix</a> = <span class="keyword">new</span> KPixmap();
<a name="l00340"></a>00340     <a class="code" href="namespaceDefault.html#a23">pinDownPix</a>-&gt;resize(16, 16);
<a name="l00341"></a>00341     p.begin( <a class="code" href="namespaceDefault.html#a23">pinDownPix</a> );
<a name="l00342"></a>00342     kColorBitmaps( &amp;p, g, 0, 0, 16, 16, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a11">pindown_white_bits</a>,
<a name="l00343"></a>00343         <a class="code" href="namespaceDefault.html#a12">pindown_gray_bits</a>, NULL, NULL, <a class="code" href="namespaceDefault.html#a13">pindown_dgray_bits</a>, NULL );
<a name="l00344"></a>00344     p.end();
<a name="l00345"></a>00345     <a class="code" href="namespaceDefault.html#a23">pinDownPix</a>-&gt;setMask( QBitmap(16, 16, <a class="code" href="namespaceDefault.html#a14">pindown_mask_bits</a>, <span class="keyword">true</span>) );
<a name="l00346"></a>00346 
<a name="l00347"></a>00347     <span class="comment">// Inactive pins</span>
<a name="l00348"></a>00348     g = <a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>( <a class="code" href="classKDecorationDefines.html#w73w38">ColorButtonBg</a>, <span class="keyword">false</span> );
<a name="l00349"></a>00349     <a class="code" href="namespaceDefault.html#a26">ipinUpPix</a> = <span class="keyword">new</span> KPixmap();
<a name="l00350"></a>00350     <a class="code" href="namespaceDefault.html#a26">ipinUpPix</a>-&gt;resize(16, 16);
<a name="l00351"></a>00351     p.begin( <a class="code" href="namespaceDefault.html#a26">ipinUpPix</a> );
<a name="l00352"></a>00352     kColorBitmaps( &amp;p, g, 0, 0, 16, 16, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a15">pinup_white_bits</a>,
<a name="l00353"></a>00353         <a class="code" href="namespaceDefault.html#a16">pinup_gray_bits</a>, NULL, NULL, <a class="code" href="namespaceDefault.html#a17">pinup_dgray_bits</a>, NULL );
<a name="l00354"></a>00354     p.end();
<a name="l00355"></a>00355     <a class="code" href="namespaceDefault.html#a26">ipinUpPix</a>-&gt;setMask( QBitmap(16, 16, <a class="code" href="namespaceDefault.html#a18">pinup_mask_bits</a>, <span class="keyword">true</span>) );
<a name="l00356"></a>00356 
<a name="l00357"></a>00357     <a class="code" href="namespaceDefault.html#a25">ipinDownPix</a> = <span class="keyword">new</span> KPixmap();
<a name="l00358"></a>00358     <a class="code" href="namespaceDefault.html#a25">ipinDownPix</a>-&gt;resize(16, 16);
<a name="l00359"></a>00359     p.begin( <a class="code" href="namespaceDefault.html#a25">ipinDownPix</a> );
<a name="l00360"></a>00360     kColorBitmaps( &amp;p, g, 0, 0, 16, 16, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a11">pindown_white_bits</a>,
<a name="l00361"></a>00361         <a class="code" href="namespaceDefault.html#a12">pindown_gray_bits</a>, NULL, NULL, <a class="code" href="namespaceDefault.html#a13">pindown_dgray_bits</a>, NULL );
<a name="l00362"></a>00362     p.end();
<a name="l00363"></a>00363     <a class="code" href="namespaceDefault.html#a25">ipinDownPix</a>-&gt;setMask( QBitmap(16, 16, <a class="code" href="namespaceDefault.html#a14">pindown_mask_bits</a>, <span class="keyword">true</span>) );
<a name="l00364"></a>00364 
<a name="l00365"></a>00365     <span class="comment">// Create a title buffer for flicker-free painting</span>
<a name="l00366"></a>00366     <a class="code" href="namespaceDefault.html#a20">titleBuffer</a> = <span class="keyword">new</span> KPixmap();
<a name="l00367"></a>00367 
<a name="l00368"></a>00368     <span class="comment">// Cache all possible button states</span>
<a name="l00369"></a>00369     <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">true</span>]  = <span class="keyword">new</span> KPixmap();
<a name="l00370"></a>00370     <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00371"></a>00371     <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">true</span>]    = <span class="keyword">new</span> KPixmap();
<a name="l00372"></a>00372     <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00373"></a>00373     <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">true</span>] = <span class="keyword">new</span> KPixmap();
<a name="l00374"></a>00374     <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00375"></a>00375     <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">true</span>]   = <span class="keyword">new</span> KPixmap();
<a name="l00376"></a>00376     <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00377"></a>00377 
<a name="l00378"></a>00378     <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">true</span>]     = <span class="keyword">new</span> KPixmap();
<a name="l00379"></a>00379     <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00380"></a>00380     <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">true</span>] = <span class="keyword">new</span> KPixmap();
<a name="l00381"></a>00381     <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00382"></a>00382     <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">true</span>]    = <span class="keyword">new</span> KPixmap();
<a name="l00383"></a>00383     <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00384"></a>00384     <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">true</span>] = <span class="keyword">new</span> KPixmap();
<a name="l00385"></a>00385     <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">true</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00386"></a>00386 
<a name="l00387"></a>00387     <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">false</span>]     = <span class="keyword">new</span> KPixmap();
<a name="l00388"></a>00388     <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00389"></a>00389     <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">false</span>]   = <span class="keyword">new</span> KPixmap();
<a name="l00390"></a>00390     <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00391"></a>00391     <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">false</span>]    = <span class="keyword">new</span> KPixmap();
<a name="l00392"></a>00392     <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00393"></a>00393     <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">false</span>]  = <span class="keyword">new</span> KPixmap();
<a name="l00394"></a>00394     <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>);
<a name="l00395"></a>00395 
<a name="l00396"></a>00396     <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">false</span>]    = <span class="keyword">new</span> KPixmap();
<a name="l00397"></a>00397     <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>);
<a name="l00398"></a>00398     <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">false</span>] = <span class="keyword">new</span> KPixmap();
<a name="l00399"></a>00399     <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>);
<a name="l00400"></a>00400     <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">false</span>]   = <span class="keyword">new</span> KPixmap();
<a name="l00401"></a>00401     <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>);
<a name="l00402"></a>00402     <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">false</span>] = <span class="keyword">new</span> KPixmap();
<a name="l00403"></a>00403     <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">false</span>]-&gt;resize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>);
<a name="l00404"></a>00404 
<a name="l00405"></a>00405     <span class="comment">// Draw the button state pixmaps</span>
<a name="l00406"></a>00406     g = <a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>( <a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <span class="keyword">true</span> );
<a name="l00407"></a>00407     drawButtonBackground( <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">true</span>], g, <span class="keyword">false</span> );
<a name="l00408"></a>00408     drawButtonBackground( <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">true</span>], g, <span class="keyword">true</span> );
<a name="l00409"></a>00409     drawButtonBackground( <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">false</span>], g, <span class="keyword">false</span> );
<a name="l00410"></a>00410     drawButtonBackground( <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">false</span>], g, <span class="keyword">true</span> );
<a name="l00411"></a>00411 
<a name="l00412"></a>00412     g = <a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>( <a class="code" href="classKDecorationDefines.html#w73w38">ColorButtonBg</a>, <span class="keyword">true</span> );
<a name="l00413"></a>00413     drawButtonBackground( <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">true</span>], g, <span class="keyword">false</span> );
<a name="l00414"></a>00414     drawButtonBackground( <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">true</span>], g, <span class="keyword">true</span> );
<a name="l00415"></a>00415     drawButtonBackground( <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">false</span>], g, <span class="keyword">false</span> );
<a name="l00416"></a>00416     drawButtonBackground( <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">false</span>], g, <span class="keyword">true</span> );
<a name="l00417"></a>00417 
<a name="l00418"></a>00418     g = <a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>( <a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <span class="keyword">false</span> );
<a name="l00419"></a>00419     drawButtonBackground( <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">true</span>], g, <span class="keyword">false</span> );
<a name="l00420"></a>00420     drawButtonBackground( <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">true</span>], g, <span class="keyword">true</span> );
<a name="l00421"></a>00421     drawButtonBackground( <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">false</span>], g, <span class="keyword">false</span> );
<a name="l00422"></a>00422     drawButtonBackground( <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">false</span>], g, <span class="keyword">true</span> );
<a name="l00423"></a>00423 
<a name="l00424"></a>00424     g = <a class="code" href="classKDecorationFactory.html#a7">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>( <a class="code" href="classKDecorationDefines.html#w73w38">ColorButtonBg</a>, <span class="keyword">false</span> );
<a name="l00425"></a>00425     drawButtonBackground( <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">true</span>], g, <span class="keyword">false</span> );
<a name="l00426"></a>00426     drawButtonBackground( <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">true</span>], g, <span class="keyword">true</span> );
<a name="l00427"></a>00427     drawButtonBackground( <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">false</span>], g, <span class="keyword">false</span> );
<a name="l00428"></a>00428     drawButtonBackground( <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">false</span>], g, <span class="keyword">true</span> );
<a name="l00429"></a>00429 }
<a name="l00430"></a>00430 
<a name="l00431"></a>00431 
<a name="l00432"></a>00432 <span class="keywordtype">void</span> KDEDefaultHandler::freePixmaps()
<a name="l00433"></a>00433 {
<a name="l00434"></a>00434     <span class="comment">// Free button pixmaps</span>
<a name="l00435"></a>00435     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">true</span>])
<a name="l00436"></a>00436         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">true</span>];
<a name="l00437"></a>00437     <span class="keywordflow">if</span>(<a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">true</span>])
<a name="l00438"></a>00438         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">true</span>];
<a name="l00439"></a>00439     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">true</span>])
<a name="l00440"></a>00440         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">true</span>];
<a name="l00441"></a>00441     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">true</span>])
<a name="l00442"></a>00442         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">true</span>];
<a name="l00443"></a>00443 
<a name="l00444"></a>00444     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">true</span>])
<a name="l00445"></a>00445         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">true</span>];
<a name="l00446"></a>00446     <span class="keywordflow">if</span>(<a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">true</span>])
<a name="l00447"></a>00447         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">true</span>];
<a name="l00448"></a>00448     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">true</span>])
<a name="l00449"></a>00449         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">true</span>];
<a name="l00450"></a>00450     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">true</span>])
<a name="l00451"></a>00451         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">true</span>];
<a name="l00452"></a>00452 
<a name="l00453"></a>00453     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">false</span>])
<a name="l00454"></a>00454         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<span class="keyword">false</span>];
<a name="l00455"></a>00455     <span class="keywordflow">if</span>(<a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">false</span>])
<a name="l00456"></a>00456         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<span class="keyword">false</span>];
<a name="l00457"></a>00457     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">false</span>])
<a name="l00458"></a>00458         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<span class="keyword">false</span>];
<a name="l00459"></a>00459     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">false</span>])
<a name="l00460"></a>00460         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<span class="keyword">false</span>];
<a name="l00461"></a>00461 
<a name="l00462"></a>00462     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">false</span>])
<a name="l00463"></a>00463         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<span class="keyword">false</span>];
<a name="l00464"></a>00464     <span class="keywordflow">if</span>(<a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">false</span>])
<a name="l00465"></a>00465         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<span class="keyword">false</span>];
<a name="l00466"></a>00466     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">false</span>])
<a name="l00467"></a>00467         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<span class="keyword">false</span>];
<a name="l00468"></a>00468     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">false</span>])
<a name="l00469"></a>00469         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<span class="keyword">false</span>];
<a name="l00470"></a>00470 
<a name="l00471"></a>00471     <span class="comment">// Title images</span>
<a name="l00472"></a>00472     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a20">titleBuffer</a>)
<a name="l00473"></a>00473         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a20">titleBuffer</a>;
<a name="l00474"></a>00474     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a19">titlePix</a>)
<a name="l00475"></a>00475         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a19">titlePix</a>;
<a name="l00476"></a>00476     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a21">aUpperGradient</a>)
<a name="l00477"></a>00477         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a>;
<a name="l00478"></a>00478     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>)
<a name="l00479"></a>00479         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>;
<a name="l00480"></a>00480 
<a name="l00481"></a>00481     <span class="comment">// Sticky pin images</span>
<a name="l00482"></a>00482     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a24">pinUpPix</a>)
<a name="l00483"></a>00483         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a24">pinUpPix</a>;
<a name="l00484"></a>00484     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a26">ipinUpPix</a>)
<a name="l00485"></a>00485         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a26">ipinUpPix</a>;
<a name="l00486"></a>00486     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a23">pinDownPix</a>)
<a name="l00487"></a>00487         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a23">pinDownPix</a>;
<a name="l00488"></a>00488     <span class="keywordflow">if</span> (<a class="code" href="namespaceDefault.html#a25">ipinDownPix</a>)
<a name="l00489"></a>00489         <span class="keyword">delete</span> <a class="code" href="namespaceDefault.html#a25">ipinDownPix</a>;
<a name="l00490"></a>00490 }
<a name="l00491"></a>00491 
<a name="l00492"></a>00492 
<a name="l00493"></a>00493 <span class="keywordtype">void</span> KDEDefaultHandler::drawButtonBackground(KPixmap *pix,
<a name="l00494"></a>00494         <span class="keyword">const</span> QColorGroup &amp;g, <span class="keywordtype">bool</span> sunken)
<a name="l00495"></a>00495 {
<a name="l00496"></a>00496     QPainter p;
<a name="l00497"></a>00497     <span class="keywordtype">int</span> w = pix-&gt;width();
<a name="l00498"></a>00498     <span class="keywordtype">int</span> h = pix-&gt;height();
<a name="l00499"></a>00499     <span class="keywordtype">int</span> x2 = w-1;
<a name="l00500"></a>00500     <span class="keywordtype">int</span> y2 = h-1;
<a name="l00501"></a>00501 
<a name="l00502"></a>00502     <span class="keywordtype">bool</span> highcolor = <a class="code" href="namespaceDefault.html#a41">useGradients</a> &amp;&amp; (QPixmap::defaultDepth() &gt; 8);
<a name="l00503"></a>00503     QColor c = g.background();
<a name="l00504"></a>00504 
<a name="l00505"></a>00505     <span class="comment">// Fill the background with a gradient if possible</span>
<a name="l00506"></a>00506     <span class="keywordflow">if</span> (highcolor)
<a name="l00507"></a>00507         KPixmapEffect::gradient(*pix, c.light(130), c.dark(130),
<a name="l00508"></a>00508                                 KPixmapEffect::VerticalGradient);
<a name="l00509"></a>00509     <span class="keywordflow">else</span>
<a name="l00510"></a>00510         pix-&gt;fill(c);
<a name="l00511"></a>00511 
<a name="l00512"></a>00512     p.begin(pix);
<a name="l00513"></a>00513     <span class="comment">// outer frame</span>
<a name="l00514"></a>00514     p.setPen(g.mid());
<a name="l00515"></a>00515     p.drawLine(0, 0, x2, 0);
<a name="l00516"></a>00516     p.drawLine(0, 0, 0, y2);
<a name="l00517"></a>00517     p.setPen(g.light());
<a name="l00518"></a>00518     p.drawLine(x2, 0, x2, y2);
<a name="l00519"></a>00519     p.drawLine(0, x2, y2, x2);
<a name="l00520"></a>00520     p.setPen(g.dark());
<a name="l00521"></a>00521     p.drawRect(1, 1, w-2, h-2);
<a name="l00522"></a>00522     p.setPen(sunken ? g.mid() : g.light());
<a name="l00523"></a>00523     p.drawLine(2, 2, x2-2, 2);
<a name="l00524"></a>00524     p.drawLine(2, 2, 2, y2-2);
<a name="l00525"></a>00525     p.setPen(sunken ? g.light() : g.mid());
<a name="l00526"></a>00526     p.drawLine(x2-2, 2, x2-2, y2-2);
<a name="l00527"></a>00527     p.drawLine(2, x2-2, y2-2, x2-2);
<a name="l00528"></a>00528 }
<a name="l00529"></a>00529 
<a name="l00530"></a><a class="code" href="classDefault_1_1KDEDefaultHandler.html#a4">00530</a> QValueList&lt; KDEDefaultHandler::BorderSize &gt; <a class="code" href="classDefault_1_1KDEDefaultHandler.html#a4">KDEDefaultHandler::borderSizes</a>()<span class="keyword"> const</span>
<a name="l00531"></a>00531 <span class="keyword"></span>{ <span class="comment">// the list must be sorted</span>
<a name="l00532"></a>00532   <span class="keywordflow">return</span> QValueList&lt; BorderSize &gt;() &lt;&lt; <a class="code" href="classKDecorationDefines.html#w75w49">BorderNormal</a> &lt;&lt; <a class="code" href="classKDecorationDefines.html#w75w50">BorderLarge</a> &lt;&lt;
<a name="l00533"></a>00533       <a class="code" href="classKDecorationDefines.html#w75w51">BorderVeryLarge</a> &lt;&lt;  <a class="code" href="classKDecorationDefines.html#w75w52">BorderHuge</a> &lt;&lt; <a class="code" href="classKDecorationDefines.html#w75w53">BorderVeryHuge</a> &lt;&lt; <a class="code" href="classKDecorationDefines.html#w75w54">BorderOversized</a>;
<a name="l00534"></a>00534 }
<a name="l00535"></a>00535 
<a name="l00536"></a><a class="code" href="classDefault_1_1KDEDefaultHandler.html#a5">00536</a> <span class="keywordtype">bool</span> <a class="code" href="classDefault_1_1KDEDefaultHandler.html#a5">KDEDefaultHandler::supports</a>( Ability ability )
<a name="l00537"></a>00537 {
<a name="l00538"></a>00538     <span class="keywordflow">switch</span>( ability )
<a name="l00539"></a>00539         {
<a name="l00540"></a>00540         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w56">AbilityAnnounceButtons</a>:
<a name="l00541"></a>00541         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w57">AbilityButtonMenu</a>:
<a name="l00542"></a>00542         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w58">AbilityButtonOnAllDesktops</a>:
<a name="l00543"></a>00543         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w59">AbilityButtonSpacer</a>:
<a name="l00544"></a>00544         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w60">AbilityButtonHelp</a>:
<a name="l00545"></a>00545         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w61">AbilityButtonMinimize</a>:
<a name="l00546"></a>00546         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w62">AbilityButtonMaximize</a>:
<a name="l00547"></a>00547         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w63">AbilityButtonClose</a>:
<a name="l00548"></a>00548         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w64">AbilityButtonAboveOthers</a>:
<a name="l00549"></a>00549         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w65">AbilityButtonBelowOthers</a>:
<a name="l00550"></a>00550         <span class="keywordflow">case</span> <a class="code" href="classKDecorationDefines.html#w76w66">AbilityButtonShade</a>:
<a name="l00551"></a>00551             <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00552"></a>00552         <span class="keywordflow">default</span>:
<a name="l00553"></a>00553             <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00554"></a>00554         };
<a name="l00555"></a>00555 }
<a name="l00556"></a>00556 
<a name="l00557"></a>00557 <span class="comment">// ===========================================================================</span>
<a name="l00558"></a>00558 
<a name="l00559"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#a0">00559</a> <a class="code" href="classDefault_1_1KDEDefaultButton.html#a0">KDEDefaultButton::KDEDefaultButton</a>(<a class="code" href="classDefault_1_1KDEDefaultClient.html">KDEDefaultClient</a> *parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,
<a name="l00560"></a>00560            <span class="keywordtype">bool</span> largeButton, <span class="keywordtype">bool</span> isLeftButton, <span class="keywordtype">bool</span> isStickyButton,
<a name="l00561"></a>00561            <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bitmap, <span class="keyword">const</span> QString&amp; tip, <span class="keyword">const</span> <span class="keywordtype">int</span> realizeBtns )
<a name="l00562"></a>00562     : QButton(parent-&gt;widget(), name)
<a name="l00563"></a>00563 {
<a name="l00564"></a>00564     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p6">realizeButtons</a> = realizeBtns;
<a name="l00565"></a>00565 
<a name="l00566"></a>00566     QToolTip::add( <span class="keyword">this</span>, tip );
<a name="l00567"></a>00567     setCursor( arrowCursor );
<a name="l00568"></a>00568     setBackgroundMode( QWidget::NoBackground );
<a name="l00569"></a>00569     setToggleButton( isStickyButton );
<a name="l00570"></a>00570 
<a name="l00571"></a>00571     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p4">isMouseOver</a> = <span class="keyword">false</span>;
<a name="l00572"></a>00572     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>        = NULL;
<a name="l00573"></a>00573     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>       = largeButton;
<a name="l00574"></a>00574     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p2">isLeft</a>      = isLeftButton;
<a name="l00575"></a>00575     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p3">isSticky</a>    = isStickyButton;
<a name="l00576"></a>00576     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>      = parent;
<a name="l00577"></a>00577 
<a name="l00578"></a>00578     <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>)
<a name="l00579"></a>00579        setFixedSize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, normalTitleHeight);
<a name="l00580"></a>00580     <span class="keywordflow">else</span>
<a name="l00581"></a>00581        setFixedSize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>);
<a name="l00582"></a>00582 
<a name="l00583"></a>00583     <span class="keywordflow">if</span> (bitmap)
<a name="l00584"></a>00584         <a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">setBitmap</a>(bitmap);
<a name="l00585"></a>00585 }
<a name="l00586"></a>00586 
<a name="l00587"></a>00587 
<a name="l00588"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#a1">00588</a> <a class="code" href="classDefault_1_1KDEDefaultButton.html#a1">KDEDefaultButton::~KDEDefaultButton</a>()
<a name="l00589"></a>00589 {
<a name="l00590"></a>00590     <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>)
<a name="l00591"></a>00591         <span class="keyword">delete</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>;
<a name="l00592"></a>00592 }
<a name="l00593"></a>00593 
<a name="l00594"></a>00594 
<a name="l00595"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#a4">00595</a> QSize <a class="code" href="classDefault_1_1KDEDefaultButton.html#a4">KDEDefaultButton::sizeHint</a>()<span class="keyword"> const</span>
<a name="l00596"></a>00596 <span class="keyword"></span>{
<a name="l00597"></a>00597    <span class="keywordflow">if</span> ( <a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a> )
<a name="l00598"></a>00598       <span class="keywordflow">return</span>( QSize(<a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>, normalTitleHeight) );
<a name="l00599"></a>00599    <span class="keywordflow">else</span>
<a name="l00600"></a>00600       <span class="keywordflow">return</span>( QSize(<a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>, <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>) );
<a name="l00601"></a>00601 }
<a name="l00602"></a>00602 
<a name="l00603"></a>00603 
<a name="l00604"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">00604</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">KDEDefaultButton::setBitmap</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bitmap)
<a name="l00605"></a>00605 {
<a name="l00606"></a>00606     <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>)
<a name="l00607"></a>00607         <span class="keyword">delete</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>;
<a name="l00608"></a>00608 
<a name="l00609"></a>00609     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a> = <span class="keyword">new</span> QBitmap(10, 10, bitmap, <span class="keyword">true</span>);
<a name="l00610"></a>00610     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>-&gt;setMask( *<a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a> );
<a name="l00611"></a>00611     repaint( <span class="keyword">false</span> );
<a name="l00612"></a>00612 }
<a name="l00613"></a>00613 
<a name="l00614"></a>00614 
<a name="l00615"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#b4">00615</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#b4">KDEDefaultButton::drawButton</a>(QPainter *p)
<a name="l00616"></a>00616 {
<a name="l00617"></a>00617     <span class="keywordflow">if</span> (!<a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a>)
<a name="l00618"></a>00618         <span class="keywordflow">return</span>;
<a name="l00619"></a>00619 
<a name="l00620"></a>00620     <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>) {
<a name="l00621"></a>00621         <span class="comment">// Fill the button background with an appropriate button image</span>
<a name="l00622"></a>00622         KPixmap btnbg;
<a name="l00623"></a>00623 
<a name="l00624"></a>00624         <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p2">isLeft</a>) {
<a name="l00625"></a>00625             <span class="keywordflow">if</span> (isDown())
<a name="l00626"></a>00626                 btnbg = <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>() ?
<a name="l00627"></a>00627                             *<a class="code" href="namespaceDefault.html#a32">leftBtnDownPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>] : *<a class="code" href="namespaceDefault.html#a34">ileftBtnDownPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>];
<a name="l00628"></a>00628             <span class="keywordflow">else</span>
<a name="l00629"></a>00629                 btnbg = <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>() ?
<a name="l00630"></a>00630                             *<a class="code" href="namespaceDefault.html#a31">leftBtnUpPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>] : *<a class="code" href="namespaceDefault.html#a33">ileftBtnUpPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>];
<a name="l00631"></a>00631         } <span class="keywordflow">else</span> {
<a name="l00632"></a>00632             <span class="keywordflow">if</span> (isDown())
<a name="l00633"></a>00633                 btnbg = <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>() ?
<a name="l00634"></a>00634                             *<a class="code" href="namespaceDefault.html#a28">rightBtnDownPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>] : *<a class="code" href="namespaceDefault.html#a30">irightBtnDownPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>];
<a name="l00635"></a>00635             <span class="keywordflow">else</span>
<a name="l00636"></a>00636                 btnbg = <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>() ?
<a name="l00637"></a>00637                             *<a class="code" href="namespaceDefault.html#a27">rightBtnUpPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>] : *<a class="code" href="namespaceDefault.html#a29">irightBtnUpPix</a>[<a class="code" href="classDefault_1_1KDEDefaultButton.html#p1">large</a>];
<a name="l00638"></a>00638         }
<a name="l00639"></a>00639 
<a name="l00640"></a>00640         p-&gt;drawPixmap( 0, 0, btnbg );
<a name="l00641"></a>00641 
<a name="l00642"></a>00642     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="classDefault_1_1KDEDefaultButton.html#p2">isLeft</a> ) {
<a name="l00643"></a>00643 
<a name="l00644"></a>00644         <span class="comment">// Fill the button background with an appropriate color/gradient</span>
<a name="l00645"></a>00645         <span class="comment">// This is for sticky and menu buttons</span>
<a name="l00646"></a>00646         KPixmap* grad = <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>() ? <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a> : <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>;
<a name="l00647"></a>00647         <span class="keywordflow">if</span> (!grad) {
<a name="l00648"></a>00648             QColor c = <a class="code" href="classKDecoration.html#e0">KDecoration::options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a2">color</a>(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>());
<a name="l00649"></a>00649             p-&gt;fillRect(0, 0, width(), height(), c );
<a name="l00650"></a>00650         } <span class="keywordflow">else</span>
<a name="l00651"></a>00651             p-&gt;drawPixmap( 0, 0, *grad, 0,1, width(), height() );
<a name="l00652"></a>00652 
<a name="l00653"></a>00653     } <span class="keywordflow">else</span> {
<a name="l00654"></a>00654         <span class="comment">// Draw a plain background for menus or sticky buttons on RHS</span>
<a name="l00655"></a>00655         QColor c = <a class="code" href="classKDecoration.html#e0">KDecoration::options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a2">color</a>(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>());
<a name="l00656"></a>00656         p-&gt;fillRect(0, 0, width(), height(), c);
<a name="l00657"></a>00657     }
<a name="l00658"></a>00658 
<a name="l00659"></a>00659 
<a name="l00660"></a>00660     <span class="comment">// If we have a decoration bitmap, then draw that</span>
<a name="l00661"></a>00661     <span class="comment">// otherwise we paint a menu button (with mini icon), or a sticky button.</span>
<a name="l00662"></a>00662     <span class="keywordflow">if</span>( <a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a> ) {
<a name="l00663"></a>00663         <span class="comment">// Select the appropriate button decoration color</span>
<a name="l00664"></a>00664         <span class="keywordtype">bool</span> darkDeco = qGray( <a class="code" href="classKDecoration.html#e0">KDecoration::options</a>()-&gt;color(
<a name="l00665"></a>00665                 <a class="code" href="classDefault_1_1KDEDefaultButton.html#p2">isLeft</a>? <a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a> : <a class="code" href="classKDecorationDefines.html#w73w38">ColorButtonBg</a>,
<a name="l00666"></a>00666                 <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>()).rgb() ) &gt; 127;
<a name="l00667"></a>00667 
<a name="l00668"></a>00668         <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p4">isMouseOver</a>)
<a name="l00669"></a>00669             p-&gt;setPen( darkDeco ? Qt::darkGray : Qt::lightGray );
<a name="l00670"></a>00670         <span class="keywordflow">else</span>
<a name="l00671"></a>00671             p-&gt;setPen( darkDeco ? Qt::black : Qt::white );
<a name="l00672"></a>00672 
<a name="l00673"></a>00673         <span class="keywordtype">int</span> xOff = (width()-10)/2;
<a name="l00674"></a>00674         <span class="keywordtype">int</span> yOff = (height()-10)/2;
<a name="l00675"></a>00675         p-&gt;drawPixmap(isDown() ? xOff+1: xOff, isDown() ? yOff+1 : yOff, *<a class="code" href="classDefault_1_1KDEDefaultButton.html#p0">deco</a>);
<a name="l00676"></a>00676 
<a name="l00677"></a>00677     } <span class="keywordflow">else</span> {
<a name="l00678"></a>00678         KPixmap btnpix;
<a name="l00679"></a>00679 
<a name="l00680"></a>00680         <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p3">isSticky</a>) {
<a name="l00681"></a>00681             <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a2">isActive</a>())
<a name="l00682"></a>00682                 btnpix = isOn() ? *<a class="code" href="namespaceDefault.html#a23">pinDownPix</a> : *<a class="code" href="namespaceDefault.html#a24">pinUpPix</a>;
<a name="l00683"></a>00683             <span class="keywordflow">else</span>
<a name="l00684"></a>00684                 btnpix = isOn() ? *<a class="code" href="namespaceDefault.html#a25">ipinDownPix</a> : *<a class="code" href="namespaceDefault.html#a26">ipinUpPix</a>;
<a name="l00685"></a>00685         } <span class="keywordflow">else</span>
<a name="l00686"></a>00686             btnpix = <a class="code" href="classDefault_1_1KDEDefaultButton.html#p5">client</a>-&gt;<a class="code" href="classKDecoration.html#a19">icon</a>().pixmap( QIconSet::Small, QIconSet::Normal );
<a name="l00687"></a>00687 
<a name="l00688"></a>00688         <span class="comment">// Intensify the image if required</span>
<a name="l00689"></a>00689         <span class="keywordflow">if</span> (<a class="code" href="classDefault_1_1KDEDefaultButton.html#p4">isMouseOver</a>) {
<a name="l00690"></a>00690                     btnpix = KPixmapEffect::intensity(btnpix, 0.8);
<a name="l00691"></a>00691         }
<a name="l00692"></a>00692 
<a name="l00693"></a>00693         <span class="comment">// Smooth scale the pixmap for small titlebars</span>
<a name="l00694"></a>00694         <span class="comment">// This is slow, but we assume this isn't done too often</span>
<a name="l00695"></a>00695         <span class="keywordflow">if</span> ( width() &lt; 16 ) {
<a name="l00696"></a>00696             btnpix.convertFromImage(btnpix.convertToImage().smoothScale(12, 12));
<a name="l00697"></a>00697             p-&gt;drawPixmap( 0, 0, btnpix );
<a name="l00698"></a>00698         }
<a name="l00699"></a>00699         <span class="keywordflow">else</span>
<a name="l00700"></a>00700             p-&gt;drawPixmap( width()/2-8, height()/2-8, btnpix );
<a name="l00701"></a>00701     }
<a name="l00702"></a>00702 }
<a name="l00703"></a>00703 
<a name="l00704"></a>00704 
<a name="l00705"></a>00705 <span class="comment">// Make the protected member public</span>
<a name="l00706"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#a2">00706</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#a2">KDEDefaultButton::turnOn</a>( <span class="keywordtype">bool</span> isOn )
<a name="l00707"></a>00707 {
<a name="l00708"></a>00708     <span class="keywordflow">if</span> ( isToggleButton() )
<a name="l00709"></a>00709         setOn( isOn );
<a name="l00710"></a>00710 }
<a name="l00711"></a>00711 
<a name="l00712"></a>00712 
<a name="l00713"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#b0">00713</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#b0">KDEDefaultButton::enterEvent</a>(QEvent *e)
<a name="l00714"></a>00714 {
<a name="l00715"></a>00715     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p4">isMouseOver</a>=<span class="keyword">true</span>;
<a name="l00716"></a>00716     repaint(<span class="keyword">false</span>);
<a name="l00717"></a>00717     QButton::enterEvent(e);
<a name="l00718"></a>00718 }
<a name="l00719"></a>00719 
<a name="l00720"></a>00720 
<a name="l00721"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#b1">00721</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#b1">KDEDefaultButton::leaveEvent</a>(QEvent *e)
<a name="l00722"></a>00722 {
<a name="l00723"></a>00723     <a class="code" href="classDefault_1_1KDEDefaultButton.html#p4">isMouseOver</a>=<span class="keyword">false</span>;
<a name="l00724"></a>00724     repaint(<span class="keyword">false</span>);
<a name="l00725"></a>00725     QButton::leaveEvent(e);
<a name="l00726"></a>00726 }
<a name="l00727"></a>00727 
<a name="l00728"></a>00728 
<a name="l00729"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#b2">00729</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#b2">KDEDefaultButton::mousePressEvent</a>( QMouseEvent* e )
<a name="l00730"></a>00730 {
<a name="l00731"></a>00731     <a class="code" href="classDefault_1_1KDEDefaultButton.html#o0">last_button</a> = e-&gt;button();
<a name="l00732"></a>00732     QMouseEvent me( e-&gt;type(), e-&gt;pos(), e-&gt;globalPos(),
<a name="l00733"></a>00733                     (e-&gt;button()&amp;<a class="code" href="classDefault_1_1KDEDefaultButton.html#p6">realizeButtons</a>)?LeftButton:NoButton, e-&gt;state() );
<a name="l00734"></a>00734     QButton::mousePressEvent( &amp;me );
<a name="l00735"></a>00735 }
<a name="l00736"></a>00736 
<a name="l00737"></a>00737 
<a name="l00738"></a><a class="code" href="classDefault_1_1KDEDefaultButton.html#b3">00738</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html#b3">KDEDefaultButton::mouseReleaseEvent</a>( QMouseEvent* e )
<a name="l00739"></a>00739 {
<a name="l00740"></a>00740     <a class="code" href="classDefault_1_1KDEDefaultButton.html#o0">last_button</a> = e-&gt;button();
<a name="l00741"></a>00741     QMouseEvent me( e-&gt;type(), e-&gt;pos(), e-&gt;globalPos(),
<a name="l00742"></a>00742                     (e-&gt;button()&amp;<a class="code" href="classDefault_1_1KDEDefaultButton.html#p6">realizeButtons</a>)?LeftButton:NoButton, e-&gt;state() );
<a name="l00743"></a>00743     QButton::mouseReleaseEvent( &amp;me );
<a name="l00744"></a>00744 }
<a name="l00745"></a>00745 
<a name="l00746"></a>00746 
<a name="l00747"></a>00747 <span class="comment">// ===========================================================================</span>
<a name="l00748"></a>00748 
<a name="l00749"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#a0">00749</a> <a class="code" href="classDefault_1_1KDEDefaultClient.html#a0">KDEDefaultClient::KDEDefaultClient</a>( KDecorationBridge* b, <a class="code" href="classKDecorationFactory.html">KDecorationFactory</a>* f )
<a name="l00750"></a>00750     : <a class="code" href="classKDecoration.html">KDecoration</a>( b, f ),
<a name="l00751"></a>00751       m_closing(false)
<a name="l00752"></a>00752 {
<a name="l00753"></a>00753 }
<a name="l00754"></a>00754 
<a name="l00755"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#a2">00755</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#a2">KDEDefaultClient::init</a>()
<a name="l00756"></a>00756 {
<a name="l00757"></a>00757     connect( <span class="keyword">this</span>, SIGNAL( <a class="code" href="classKDecoration.html#l0">keepAboveChanged</a>( <span class="keywordtype">bool</span> )), SLOT( <a class="code" href="classDefault_1_1KDEDefaultClient.html#j6">keepAboveChange</a>( <span class="keywordtype">bool</span> )));
<a name="l00758"></a>00758     connect( <span class="keyword">this</span>, SIGNAL( <a class="code" href="classKDecoration.html#l1">keepBelowChanged</a>( <span class="keywordtype">bool</span> )), SLOT( <a class="code" href="classDefault_1_1KDEDefaultClient.html#j7">keepBelowChange</a>( <span class="keywordtype">bool</span> )));
<a name="l00759"></a>00759 
<a name="l00760"></a>00760     <a class="code" href="classKDecoration.html#a51">createMainWidget</a>( WResizeNoErase | WStaticContents | WRepaintNoErase );
<a name="l00761"></a>00761     <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;installEventFilter( <span class="keyword">this</span> );
<a name="l00762"></a>00762 
<a name="l00763"></a>00763     <span class="comment">// No flicker thanks</span>
<a name="l00764"></a>00764     <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;setBackgroundMode( QWidget::NoBackground );
<a name="l00765"></a>00765 
<a name="l00766"></a>00766     <span class="comment">// Set button pointers to NULL so we can track things</span>
<a name="l00767"></a>00767     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i &lt; KDEDefaultClient::BtnCount; i++)
<a name="l00768"></a>00768         button[i] = NULL;
<a name="l00769"></a>00769 
<a name="l00770"></a>00770     <span class="comment">// Finally, toolWindows look small</span>
<a name="l00771"></a>00771     <span class="keywordflow">if</span> ( isTool() ) {
<a name="l00772"></a>00772         titleHeight  = <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>;
<a name="l00773"></a>00773         largeButtons = <span class="keyword">false</span>;
<a name="l00774"></a>00774     }
<a name="l00775"></a>00775     <span class="keywordflow">else</span> {
<a name="l00776"></a>00776         titleHeight  = <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a>;
<a name="l00777"></a>00777         largeButtons = <span class="keyword">true</span>;
<a name="l00778"></a>00778     }
<a name="l00779"></a>00779 
<a name="l00780"></a>00780     <span class="comment">// Pack the windowWrapper() window within a grid</span>
<a name="l00781"></a>00781     g = <span class="keyword">new</span> QGridLayout(<a class="code" href="classKDecoration.html#a55">widget</a>(), 0, 0, 0);
<a name="l00782"></a>00782     g-&gt;setResizeMode(QLayout::FreeResize);
<a name="l00783"></a>00783     g-&gt;addRowSpacing(0, 3);       <span class="comment">// Top grab bar</span>
<a name="l00784"></a>00784     g-&gt;addRowSpacing(2, 1);       <span class="comment">// line under titlebar</span>
<a name="l00785"></a>00785     <span class="keywordflow">if</span>( <a class="code" href="classKDecoration.html#a26">isPreview</a>())
<a name="l00786"></a>00786         g-&gt;addWidget( <span class="keyword">new</span> QLabel( i18n( <span class="stringliteral">"&lt;b&gt;&lt;center&gt;KDE2 preview&lt;/center&gt;&lt;/b&gt;"</span> ), <a class="code" href="classKDecoration.html#a55">widget</a>()), 3, 1);
<a name="l00787"></a>00787     <span class="keywordflow">else</span>
<a name="l00788"></a>00788         g-&gt;addItem( <span class="keyword">new</span> QSpacerItem( 0, 0 ), 3, 1); <span class="comment">// no widget in the middle</span>
<a name="l00789"></a>00789 
<a name="l00790"></a>00790     <span class="comment">// without the next line, unshade flickers</span>
<a name="l00791"></a>00791     g-&gt;addItem( <span class="keyword">new</span> QSpacerItem( 0, 0, QSizePolicy::Fixed,
<a name="l00792"></a>00792                                  QSizePolicy::Expanding ) );
<a name="l00793"></a>00793     g-&gt;setRowStretch(3, 10);      <span class="comment">// Wrapped window</span>
<a name="l00794"></a>00794 
<a name="l00795"></a>00795     <span class="comment">// Determine the size of the lower grab bar</span>
<a name="l00796"></a>00796     spacer = <span class="keyword">new</span> QSpacerItem(10,
<a name="l00797"></a>00797             mustDrawHandle() ? <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a> : <a class="code" href="namespaceDefault.html#a38">borderWidth</a>,
<a name="l00798"></a>00798             QSizePolicy::Expanding, QSizePolicy::Minimum);
<a name="l00799"></a>00799     g-&gt;addItem(spacer, 4, 1);
<a name="l00800"></a>00800 
<a name="l00801"></a>00801     g-&gt;addColSpacing(0, borderWidth);
<a name="l00802"></a>00802     g-&gt;addColSpacing(2, borderWidth);
<a name="l00803"></a>00803 
<a name="l00804"></a>00804     <span class="comment">// Pack the titlebar HBox with items</span>
<a name="l00805"></a>00805     hb = <span class="keyword">new</span> QBoxLayout(0, QBoxLayout::LeftToRight, 0, 0, 0 );
<a name="l00806"></a>00806     hb-&gt;setResizeMode( QLayout::FreeResize );
<a name="l00807"></a>00807     g-&gt;addLayout ( hb, 1, 1 );
<a name="l00808"></a>00808 
<a name="l00809"></a>00809     addClientButtons( <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;titleButtonsLeft() );
<a name="l00810"></a>00810     titlebar = <span class="keyword">new</span> QSpacerItem( 10, titleHeight, QSizePolicy::Expanding,
<a name="l00811"></a>00811                                 QSizePolicy::Minimum );
<a name="l00812"></a>00812     hb-&gt;addItem(titlebar);
<a name="l00813"></a>00813     hb-&gt;addSpacing(2);
<a name="l00814"></a>00814     addClientButtons( <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;titleButtonsRight(), <span class="keyword">false</span> );
<a name="l00815"></a>00815 }
<a name="l00816"></a>00816 
<a name="l00817"></a>00817 
<a name="l00818"></a>00818 <span class="keywordtype">void</span> KDEDefaultClient::addClientButtons( <span class="keyword">const</span> QString&amp; s, <span class="keywordtype">bool</span> isLeft )
<a name="l00819"></a>00819 {
<a name="l00820"></a>00820     <span class="keywordflow">if</span> (s.length() &gt; 0)
<a name="l00821"></a>00821         <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; s.length(); i++) {
<a name="l00822"></a>00822         <span class="keywordflow">switch</span>( s[i].latin1() )
<a name="l00823"></a>00823         {
<a name="l00824"></a>00824             <span class="comment">// Menu button</span>
<a name="l00825"></a>00825             <span class="keywordflow">case</span> <span class="charliteral">'M'</span>:
<a name="l00826"></a>00826                 <span class="keywordflow">if</span> (!button[BtnMenu])
<a name="l00827"></a>00827                 {
<a name="l00828"></a>00828                     button[BtnMenu] = <span class="keyword">new</span> <a class="code" href="classDefault_1_1KDEDefaultButton.html">KDEDefaultButton</a>(<span class="keyword">this</span>, <span class="stringliteral">"menu"</span>,
<a name="l00829"></a>00829                             largeButtons, isLeft, <span class="keyword">false</span>, NULL, i18n(<span class="stringliteral">"Menu"</span>), LeftButton|RightButton);
<a name="l00830"></a>00830                     connect( button[BtnMenu], SIGNAL(pressed()),
<a name="l00831"></a>00831                             <span class="keyword">this</span>, SLOT(<a class="code" href="classDefault_1_1KDEDefaultClient.html#j4">menuButtonPressed</a>()) );
<a name="l00832"></a>00832                     connect( button[BtnMenu], SIGNAL(released()),
<a name="l00833"></a>00833                              <span class="keyword">this</span>, SLOT(<a class="code" href="classDefault_1_1KDEDefaultClient.html#j5">menuButtonReleased</a>()));
<a name="l00834"></a>00834                     hb-&gt;addWidget( button[BtnMenu] );
<a name="l00835"></a>00835                 }
<a name="l00836"></a>00836                 <span class="keywordflow">break</span>;
<a name="l00837"></a>00837 
<a name="l00838"></a>00838             <span class="comment">// Sticky button</span>
<a name="l00839"></a>00839             <span class="keywordflow">case</span> <span class="charliteral">'S'</span>:
<a name="l00840"></a>00840                 <span class="keywordflow">if</span> (!button[BtnSticky])
<a name="l00841"></a>00841                 {
<a name="l00842"></a>00842                     button[BtnSticky] = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"sticky"</span>,
<a name="l00843"></a>00843                             largeButtons, isLeft, <span class="keyword">true</span>, NULL,
<a name="l00844"></a>00844                                                         <a class="code" href="classKDecoration.html#a9">isOnAllDesktops</a>()?i18n(<span class="stringliteral">"Not on all desktops"</span>):i18n(<span class="stringliteral">"On all desktops"</span>));
<a name="l00845"></a>00845                     button[BtnSticky]-&gt;turnOn( <a class="code" href="classKDecoration.html#a9">isOnAllDesktops</a>() );
<a name="l00846"></a>00846                     connect( button[BtnSticky], SIGNAL(clicked()),
<a name="l00847"></a>00847                             <span class="keyword">this</span>, SLOT(<a class="code" href="classKDecoration.html#i6">toggleOnAllDesktops</a>()) );
<a name="l00848"></a>00848                     hb-&gt;addWidget( button[BtnSticky] );
<a name="l00849"></a>00849                 }
<a name="l00850"></a>00850                 <span class="keywordflow">break</span>;
<a name="l00851"></a>00851 
<a name="l00852"></a>00852             <span class="comment">// Help button</span>
<a name="l00853"></a>00853             <span class="keywordflow">case</span> <span class="charliteral">'H'</span>:
<a name="l00854"></a>00854                 <span class="keywordflow">if</span>( <a class="code" href="classKDecoration.html#a7">providesContextHelp</a>() &amp;&amp; (!button[BtnHelp]) )
<a name="l00855"></a>00855                 {
<a name="l00856"></a>00856                     button[BtnHelp] = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"help"</span>,
<a name="l00857"></a>00857                             largeButtons, isLeft, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a4">question_bits</a>,
<a name="l00858"></a>00858                             i18n(<span class="stringliteral">"Help"</span>));
<a name="l00859"></a>00859                     connect( button[BtnHelp], SIGNAL( clicked() ),
<a name="l00860"></a>00860                             <span class="keyword">this</span>, SLOT( <a class="code" href="classKDecoration.html#i4">showContextHelp</a>() ));
<a name="l00861"></a>00861                     hb-&gt;addWidget( button[BtnHelp] );
<a name="l00862"></a>00862                 }
<a name="l00863"></a>00863                 <span class="keywordflow">break</span>;
<a name="l00864"></a>00864 
<a name="l00865"></a>00865             <span class="comment">// Minimize button</span>
<a name="l00866"></a>00866             <span class="keywordflow">case</span> <span class="charliteral">'I'</span>:
<a name="l00867"></a>00867                 <span class="keywordflow">if</span> ( (!button[BtnIconify]) &amp;&amp; <a class="code" href="classKDecoration.html#a6">isMinimizable</a>())
<a name="l00868"></a>00868                 {
<a name="l00869"></a>00869                     button[BtnIconify] = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"iconify"</span>,
<a name="l00870"></a>00870                             largeButtons, isLeft, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a0">iconify_bits</a>,
<a name="l00871"></a>00871                             i18n(<span class="stringliteral">"Minimize"</span>));
<a name="l00872"></a>00872                     connect( button[BtnIconify], SIGNAL( clicked()),
<a name="l00873"></a>00873                             <span class="keyword">this</span>, SLOT(<a class="code" href="classKDecoration.html#i3">minimize</a>()) );
<a name="l00874"></a>00874                     hb-&gt;addWidget( button[BtnIconify] );
<a name="l00875"></a>00875                 }
<a name="l00876"></a>00876                 <span class="keywordflow">break</span>;
<a name="l00877"></a>00877 
<a name="l00878"></a>00878             <span class="comment">// Maximize button</span>
<a name="l00879"></a>00879             <span class="keywordflow">case</span> <span class="charliteral">'A'</span>:
<a name="l00880"></a>00880                 <span class="keywordflow">if</span> ( (!button[BtnMax]) &amp;&amp; <a class="code" href="classKDecoration.html#a4">isMaximizable</a>())
<a name="l00881"></a>00881                 {
<a name="l00882"></a>00882                     button[BtnMax]  = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"maximize"</span>,
<a name="l00883"></a>00883                             largeButtons, isLeft, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a2">maximize_bits</a>,
<a name="l00884"></a>00884                             i18n(<span class="stringliteral">"Maximize"</span>), LeftButton|MidButton|RightButton);
<a name="l00885"></a>00885                     connect( button[BtnMax], SIGNAL( clicked()),
<a name="l00886"></a>00886                             <span class="keyword">this</span>, SLOT(<a class="code" href="classDefault_1_1KDEDefaultClient.html#j0">slotMaximize</a>()) );
<a name="l00887"></a>00887                     hb-&gt;addWidget( button[BtnMax] );
<a name="l00888"></a>00888                 }
<a name="l00889"></a>00889                 <span class="keywordflow">break</span>;
<a name="l00890"></a>00890 
<a name="l00891"></a>00891             <span class="comment">// Close button</span>
<a name="l00892"></a>00892             <span class="keywordflow">case</span> <span class="charliteral">'X'</span>:
<a name="l00893"></a>00893                 <span class="keywordflow">if</span> (!button[BtnClose] &amp;&amp; <a class="code" href="classKDecoration.html#a3">isCloseable</a>())
<a name="l00894"></a>00894                 {
<a name="l00895"></a>00895                     button[BtnClose] = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"close"</span>,
<a name="l00896"></a>00896                             largeButtons, isLeft, <span class="keyword">true</span>, <a class="code" href="namespaceDefault.html#a1">close_bits</a>,
<a name="l00897"></a>00897                             i18n(<span class="stringliteral">"Close"</span>));
<a name="l00898"></a>00898                     connect( button[BtnClose], SIGNAL( clicked()),
<a name="l00899"></a>00899                             <span class="keyword">this</span>, SLOT(<a class="code" href="classKDecoration.html#i0">closeWindow</a>()) );
<a name="l00900"></a>00900                     hb-&gt;addWidget( button[BtnClose] );
<a name="l00901"></a>00901                 }
<a name="l00902"></a>00902                 <span class="keywordflow">break</span>;
<a name="l00903"></a>00903 
<a name="l00904"></a>00904             <span class="comment">// Above button</span>
<a name="l00905"></a>00905             <span class="keywordflow">case</span> <span class="charliteral">'F'</span>:
<a name="l00906"></a>00906                 <span class="keywordflow">if</span> ( (!button[BtnAbove]))
<a name="l00907"></a>00907                 {
<a name="l00908"></a>00908                     button[BtnAbove]  = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"above"</span>,
<a name="l00909"></a>00909                             largeButtons, isLeft, <span class="keyword">true</span>,
<a name="l00910"></a>00910                                                         <a class="code" href="classKDecoration.html#a14">keepAbove</a>() ? <a class="code" href="namespaceDefault.html#a5">above_on_bits</a> : <a class="code" href="namespaceDefault.html#a6">above_off_bits</a>,
<a name="l00911"></a>00911                             i18n(<span class="stringliteral">"Keep Above Others"</span>));
<a name="l00912"></a>00912                     connect( button[BtnAbove], SIGNAL( clicked()),
<a name="l00913"></a>00913                             <span class="keyword">this</span>, SLOT(<a class="code" href="classDefault_1_1KDEDefaultClient.html#j1">slotAbove</a>()) );
<a name="l00914"></a>00914                     hb-&gt;addWidget( button[BtnAbove] );
<a name="l00915"></a>00915                 }
<a name="l00916"></a>00916                 <span class="keywordflow">break</span>;
<a name="l00917"></a>00917 
<a name="l00918"></a>00918             <span class="comment">// Below button</span>
<a name="l00919"></a>00919             <span class="keywordflow">case</span> <span class="charliteral">'B'</span>:
<a name="l00920"></a>00920                 <span class="keywordflow">if</span> ( (!button[BtnBelow]))
<a name="l00921"></a>00921                 {
<a name="l00922"></a>00922                     button[BtnBelow]  = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"below"</span>,
<a name="l00923"></a>00923                             largeButtons, isLeft, <span class="keyword">true</span>,
<a name="l00924"></a>00924                                                         <a class="code" href="classKDecoration.html#a15">keepBelow</a>() ? <a class="code" href="namespaceDefault.html#a7">below_on_bits</a> : <a class="code" href="namespaceDefault.html#a8">below_off_bits</a>,
<a name="l00925"></a>00925                             i18n(<span class="stringliteral">"Keep Below Others"</span>));
<a name="l00926"></a>00926                     connect( button[BtnBelow], SIGNAL( clicked()),
<a name="l00927"></a>00927                             <span class="keyword">this</span>, SLOT(<a class="code" href="classDefault_1_1KDEDefaultClient.html#j2">slotBelow</a>()) );
<a name="l00928"></a>00928                     hb-&gt;addWidget( button[BtnBelow] );
<a name="l00929"></a>00929                 }
<a name="l00930"></a>00930                 <span class="keywordflow">break</span>;
<a name="l00931"></a>00931 
<a name="l00932"></a>00932             <span class="comment">// Shade button</span>
<a name="l00933"></a>00933             <span class="keywordflow">case</span> <span class="charliteral">'L'</span>:
<a name="l00934"></a>00934                 <span class="keywordflow">if</span> ( (!button[BtnShade]) &amp;&amp; <a class="code" href="classKDecoration.html#a11">isShadeable</a>())
<a name="l00935"></a>00935                 {
<a name="l00936"></a>00936                     button[BtnShade]  = <span class="keyword">new</span> KDEDefaultButton(<span class="keyword">this</span>, <span class="stringliteral">"shade"</span>,
<a name="l00937"></a>00937                             largeButtons, isLeft, <span class="keyword">true</span>,
<a name="l00938"></a>00938                                                         <a class="code" href="classKDecoration.html#a13">isSetShade</a>() ? <a class="code" href="namespaceDefault.html#a9">shade_on_bits</a> : <a class="code" href="namespaceDefault.html#a10">shade_off_bits</a>,
<a name="l00939"></a>00939                             <a class="code" href="classKDecoration.html#a13">isSetShade</a>() ? i18n( <span class="stringliteral">"Unshade"</span> ) : i18n(<span class="stringliteral">"Shade"</span>));
<a name="l00940"></a>00940                     connect( button[BtnShade], SIGNAL( clicked()),
<a name="l00941"></a>00941                             <span class="keyword">this</span>, SLOT(<a class="code" href="classDefault_1_1KDEDefaultClient.html#j3">slotShade</a>()) );
<a name="l00942"></a>00942                     hb-&gt;addWidget( button[BtnShade] );
<a name="l00943"></a>00943                 }
<a name="l00944"></a>00944                 <span class="keywordflow">break</span>;
<a name="l00945"></a>00945 
<a name="l00946"></a>00946             <span class="comment">// Spacer item (only for non-tool windows)</span>
<a name="l00947"></a>00947             <span class="keywordflow">case</span> <span class="charliteral">'_'</span>:
<a name="l00948"></a>00948                 <span class="keywordflow">if</span> ( !isTool() )
<a name="l00949"></a>00949                     hb-&gt;addSpacing(<a class="code" href="namespaceDefault.html#a38">borderWidth</a>/2);
<a name="l00950"></a>00950         }
<a name="l00951"></a>00951     }
<a name="l00952"></a>00952 }
<a name="l00953"></a>00953 
<a name="l00954"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#a6">00954</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#a6">KDEDefaultClient::reset</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> )
<a name="l00955"></a>00955 {
<a name="l00956"></a>00956     <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;repaint();
<a name="l00957"></a>00957 }
<a name="l00958"></a>00958 
<a name="l00959"></a>00959 <span class="keywordtype">bool</span> KDEDefaultClient::mustDrawHandle()<span class="keyword"> const </span>
<a name="l00960"></a>00960 <span class="keyword"></span>{ 
<a name="l00961"></a>00961     <span class="keywordtype">bool</span> drawSmallBorders = !<a class="code" href="classKDecoration.html#e0">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a10">moveResizeMaximizedWindows</a>();
<a name="l00962"></a>00962     <span class="keywordflow">if</span> (drawSmallBorders &amp;&amp; (<a class="code" href="classKDecoration.html#a5">maximizeMode</a>() &amp; <a class="code" href="classKDecorationDefines.html#w71w10">MaximizeVertical</a>)) {
<a name="l00963"></a>00963         <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00964"></a>00964     } <span class="keywordflow">else</span> {
<a name="l00965"></a>00965         <span class="keywordflow">return</span> <a class="code" href="namespaceDefault.html#a42">showGrabBar</a> &amp;&amp; <a class="code" href="classKDecoration.html#a17">isResizable</a>();
<a name="l00966"></a>00966     }
<a name="l00967"></a>00967 }
<a name="l00968"></a>00968 
<a name="l00969"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b8">00969</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b8">KDEDefaultClient::iconChange</a>()
<a name="l00970"></a>00970 {
<a name="l00971"></a>00971     <span class="keywordflow">if</span> (button[BtnMenu] &amp;&amp; button[BtnMenu]-&gt;isVisible())
<a name="l00972"></a>00972         button[BtnMenu]-&gt;repaint(<span class="keyword">false</span>);
<a name="l00973"></a>00973 }
<a name="l00974"></a>00974 
<a name="l00975"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b9">00975</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b9">KDEDefaultClient::desktopChange</a>()
<a name="l00976"></a>00976 {
<a name="l00977"></a>00977     <span class="keywordflow">if</span> (button[BtnSticky]) {
<a name="l00978"></a>00978                 <span class="keywordtype">bool</span> on = <a class="code" href="classKDecoration.html#a9">isOnAllDesktops</a>();
<a name="l00979"></a>00979         button[BtnSticky]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a2">turnOn</a>(on);
<a name="l00980"></a>00980         button[BtnSticky]-&gt;repaint(<span class="keyword">false</span>);
<a name="l00981"></a>00981                 QToolTip::remove( button[BtnSticky] );
<a name="l00982"></a>00982         QToolTip::add( button[BtnSticky], on ? i18n(<span class="stringliteral">"Not on all desktops"</span>) : i18n(<span class="stringliteral">"On all desktops"</span>));
<a name="l00983"></a>00983     }
<a name="l00984"></a>00984 }
<a name="l00985"></a>00985 
<a name="l00986"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j6">00986</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j6">KDEDefaultClient::keepAboveChange</a>( <span class="keywordtype">bool</span> above )
<a name="l00987"></a>00987 {
<a name="l00988"></a>00988     <span class="keywordflow">if</span> (button[BtnAbove]) {
<a name="l00989"></a>00989         button[BtnAbove]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">setBitmap</a>( above ? <a class="code" href="namespaceDefault.html#a5">above_on_bits</a> : above_off_bits );
<a name="l00990"></a>00990         button[BtnAbove]-&gt;repaint(<span class="keyword">false</span>);
<a name="l00991"></a>00991     }
<a name="l00992"></a>00992 }
<a name="l00993"></a>00993 
<a name="l00994"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j7">00994</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j7">KDEDefaultClient::keepBelowChange</a>( <span class="keywordtype">bool</span> below )
<a name="l00995"></a>00995 {
<a name="l00996"></a>00996     <span class="keywordflow">if</span> (button[BtnBelow]) {
<a name="l00997"></a>00997         button[BtnBelow]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">setBitmap</a>( below ? <a class="code" href="namespaceDefault.html#a7">below_on_bits</a> : below_off_bits );
<a name="l00998"></a>00998         button[BtnBelow]-&gt;repaint(<span class="keyword">false</span>);
<a name="l00999"></a>00999     }
<a name="l01000"></a>01000 }
<a name="l01001"></a>01001 
<a name="l01002"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j0">01002</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j0">KDEDefaultClient::slotMaximize</a>()
<a name="l01003"></a>01003 {
<a name="l01004"></a>01004     <a class="code" href="classKDecoration.html#i1">maximize</a>( button[BtnMax]-&gt;last_button );
<a name="l01005"></a>01005 }
<a name="l01006"></a>01006 
<a name="l01007"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j1">01007</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j1">KDEDefaultClient::slotAbove</a>()
<a name="l01008"></a>01008 {
<a name="l01009"></a>01009     <a class="code" href="classKDecoration.html#i9">setKeepAbove</a>( !<a class="code" href="classKDecoration.html#a14">keepAbove</a>());
<a name="l01010"></a>01010     button[BtnAbove]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a2">turnOn</a>(<a class="code" href="classKDecoration.html#a14">keepAbove</a>());
<a name="l01011"></a>01011     button[BtnAbove]-&gt;repaint(<span class="keyword">true</span>);
<a name="l01012"></a>01012 }
<a name="l01013"></a>01013 
<a name="l01014"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j2">01014</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j2">KDEDefaultClient::slotBelow</a>()
<a name="l01015"></a>01015 {
<a name="l01016"></a>01016     <a class="code" href="classKDecoration.html#i10">setKeepBelow</a>( !<a class="code" href="classKDecoration.html#a15">keepBelow</a>());
<a name="l01017"></a>01017     button[BtnBelow]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a2">turnOn</a>(<a class="code" href="classKDecoration.html#a15">keepBelow</a>());
<a name="l01018"></a>01018     button[BtnBelow]-&gt;repaint(<span class="keyword">true</span>);
<a name="l01019"></a>01019 }
<a name="l01020"></a>01020 
<a name="l01021"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j3">01021</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j3">KDEDefaultClient::slotShade</a>()
<a name="l01022"></a>01022 {
<a name="l01023"></a>01023     <a class="code" href="classKDecoration.html#i8">setShade</a>( !<a class="code" href="classKDecoration.html#a13">isSetShade</a>());
<a name="l01024"></a>01024 }
<a name="l01025"></a>01025 
<a name="l01026"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b1">01026</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b1">KDEDefaultClient::resizeEvent</a>( QResizeEvent* e)
<a name="l01027"></a>01027 {
<a name="l01028"></a>01028     doShape();
<a name="l01029"></a>01029     calcHiddenButtons();
<a name="l01030"></a>01030 
<a name="l01031"></a>01031     <span class="keywordflow">if</span> ( <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;isShown())
<a name="l01032"></a>01032     {
<a name="l01033"></a>01033         <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;update( <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;rect());
<a name="l01034"></a>01034 <span class="preprocessor">#if 1 // what's the point of this, when paintEvent() repaints everything anyway?</span>
<a name="l01035"></a>01035 <span class="preprocessor"></span>        <span class="keywordtype">int</span> dx = 0;
<a name="l01036"></a>01036         <span class="keywordtype">int</span> dy = 0;
<a name="l01037"></a>01037 
<a name="l01038"></a>01038         <span class="keywordflow">if</span> ( e-&gt;oldSize().width() != <a class="code" href="classKDecoration.html#a32">width</a>() )
<a name="l01039"></a>01039            dx = 32 + QABS( e-&gt;oldSize().width() -  <a class="code" href="classKDecoration.html#a32">width</a>() );
<a name="l01040"></a>01040 
<a name="l01041"></a>01041         <span class="keywordflow">if</span> ( e-&gt;oldSize().height() != <a class="code" href="classKDecoration.html#a33">height</a>() )
<a name="l01042"></a>01042            dy = 8 + QABS( e-&gt;oldSize().height() -  <a class="code" href="classKDecoration.html#a33">height</a>() );
<a name="l01043"></a>01043 
<a name="l01044"></a>01044         <span class="keywordflow">if</span> ( dy )
<a name="l01045"></a>01045            <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;update( 0, <a class="code" href="classKDecoration.html#a33">height</a>() - dy + 1, <a class="code" href="classKDecoration.html#a32">width</a>(), dy );
<a name="l01046"></a>01046 
<a name="l01047"></a>01047         <span class="keywordflow">if</span> ( dx )
<a name="l01048"></a>01048         {
<a name="l01049"></a>01049            <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;update( <a class="code" href="classKDecoration.html#a32">width</a>() - dx + 1, 0, dx, <a class="code" href="classKDecoration.html#a33">height</a>() );
<a name="l01050"></a>01050            <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;update( QRect( QPoint(4,4), titlebar-&gt;geometry().bottomLeft() -
<a name="l01051"></a>01051                     QPoint(1,0) ) );
<a name="l01052"></a>01052            <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;update( QRect( titlebar-&gt;geometry().topRight(), QPoint(<a class="code" href="classKDecoration.html#a32">width</a>() - 4,
<a name="l01053"></a>01053                           titlebar-&gt;geometry().bottom()) ) );
<a name="l01054"></a>01054            <span class="comment">// Titlebar needs no paint event</span>
<a name="l01055"></a>01055            QApplication::postEvent( <a class="code" href="classKDecoration.html#a55">widget</a>(), <span class="keyword">new</span> QPaintEvent(titlebar-&gt;geometry(),
<a name="l01056"></a>01056                                      FALSE) );
<a name="l01057"></a>01057         }
<a name="l01058"></a>01058 <span class="preprocessor">#endif</span>
<a name="l01059"></a>01059 <span class="preprocessor"></span>    }
<a name="l01060"></a>01060 }
<a name="l01061"></a>01061 
<a name="l01062"></a>01062 
<a name="l01063"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b5">01063</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b5">KDEDefaultClient::captionChange</a>()
<a name="l01064"></a>01064 {
<a name="l01065"></a>01065     <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;repaint( titlebar-&gt;geometry(), false );
<a name="l01066"></a>01066 }
<a name="l01067"></a>01067 
<a name="l01068"></a>01068 
<a name="l01069"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b2">01069</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b2">KDEDefaultClient::paintEvent</a>( QPaintEvent* )
<a name="l01070"></a>01070 {
<a name="l01071"></a>01071     <span class="keywordflow">if</span> (!<a class="code" href="namespaceDefault.html#a40">KDEDefault_initialized</a>)
<a name="l01072"></a>01072         <span class="keywordflow">return</span>;
<a name="l01073"></a>01073 
<a name="l01074"></a>01074     QColorGroup g;
<a name="l01075"></a>01075     <span class="keywordtype">int</span> offset;
<a name="l01076"></a>01076 
<a name="l01077"></a>01077     KPixmap* upperGradient = <a class="code" href="classKDecoration.html#a2">isActive</a>() ? <a class="code" href="namespaceDefault.html#a21">aUpperGradient</a> : <a class="code" href="namespaceDefault.html#a22">iUpperGradient</a>;
<a name="l01078"></a>01078 
<a name="l01079"></a>01079     QPainter p(<a class="code" href="classKDecoration.html#a55">widget</a>());
<a name="l01080"></a>01080 
<a name="l01081"></a>01081     <span class="comment">// Obtain widget bounds.</span>
<a name="l01082"></a>01082     QRect r(<a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;rect());
<a name="l01083"></a>01083     <span class="keywordtype">int</span> x = r.x();
<a name="l01084"></a>01084     <span class="keywordtype">int</span> y = r.y();
<a name="l01085"></a>01085     <span class="keywordtype">int</span> x2 = r.width() - 1;
<a name="l01086"></a>01086     <span class="keywordtype">int</span> y2 = r.height() - 1;
<a name="l01087"></a>01087     <span class="keywordtype">int</span> w  = r.width();
<a name="l01088"></a>01088     <span class="keywordtype">int</span> h  = r.height();
<a name="l01089"></a>01089 
<a name="l01090"></a>01090     <span class="comment">// Determine where to place the extended left titlebar</span>
<a name="l01091"></a>01091     <span class="keywordtype">int</span> leftFrameStart = (h &gt; 42) ? y+titleHeight+26: y+titleHeight;
<a name="l01092"></a>01092 
<a name="l01093"></a>01093     <span class="comment">// Determine where to make the titlebar color transition</span>
<a name="l01094"></a>01094     r = titlebar-&gt;geometry();
<a name="l01095"></a>01095     <span class="keywordtype">int</span> rightOffset = r.x()+r.width()+1;
<a name="l01096"></a>01096 
<a name="l01097"></a>01097     <span class="comment">// Create a disposable pixmap buffer for the titlebar</span>
<a name="l01098"></a>01098     <span class="comment">// very early before drawing begins so there is no lag</span>
<a name="l01099"></a>01099     <span class="comment">// during painting pixels.</span>
<a name="l01100"></a>01100     <a class="code" href="namespaceDefault.html#a20">titleBuffer</a>-&gt;resize( rightOffset-3, titleHeight+1 );
<a name="l01101"></a>01101 
<a name="l01102"></a>01102     <span class="comment">// Draw an outer black frame</span>
<a name="l01103"></a>01103     p.setPen(Qt::black);
<a name="l01104"></a>01104     p.drawRect(x,y,w,h);
<a name="l01105"></a>01105 
<a name="l01106"></a>01106     <span class="comment">// Draw part of the frame that is the titlebar color</span>
<a name="l01107"></a>01107     g = <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>());
<a name="l01108"></a>01108     p.setPen(g.light());
<a name="l01109"></a>01109     p.drawLine(x+1, y+1, rightOffset-1, y+1);
<a name="l01110"></a>01110     p.drawLine(x+1, y+1, x+1, leftFrameStart+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-4);
<a name="l01111"></a>01111 
<a name="l01112"></a>01112     <span class="comment">// Draw titlebar colour separator line</span>
<a name="l01113"></a>01113     p.setPen(g.dark());
<a name="l01114"></a>01114     p.drawLine(rightOffset-1, y+1, rightOffset-1, titleHeight+2);
<a name="l01115"></a>01115 
<a name="l01116"></a>01116     p.fillRect(x+2, y+titleHeight+3,
<a name="l01117"></a>01117                <a class="code" href="namespaceDefault.html#a38">borderWidth</a>-4, leftFrameStart+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-y-titleHeight-8,
<a name="l01118"></a>01118                <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>() ));
<a name="l01119"></a>01119 
<a name="l01120"></a>01120     <span class="comment">// Finish drawing the titlebar extension</span>
<a name="l01121"></a>01121     p.setPen(Qt::black);
<a name="l01122"></a>01122     p.drawLine(x+1, leftFrameStart+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-4, x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-2, leftFrameStart-1);
<a name="l01123"></a>01123     p.setPen(g.mid());
<a name="l01124"></a>01124     p.drawLine(x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-2, y+titleHeight+3, x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-2, leftFrameStart-2);
<a name="l01125"></a>01125 
<a name="l01126"></a>01126     <span class="comment">// Fill out the border edges</span>
<a name="l01127"></a>01127     g = <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a3">colorGroup</a>(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>());
<a name="l01128"></a>01128     p.setPen(g.light());
<a name="l01129"></a>01129     p.drawLine(rightOffset, y+1, x2-1, y+1);
<a name="l01130"></a>01130     p.drawLine(x+1, leftFrameStart+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-3, x+1, y2-1);
<a name="l01131"></a>01131     p.setPen(g.dark());
<a name="l01132"></a>01132     p.drawLine(x2-1, y+1, x2-1, y2-1);
<a name="l01133"></a>01133     p.drawLine(x+1, y2-1, x2-1, y2-1);
<a name="l01134"></a>01134 
<a name="l01135"></a>01135     p.setPen(<a class="code" href="classKDecoration.html#e0">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>()));
<a name="l01136"></a>01136     QPointArray a;
<a name="l01137"></a>01137     QBrush brush( <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>()), Qt::SolidPattern );
<a name="l01138"></a>01138     p.setBrush( brush );                       <span class="comment">// use solid, yellow brush</span>
<a name="l01139"></a>01139     a.setPoints( 4, x+2,             leftFrameStart+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-4,
<a name="l01140"></a>01140                     x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-2, leftFrameStart,
<a name="l01141"></a>01141                     x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-2, y2-2,
<a name="l01142"></a>01142                     x+2,             y2-2);
<a name="l01143"></a>01143     p.drawPolygon( a );
<a name="l01144"></a>01144     p.fillRect(x2-<a class="code" href="namespaceDefault.html#a38">borderWidth</a>+2, y+titleHeight+3,
<a name="l01145"></a>01145                <a class="code" href="namespaceDefault.html#a38">borderWidth</a>-3, y2-y-titleHeight-4,
<a name="l01146"></a>01146                <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>() ));
<a name="l01147"></a>01147 
<a name="l01148"></a>01148     <span class="comment">// Draw the bottom handle if required</span>
<a name="l01149"></a>01149     <span class="keywordflow">if</span> (mustDrawHandle())
<a name="l01150"></a>01150     {
<a name="l01151"></a>01151         <span class="keywordflow">if</span>(w &gt; 50)
<a name="l01152"></a>01152         {
<a name="l01153"></a>01153             qDrawShadePanel(&amp;p, x+1, y2-<a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>+2, 2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>+12, <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>-2,
<a name="l01154"></a>01154                             g, <span class="keyword">false</span>, 1, &amp;g.brush(QColorGroup::Mid));
<a name="l01155"></a>01155             qDrawShadePanel(&amp;p, x+2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>+13, y2-<a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>+2, w-4*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-26, <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>-2,
<a name="l01156"></a>01156                             g, <span class="keyword">false</span>, 1, <a class="code" href="classKDecoration.html#a2">isActive</a>() ?
<a name="l01157"></a>01157                             &amp;g.brush(QColorGroup::Background) :
<a name="l01158"></a>01158                             &amp;g.brush(QColorGroup::Mid));
<a name="l01159"></a>01159             qDrawShadePanel(&amp;p, x2-2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-12, y2-<a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>+2, 2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>+12, <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>-2,
<a name="l01160"></a>01160                             g, <span class="keyword">false</span>, 1, &amp;g.brush(QColorGroup::Mid));
<a name="l01161"></a>01161         } <span class="keywordflow">else</span>
<a name="l01162"></a>01162             qDrawShadePanel(&amp;p, x+1, y2-<a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>+2, w-2, <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>-2,
<a name="l01163"></a>01163                             g, <span class="keyword">false</span>, 1, <a class="code" href="classKDecoration.html#a2">isActive</a>() ?
<a name="l01164"></a>01164                             &amp;g.brush(QColorGroup::Background) :
<a name="l01165"></a>01165                             &amp;g.brush(QColorGroup::Mid));
<a name="l01166"></a>01166         offset = <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>;
<a name="l01167"></a>01167     } <span class="keywordflow">else</span>
<a name="l01168"></a>01168         {
<a name="l01169"></a>01169             p.fillRect(x+2, y2-<a class="code" href="namespaceDefault.html#a38">borderWidth</a>+2, w-4, <a class="code" href="namespaceDefault.html#a38">borderWidth</a>-3,
<a name="l01170"></a>01170                        <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>() ));
<a name="l01171"></a>01171             offset = <a class="code" href="namespaceDefault.html#a38">borderWidth</a>;
<a name="l01172"></a>01172         }
<a name="l01173"></a>01173 
<a name="l01174"></a>01174     <span class="comment">// Draw a frame around the wrapped widget.</span>
<a name="l01175"></a>01175     p.setPen( g.dark() );
<a name="l01176"></a>01176     p.drawRect( x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>-1, y+titleHeight+3, w-2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>+2, h-titleHeight-offset-2 );
<a name="l01177"></a>01177 
<a name="l01178"></a>01178     <span class="comment">// Draw the title bar.</span>
<a name="l01179"></a>01179     r = titlebar-&gt;geometry();
<a name="l01180"></a>01180 
<a name="l01181"></a>01181     <span class="comment">// Obtain titlebar blend colours</span>
<a name="l01182"></a>01182     QColor c1 = <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a2">color</a>(<a class="code" href="classKDecorationDefines.html#w73w35">ColorTitleBar</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>() );
<a name="l01183"></a>01183     QColor c2 = <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a2">color</a>(<a class="code" href="classKDecorationDefines.html#w73w39">ColorFrame</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>() );
<a name="l01184"></a>01184 
<a name="l01185"></a>01185     <span class="comment">// Fill with frame color behind RHS buttons</span>
<a name="l01186"></a>01186     p.fillRect( rightOffset, y+2, x2-rightOffset-1, titleHeight+1, c2);
<a name="l01187"></a>01187 
<a name="l01188"></a>01188     QPainter p2( <a class="code" href="namespaceDefault.html#a20">titleBuffer</a>, <span class="keyword">this</span> );
<a name="l01189"></a>01189 
<a name="l01190"></a>01190     <span class="comment">// Draw the titlebar gradient</span>
<a name="l01191"></a>01191     <span class="keywordflow">if</span> (upperGradient)
<a name="l01192"></a>01192         p2.drawTiledPixmap(0, 0, rightOffset-3, titleHeight+1, *upperGradient);
<a name="l01193"></a>01193     <span class="keywordflow">else</span>
<a name="l01194"></a>01194         p2.fillRect(0, 0, rightOffset-3, titleHeight+1, c1);
<a name="l01195"></a>01195 
<a name="l01196"></a>01196     <span class="comment">// Draw the title text on the pixmap, and with a smaller font</span>
<a name="l01197"></a>01197     <span class="comment">// for toolwindows than the default.</span>
<a name="l01198"></a>01198     QFont fnt = <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;<a class="code" href="classKDecorationOptions.html#a4">font</a>(<span class="keyword">true</span>);
<a name="l01199"></a>01199 
<a name="l01200"></a>01200     <span class="keywordflow">if</span> ( isTool() )
<a name="l01201"></a>01201        fnt.setPointSize( fnt.pointSize()-2 );  <span class="comment">// Shrink font by 2pt</span>
<a name="l01202"></a>01202 
<a name="l01203"></a>01203     p2.setFont( fnt );
<a name="l01204"></a>01204 
<a name="l01205"></a>01205     <span class="comment">// Draw the titlebar stipple if active and available</span>
<a name="l01206"></a>01206     <span class="keywordflow">if</span> (<a class="code" href="classKDecoration.html#a2">isActive</a>() &amp;&amp; <a class="code" href="namespaceDefault.html#a19">titlePix</a>)
<a name="l01207"></a>01207     {
<a name="l01208"></a>01208         QFontMetrics fm(fnt);
<a name="l01209"></a>01209         <span class="keywordtype">int</span> captionWidth = fm.width(<a class="code" href="classKDecoration.html#a20">caption</a>());
<a name="l01210"></a>01210         <span class="keywordflow">if</span> (<a class="code" href="classKDecoration.html#a20">caption</a>().isRightToLeft())
<a name="l01211"></a>01211             p2.drawTiledPixmap( r.x(), 0, r.width()-captionWidth-4,
<a name="l01212"></a>01212                                 titleHeight+1, *<a class="code" href="namespaceDefault.html#a19">titlePix</a> );
<a name="l01213"></a>01213         <span class="keywordflow">else</span>
<a name="l01214"></a>01214             p2.drawTiledPixmap( r.x()+captionWidth+3, 0, r.width()-captionWidth-4,
<a name="l01215"></a>01215                                 titleHeight+1, *<a class="code" href="namespaceDefault.html#a19">titlePix</a> );
<a name="l01216"></a>01216     }
<a name="l01217"></a>01217 
<a name="l01218"></a>01218     p2.setPen( <a class="code" href="classKDecoration.html#e0">options</a>()-&gt;color(<a class="code" href="classKDecorationDefines.html#w73w37">ColorFont</a>, <a class="code" href="classKDecoration.html#a2">isActive</a>()) );
<a name="l01219"></a>01219     p2.drawText(r.x(), 1, r.width()-1, r.height(),
<a name="l01220"></a>01220         (<a class="code" href="classKDecoration.html#a20">caption</a>().isRightToLeft() ? AlignRight : AlignLeft) | AlignVCenter,
<a name="l01221"></a>01221         <a class="code" href="classKDecoration.html#a20">caption</a>() );
<a name="l01222"></a>01222 
<a name="l01223"></a>01223     bitBlt( <a class="code" href="classKDecoration.html#a55">widget</a>(), 2, 2, <a class="code" href="namespaceDefault.html#a20">titleBuffer</a> );
<a name="l01224"></a>01224 
<a name="l01225"></a>01225     p2.end();
<a name="l01226"></a>01226 
<a name="l01227"></a>01227     <span class="comment">// Ensure a shaded window has no unpainted areas</span>
<a name="l01228"></a>01228     <span class="comment">// Is this still needed?</span>
<a name="l01229"></a>01229 <span class="preprocessor">#if 1</span>
<a name="l01230"></a>01230 <span class="preprocessor"></span>    p.setPen(c2);
<a name="l01231"></a>01231     p.drawLine(x+<a class="code" href="namespaceDefault.html#a38">borderWidth</a>, y+titleHeight+4, x2-<a class="code" href="namespaceDefault.html#a38">borderWidth</a>, y+titleHeight+4);
<a name="l01232"></a>01232 <span class="preprocessor">#endif</span>
<a name="l01233"></a>01233 <span class="preprocessor"></span>}
<a name="l01234"></a>01234 
<a name="l01235"></a>01235 
<a name="l01236"></a>01236 <span class="keywordtype">void</span> KDEDefaultClient::doShape()
<a name="l01237"></a>01237 {
<a name="l01238"></a>01238     QRegion mask(QRect(0, 0, <a class="code" href="classKDecoration.html#a32">width</a>(), <a class="code" href="classKDecoration.html#a33">height</a>()));
<a name="l01239"></a>01239     mask -= QRect(0, 0, 1, 1);
<a name="l01240"></a>01240     mask -= QRect(<a class="code" href="classKDecoration.html#a32">width</a>()-1, 0, 1, 1);
<a name="l01241"></a>01241     mask -= QRect(0, <a class="code" href="classKDecoration.html#a33">height</a>()-1, 1, 1);
<a name="l01242"></a>01242     mask -= QRect(<a class="code" href="classKDecoration.html#a32">width</a>()-1, <a class="code" href="classKDecoration.html#a33">height</a>()-1, 1, 1);
<a name="l01243"></a>01243     <a class="code" href="classKDecoration.html#a24">setMask</a>(mask);
<a name="l01244"></a>01244 }
<a name="l01245"></a>01245 
<a name="l01246"></a>01246 
<a name="l01247"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b3">01247</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b3">KDEDefaultClient::showEvent</a>(QShowEvent *)
<a name="l01248"></a>01248 {
<a name="l01249"></a>01249     calcHiddenButtons();
<a name="l01250"></a>01250     doShape();
<a name="l01251"></a>01251 }
<a name="l01252"></a>01252 
<a name="l01253"></a>01253 
<a name="l01254"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b4">01254</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b4">KDEDefaultClient::mouseDoubleClickEvent</a>( QMouseEvent * e )
<a name="l01255"></a>01255 {
<a name="l01256"></a>01256     <span class="keywordflow">if</span> (e-&gt;button() == LeftButton &amp;&amp; titlebar-&gt;geometry().contains( e-&gt;pos() ) )
<a name="l01257"></a>01257                 <a class="code" href="classKDecoration.html#i7">titlebarDblClickOperation</a>();
<a name="l01258"></a>01258 }
<a name="l01259"></a>01259 
<a name="l01260"></a>01260 
<a name="l01261"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b6">01261</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b6">KDEDefaultClient::maximizeChange</a>()
<a name="l01262"></a>01262 {
<a name="l01263"></a>01263     <span class="keywordflow">if</span> (button[BtnMax]) {
<a name="l01264"></a>01264                 <span class="keywordtype">bool</span> m = <a class="code" href="classKDecoration.html#a5">maximizeMode</a>() == <a class="code" href="classKDecorationDefines.html#w71w12">MaximizeFull</a>;
<a name="l01265"></a>01265         button[BtnMax]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">setBitmap</a>(m ? <a class="code" href="namespaceDefault.html#a3">minmax_bits</a> : <a class="code" href="namespaceDefault.html#a2">maximize_bits</a>);
<a name="l01266"></a>01266                 QToolTip::remove( button[ BtnMax ] );
<a name="l01267"></a>01267                 QToolTip::add( button[BtnMax], m ? i18n(<span class="stringliteral">"Restore"</span>) : i18n(<span class="stringliteral">"Maximize"</span>));
<a name="l01268"></a>01268     }
<a name="l01269"></a>01269     spacer-&gt;changeSize(10, mustDrawHandle() ? 8 : 4,
<a name="l01270"></a>01270             QSizePolicy::Expanding, QSizePolicy::Minimum);
<a name="l01271"></a>01271     g-&gt;activate();
<a name="l01272"></a>01272 }
<a name="l01273"></a>01273 
<a name="l01274"></a>01274 
<a name="l01275"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b7">01275</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b7">KDEDefaultClient::activeChange</a>()
<a name="l01276"></a>01276 {
<a name="l01277"></a>01277     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=KDEDefaultClient::BtnHelp; i &lt; KDEDefaultClient::BtnCount; i++)
<a name="l01278"></a>01278         <span class="keywordflow">if</span>(button[i])
<a name="l01279"></a>01279             button[i]-&gt;repaint(<span class="keyword">false</span>);
<a name="l01280"></a>01280     <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;repaint(<span class="keyword">false</span>);
<a name="l01281"></a>01281 }
<a name="l01282"></a>01282 
<a name="l01283"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b10">01283</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b10">KDEDefaultClient::shadeChange</a>()
<a name="l01284"></a>01284 {
<a name="l01285"></a>01285     <span class="keywordflow">if</span> (button[BtnShade]) {
<a name="l01286"></a>01286         <span class="keywordtype">bool</span> on = <a class="code" href="classKDecoration.html#a13">isSetShade</a>();
<a name="l01287"></a>01287         button[BtnShade]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a3">setBitmap</a>( on ? <a class="code" href="namespaceDefault.html#a9">shade_on_bits</a> : shade_off_bits );
<a name="l01288"></a>01288         button[BtnShade]-&gt;<a class="code" href="classDefault_1_1KDEDefaultButton.html#a2">turnOn</a>(on);
<a name="l01289"></a>01289         button[BtnShade]-&gt;repaint(<span class="keyword">false</span>);
<a name="l01290"></a>01290                 QToolTip::remove( button[BtnShade] );
<a name="l01291"></a>01291         QToolTip::add( button[BtnShade], on ? i18n(<span class="stringliteral">"Unshade"</span>) : i18n(<span class="stringliteral">"Shade"</span>));
<a name="l01292"></a>01292     }
<a name="l01293"></a>01293 }
<a name="l01294"></a>01294 
<a name="l01295"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#a5">01295</a> QSize <a class="code" href="classDefault_1_1KDEDefaultClient.html#a5">KDEDefaultClient::minimumSize</a>()<span class="keyword"> const</span>
<a name="l01296"></a>01296 <span class="keyword"></span>{
<a name="l01297"></a>01297     <span class="keywordflow">return</span> QSize( 100, 50 ); <span class="comment">// FRAME</span>
<a name="l01298"></a>01298 }
<a name="l01299"></a>01299 
<a name="l01300"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#a4">01300</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#a4">KDEDefaultClient::resize</a>( <span class="keyword">const</span> QSize&amp; s )
<a name="l01301"></a>01301 {
<a name="l01302"></a>01302     <a class="code" href="classKDecoration.html#a55">widget</a>()-&gt;resize( s );
<a name="l01303"></a>01303 }
<a name="l01304"></a>01304 
<a name="l01305"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#a3">01305</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#a3">KDEDefaultClient::borders</a>( <span class="keywordtype">int</span>&amp; left, <span class="keywordtype">int</span>&amp; right, <span class="keywordtype">int</span>&amp; top, <span class="keywordtype">int</span>&amp; bottom )<span class="keyword"> const</span>
<a name="l01306"></a>01306 <span class="keyword"></span>{ <span class="comment">// FRAME</span>
<a name="l01307"></a>01307     left = right = <a class="code" href="namespaceDefault.html#a38">borderWidth</a>;
<a name="l01308"></a>01308 <span class="comment">//    , y+titleHeight+3, w-6, h-titleHeight-offset-6 );</span>
<a name="l01309"></a>01309     top = titleHeight + 4;
<a name="l01310"></a>01310     bottom = mustDrawHandle() ? <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a> : <a class="code" href="namespaceDefault.html#a38">borderWidth</a>;
<a name="l01311"></a>01311 }
<a name="l01312"></a>01312 
<a name="l01313"></a>01313 <span class="comment">// The hiding button while shrinking, show button while expanding magic</span>
<a name="l01314"></a>01314 <span class="keywordtype">void</span> KDEDefaultClient::calcHiddenButtons()
<a name="l01315"></a>01315 {
<a name="l01316"></a>01316     <span class="comment">// Hide buttons in this order:</span>
<a name="l01317"></a>01317     <span class="comment">// Shade, Below, Above, Sticky, Help, Maximize, Minimize, Close, Menu.</span>
<a name="l01318"></a>01318     <a class="code" href="classDefault_1_1KDEDefaultButton.html">KDEDefaultButton</a>* btnArray[] = { button[ BtnShade ], button[ BtnBelow ],
<a name="l01319"></a>01319                         button[ BtnAbove ], button[BtnSticky], button[BtnHelp],
<a name="l01320"></a>01320             button[BtnMax], button[BtnIconify], button[BtnClose],
<a name="l01321"></a>01321             button[BtnMenu] };
<a name="l01322"></a>01322         <span class="keyword">const</span> <span class="keywordtype">int</span> buttons_cnt = <span class="keyword">sizeof</span>( btnArray ) / <span class="keyword">sizeof</span>( btnArray[ 0 ] );
<a name="l01323"></a>01323 
<a name="l01324"></a>01324     <span class="keywordtype">int</span> minwidth  = largeButtons ? 10 * <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a> : 10 * <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>; <span class="comment">// Start hiding at this width</span>
<a name="l01325"></a>01325     <span class="keywordtype">int</span> btn_width = largeButtons ? <a class="code" href="namespaceDefault.html#a37">normalTitleHeight</a> : <a class="code" href="namespaceDefault.html#a36">toolTitleHeight</a>;
<a name="l01326"></a>01326     <span class="keywordtype">int</span> current_width = <a class="code" href="classKDecoration.html#a32">width</a>();
<a name="l01327"></a>01327     <span class="keywordtype">int</span> count = 0;
<a name="l01328"></a>01328     <span class="keywordtype">int</span> i;
<a name="l01329"></a>01329 
<a name="l01330"></a>01330     <span class="comment">// Find out how many buttons we need to hide.</span>
<a name="l01331"></a>01331     <span class="keywordflow">while</span> (current_width &lt; minwidth)
<a name="l01332"></a>01332     {
<a name="l01333"></a>01333         current_width += btn_width;
<a name="l01334"></a>01334         count++;
<a name="l01335"></a>01335     }
<a name="l01336"></a>01336 
<a name="l01337"></a>01337     <span class="comment">// Bound the number of buttons to hide</span>
<a name="l01338"></a>01338     <span class="keywordflow">if</span> (count &gt; buttons_cnt) count = buttons_cnt;
<a name="l01339"></a>01339 
<a name="l01340"></a>01340     <span class="comment">// Hide the required buttons...</span>
<a name="l01341"></a>01341     <span class="keywordflow">for</span>(i = 0; i &lt; count; i++)
<a name="l01342"></a>01342     {
<a name="l01343"></a>01343         <span class="keywordflow">if</span> (btnArray[i] &amp;&amp; btnArray[i]-&gt;isVisible() )
<a name="l01344"></a>01344             btnArray[i]-&gt;hide();
<a name="l01345"></a>01345     }
<a name="l01346"></a>01346 
<a name="l01347"></a>01347     <span class="comment">// Show the rest of the buttons...</span>
<a name="l01348"></a>01348     <span class="keywordflow">for</span>(i = count; i &lt; buttons_cnt; i++)
<a name="l01349"></a>01349     {
<a name="l01350"></a>01350         <span class="keywordflow">if</span> (btnArray[i] &amp;&amp; (!btnArray[i]-&gt;isVisible()) )
<a name="l01351"></a>01351             btnArray[i]-&gt;show();
<a name="l01352"></a>01352     }
<a name="l01353"></a>01353 }
<a name="l01354"></a>01354 
<a name="l01355"></a>01355 
<a name="l01356"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b11">01356</a> <a class="code" href="classKDecorationDefines.html#w70">KDecoration::Position</a> <a class="code" href="classDefault_1_1KDEDefaultClient.html#b11">KDEDefaultClient::mousePosition</a>( <span class="keyword">const</span> QPoint&amp; p )<span class="keyword"> const</span>
<a name="l01357"></a>01357 <span class="keyword"></span>{
<a name="l01358"></a>01358     <a class="code" href="classKDecorationDefines.html#w70">Position</a> m = PositionCenter;
<a name="l01359"></a>01359 
<a name="l01360"></a>01360     <span class="keywordtype">int</span> bottomSize = mustDrawHandle() ? <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a> : <a class="code" href="namespaceDefault.html#a38">borderWidth</a>;
<a name="l01361"></a>01361 
<a name="l01362"></a>01362     <span class="keyword">const</span> <span class="keywordtype">int</span> range = 14 + 3*<a class="code" href="namespaceDefault.html#a38">borderWidth</a>/2;
<a name="l01363"></a>01363 
<a name="l01364"></a>01364     <span class="keywordflow">if</span> ( ( p.x() &gt; <a class="code" href="namespaceDefault.html#a38">borderWidth</a> &amp;&amp; p.x() &lt; <a class="code" href="classKDecoration.html#a32">width</a>() - <a class="code" href="namespaceDefault.html#a38">borderWidth</a> )
<a name="l01365"></a>01365          &amp;&amp; ( p.y() &gt; 4 &amp;&amp; p.y() &lt; <a class="code" href="classKDecoration.html#a33">height</a>() - bottomSize ) )
<a name="l01366"></a>01366         m = PositionCenter;
<a name="l01367"></a>01367     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.y() &lt;= range &amp;&amp; p.x() &lt;= range)
<a name="l01368"></a>01368         m = PositionTopLeft;
<a name="l01369"></a>01369     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.y() &gt;= <a class="code" href="classKDecoration.html#a33">height</a>()-range &amp;&amp; p.x() &gt;= <a class="code" href="classKDecoration.html#a32">width</a>()-range)
<a name="l01370"></a>01370         m = PositionBottomRight;
<a name="l01371"></a>01371     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.y() &gt;= <a class="code" href="classKDecoration.html#a33">height</a>()-range &amp;&amp; p.x() &lt;= range)
<a name="l01372"></a>01372         m = PositionBottomLeft;
<a name="l01373"></a>01373     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.y() &lt;= range &amp;&amp; p.x() &gt;= <a class="code" href="classKDecoration.html#a32">width</a>()-range)
<a name="l01374"></a>01374         m = PositionTopRight;
<a name="l01375"></a>01375     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.y() &lt;= 4 )
<a name="l01376"></a>01376         m = PositionTop;
<a name="l01377"></a>01377     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.y() &gt;= <a class="code" href="classKDecoration.html#a33">height</a>()-bottomSize )
<a name="l01378"></a>01378         m = PositionBottom;
<a name="l01379"></a>01379     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.x() &lt;= <a class="code" href="namespaceDefault.html#a38">borderWidth</a> )
<a name="l01380"></a>01380         m = PositionLeft;
<a name="l01381"></a>01381     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( p.x() &gt;= <a class="code" href="classKDecoration.html#a32">width</a>()-<a class="code" href="namespaceDefault.html#a38">borderWidth</a> )
<a name="l01382"></a>01382         m = PositionRight;
<a name="l01383"></a>01383     <span class="keywordflow">else</span>
<a name="l01384"></a>01384         m = PositionCenter;
<a name="l01385"></a>01385 
<a name="l01386"></a>01386     <span class="comment">// Modify the mouse position if we are using a grab bar.</span>
<a name="l01387"></a>01387     <span class="keywordflow">if</span> (mustDrawHandle())
<a name="l01388"></a>01388         <span class="keywordflow">if</span> (p.y() &gt;= (<a class="code" href="classKDecoration.html#a33">height</a>() - <a class="code" href="namespaceDefault.html#a39">grabBorderWidth</a>))
<a name="l01389"></a>01389         {
<a name="l01390"></a>01390             <span class="keywordflow">if</span> (p.x() &gt;= (<a class="code" href="classKDecoration.html#a32">width</a>() - 2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a> - 12))
<a name="l01391"></a>01391                 m = PositionBottomRight;
<a name="l01392"></a>01392             <span class="keywordflow">else</span> <span class="keywordflow">if</span> (p.x() &lt;= 2*<a class="code" href="namespaceDefault.html#a38">borderWidth</a> + 12)
<a name="l01393"></a>01393                 m = PositionBottomLeft;
<a name="l01394"></a>01394             <span class="keywordflow">else</span>
<a name="l01395"></a>01395             m = PositionBottom;
<a name="l01396"></a>01396         }
<a name="l01397"></a>01397 
<a name="l01398"></a>01398     <span class="keywordflow">return</span> m;
<a name="l01399"></a>01399 }
<a name="l01400"></a>01400 
<a name="l01401"></a>01401 
<a name="l01402"></a>01402 <span class="comment">// Make sure the menu button follows double click conventions set in kcontrol</span>
<a name="l01403"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j4">01403</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j4">KDEDefaultClient::menuButtonPressed</a>()
<a name="l01404"></a>01404 {
<a name="l01405"></a>01405     <span class="keyword">static</span> QTime t;
<a name="l01406"></a>01406     <span class="keyword">static</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html">KDEDefaultClient</a>* lastClient = NULL;
<a name="l01407"></a>01407     <span class="keywordtype">bool</span> dbl = ( lastClient == <span class="keyword">this</span> &amp;&amp; t.elapsed() &lt;= QApplication::doubleClickInterval());
<a name="l01408"></a>01408     lastClient = <span class="keyword">this</span>;
<a name="l01409"></a>01409     t.start();
<a name="l01410"></a>01410 
<a name="l01411"></a>01411     <span class="keywordflow">if</span> (dbl)
<a name="l01412"></a>01412     {
<a name="l01413"></a>01413         m_closing = <span class="keyword">true</span>;
<a name="l01414"></a>01414         <span class="keywordflow">return</span>;
<a name="l01415"></a>01415     }
<a name="l01416"></a>01416 
<a name="l01417"></a>01417     QPoint menupoint ( button[BtnMenu]-&gt;rect().bottomLeft().x()-1,
<a name="l01418"></a>01418                        button[BtnMenu]-&gt;rect().bottomLeft().y()+2 );
<a name="l01419"></a>01419         <a class="code" href="classKDecorationFactory.html">KDecorationFactory</a>* f = <a class="code" href="classKDecoration.html#a57">factory</a>();
<a name="l01420"></a>01420     QRect menuRect = button[BtnMenu]-&gt;rect();
<a name="l01421"></a>01421     QPoint menutop = button[BtnMenu]-&gt;mapToGlobal(menuRect.topLeft());
<a name="l01422"></a>01422     QPoint menubottom = button[BtnMenu]-&gt;mapToGlobal(menuRect.bottomRight());
<a name="l01423"></a>01423     <a class="code" href="classKDecoration.html#a21">showWindowMenu</a>(QRect(menutop, menubottom));
<a name="l01424"></a>01424         <span class="keywordflow">if</span>( !f-&gt;<a class="code" href="classKDecorationFactory.html#a8">exists</a>( <span class="keyword">this</span> )) <span class="comment">// 'this' was destroyed</span>
<a name="l01425"></a>01425             <span class="keywordflow">return</span>;
<a name="l01426"></a>01426     button[BtnMenu]-&gt;setDown(<span class="keyword">false</span>);
<a name="l01427"></a>01427 }
<a name="l01428"></a>01428 
<a name="l01429"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#j5">01429</a> <span class="keywordtype">void</span> <a class="code" href="classDefault_1_1KDEDefaultClient.html#j5">KDEDefaultClient::menuButtonReleased</a>()
<a name="l01430"></a>01430 {
<a name="l01431"></a>01431     <span class="keywordflow">if</span> (m_closing)
<a name="l01432"></a>01432         <a class="code" href="classKDecoration.html#i0">closeWindow</a>();
<a name="l01433"></a>01433 }
<a name="l01434"></a>01434 
<a name="l01435"></a><a class="code" href="namespaceDefault.html#a44">01435</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceDefault.html#a44">SUPPORTED_WINDOW_TYPES_MASK</a> = NET::NormalMask | NET::DesktopMask | NET::DockMask
<a name="l01436"></a>01436     | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask
<a name="l01437"></a>01437     | NET::UtilityMask | NET::SplashMask;
<a name="l01438"></a>01438 
<a name="l01439"></a>01439 <span class="keywordtype">bool</span> KDEDefaultClient::isTool()<span class="keyword"> const</span>
<a name="l01440"></a>01440 <span class="keyword"></span>{
<a name="l01441"></a>01441     NET::WindowType type = windowType( <a class="code" href="namespaceDefault.html#a44">SUPPORTED_WINDOW_TYPES_MASK</a> );
<a name="l01442"></a>01442     <span class="keywordflow">return</span> type == NET::Toolbar || type == NET::Utility || type == NET::Menu;
<a name="l01443"></a>01443 }
<a name="l01444"></a>01444 
<a name="l01445"></a>01445 
<a name="l01446"></a><a class="code" href="classDefault_1_1KDEDefaultClient.html#b0">01446</a> <span class="keywordtype">bool</span> KDEDefaultClient::eventFilter( QObject* o, QEvent* e )
<a name="l01447"></a>01447 {
<a name="l01448"></a>01448     <span class="keywordflow">if</span>( o != <a class="code" href="classKDecoration.html#a55">widget</a>())
<a name="l01449"></a>01449     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01450"></a>01450     <span class="keywordflow">switch</span>( e-&gt;type())
<a name="l01451"></a>01451     {
<a name="l01452"></a>01452     <span class="keywordflow">case</span> QEvent::Resize:
<a name="l01453"></a>01453         <a class="code" href="classDefault_1_1KDEDefaultClient.html#b1">resizeEvent</a>( static_cast&lt; QResizeEvent* &gt;( e ));
<a name="l01454"></a>01454         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01455"></a>01455     <span class="keywordflow">case</span> QEvent::Paint:
<a name="l01456"></a>01456         <a class="code" href="classDefault_1_1KDEDefaultClient.html#b2">paintEvent</a>( static_cast&lt; QPaintEvent* &gt;( e ));
<a name="l01457"></a>01457         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01458"></a>01458     <span class="keywordflow">case</span> QEvent::MouseButtonDblClick:
<a name="l01459"></a>01459         <a class="code" href="classDefault_1_1KDEDefaultClient.html#b4">mouseDoubleClickEvent</a>( static_cast&lt; QMouseEvent* &gt;( e ));
<a name="l01460"></a>01460         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01461"></a>01461     <span class="keywordflow">case</span> QEvent::MouseButtonPress:
<a name="l01462"></a>01462         <a class="code" href="classKDecoration.html#a34">processMousePressEvent</a>( static_cast&lt; QMouseEvent* &gt;( e ));
<a name="l01463"></a>01463         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01464"></a>01464     <span class="keywordflow">case</span> QEvent::Show:
<a name="l01465"></a>01465         <a class="code" href="classDefault_1_1KDEDefaultClient.html#b3">showEvent</a>( static_cast&lt; QShowEvent* &gt;( e ));
<a name="l01466"></a>01466         <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l01467"></a>01467     <span class="keywordflow">default</span>:
<a name="l01468"></a>01468         <span class="keywordflow">break</span>;
<a name="l01469"></a>01469     }
<a name="l01470"></a>01470     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l01471"></a>01471 }
<a name="l01472"></a>01472 
<a name="l01473"></a>01473 
<a name="l01474"></a>01474 } <span class="comment">// namespace</span>
<a name="l01475"></a>01475 
<a name="l01476"></a>01476 <span class="comment">// Extended KWin plugin interface</span>
<a name="l01477"></a>01477 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> KDE_EXPORT <a class="code" href="classKDecorationFactory.html">KDecorationFactory</a>* create_factory()
<a name="l01478"></a>01478 {
<a name="l01479"></a>01479     <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classDefault_1_1KDEDefaultHandler.html">Default::KDEDefaultHandler</a>();
<a name="l01480"></a>01480 }
<a name="l01481"></a>01481 
<a name="l01482"></a>01482 <span class="preprocessor">#include "kdedefault.moc"</span>
<a name="l01483"></a>01483 <span class="comment">// vim: ts=4</span>
</pre></div></div>
<div id="bottom-nav">
<img src="../../common/bottom2.png" align="right" height="59" width="227" alt="KDE Logo">
</div>
<div class="bottom">
This file is part of the documentation for kwin Library Version 3.4.2.
</div>
<div class="bottom" style="color:#cccccc">
Documentation copyright &copy; 1996-2004 the KDE developers.<br>
Generated on Wed Jun 14 19:06:09 2006 by
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.4.4 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, &copy;&nbsp;1997-2003
</div>
</body>
</html>