2
* Internal taskbar for Cairo-Dock
2
* This file is a part of the Cairo-Dock project
4
* Copyright : (C) 2009 by Fabrice Rey
5
* E-mail : fabounet@users.berlios.de
4
* Copyright : (C) see the 'copyright' file.
5
* E-mail : see the 'copyright' file.
7
7
* This program is free software; you can redistribute it and/or
8
8
* modify it under the terms of the GNU General Public License
13
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
15
* GNU General Public License for more details.
16
* http://www.gnu.org/licenses/licenses.html#GPL
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20
#include <gdk/gdkx.h>
46
47
///pTaskBar->bUniquePid = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "unique PID", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
48
pTaskBar->bGroupAppliByClass = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "group by class", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
49
pTaskBar->bGroupAppliByClass = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "group by class", &bFlushConfFileNeeded, TRUE, "Applications", NULL);
49
50
pTaskBar->cGroupException = cairo_dock_get_string_key_value (pKeyFile, "TaskBar", "group exception", &bFlushConfFileNeeded, "pidgin;xchat", NULL, NULL);
50
51
if (pTaskBar->cGroupException)
59
60
pTaskBar->bMinimizeOnClick = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "minimize on click", &bFlushConfFileNeeded, TRUE, "Applications", NULL);
60
61
pTaskBar->bCloseAppliOnMiddleClick = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "close on middle click", &bFlushConfFileNeeded, TRUE, "Applications", NULL);
62
pTaskBar->bAutoHideOnFullScreen = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "auto quick hide", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
63
pTaskBar->bAutoHideOnMaximized = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "auto quick hide on max", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
64
63
pTaskBar->bHideVisibleApplis = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "hide visible", &bFlushConfFileNeeded, FALSE, "Applications", NULL);
65
pTaskBar->fVisibleAppliAlpha = cairo_dock_get_double_key_value (pKeyFile, "TaskBar", "visibility alpha", &bFlushConfFileNeeded, .25, "Applications", NULL); // >0 <=> les fenetres minimisees sont transparentes.
64
pTaskBar->fVisibleAppliAlpha = cairo_dock_get_double_key_value (pKeyFile, "TaskBar", "visibility alpha", &bFlushConfFileNeeded, .35, "Applications", NULL); // >0 <=> les fenetres minimisees sont transparentes.
66
65
if (pTaskBar->bHideVisibleApplis && pTaskBar->fVisibleAppliAlpha < 0)
67
66
pTaskBar->fVisibleAppliAlpha = 0.; // on inhibe ce parametre, puisqu'il ne sert alors a rien.
68
67
else if (pTaskBar->fVisibleAppliAlpha > .6)
81
80
pTaskBar->cAnimationOnActiveWindow = cairo_dock_get_string_key_value (pKeyFile, "TaskBar", "animation on active window", &bFlushConfFileNeeded, "wobbly", NULL, NULL);
83
82
pTaskBar->bMixLauncherAppli = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "mix launcher appli", &bFlushConfFileNeeded, TRUE, NULL, NULL);
83
pTaskBar->bDrawIndicatorOnAppli = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "indic on appli", &bFlushConfFileNeeded, FALSE, NULL, NULL);
84
84
pTaskBar->bOverWriteXIcons = cairo_dock_get_boolean_key_value (pKeyFile, "TaskBar", "overwrite xicon", &bFlushConfFileNeeded, TRUE, NULL, NULL);
85
85
pTaskBar->cOverwriteException = cairo_dock_get_string_key_value (pKeyFile, "TaskBar", "overwrite exception", &bFlushConfFileNeeded, "pidgin;xchat", NULL, NULL);
86
86
if (pTaskBar->cOverwriteException)
109
109
g_free (pTaskBar->cForceDemandsAttention);
112
static void _set_indicator (Icon *pIcon, CairoContainer *pContainer, gpointer data)
114
pIcon->bHasIndicator = GPOINTER_TO_INT (data);
112
116
static void reload (CairoConfigTaskBar *pPrevTaskBar, CairoConfigTaskBar *pTaskBar)
114
118
CairoDock *pDock = g_pMainDock;
116
if (myAccessibility.bAutoHide || myAccessibility.bPopUp || myAccessibility.bReserveSpace)
118
if (pTaskBar->bAutoHideOnFullScreen)
120
cd_warning ("The option 'auto-hide on fullscreen window' is in conflict with the accessibility options, it will be deactivated");
121
pTaskBar->bAutoHideOnFullScreen = FALSE;
123
if (pTaskBar->bAutoHideOnMaximized)
125
cd_warning ("The option 'auto-hide on maximized window' is in conflict with the accessibility options, it will be deactivated");
126
pTaskBar->bAutoHideOnMaximized = FALSE;
130
120
gboolean bUpdateSize = FALSE;
131
121
if (/**pPrevTaskBar->bUniquePid != pTaskBar->bUniquePid ||*/
132
122
pPrevTaskBar->bGroupAppliByClass != pTaskBar->bGroupAppliByClass ||
144
134
bUpdateSize = TRUE;
147
if (cairo_dock_application_manager_is_running () && pPrevTaskBar->iAppliMaxNameLength != pTaskBar->iAppliMaxNameLength)
137
if (cairo_dock_application_manager_is_running () &&
138
pPrevTaskBar->bDrawIndicatorOnAppli != pTaskBar->bDrawIndicatorOnAppli)
149
/// recharger les noms ...
140
cairo_dock_foreach_applis ((CairoDockForeachIconFunc) _set_indicator, FALSE, GINT_TO_POINTER (pTaskBar->bDrawIndicatorOnAppli));
141
gtk_widget_queue_draw (pDock->container.pWidget);
153
144
if (! cairo_dock_application_manager_is_running () && pTaskBar->bShowAppli) // maintenant on veut voir les applis !
156
147
bUpdateSize = TRUE;
159
gtk_widget_queue_draw (pDock->pWidget); // pour le fVisibleAlpha
161
if (pTaskBar->bAutoHideOnFullScreen != pPrevTaskBar->bAutoHideOnFullScreen || pTaskBar->bAutoHideOnMaximized != pPrevTaskBar->bAutoHideOnMaximized)
163
if (cairo_dock_search_window_on_our_way (pTaskBar->bAutoHideOnMaximized, pTaskBar->bAutoHideOnFullScreen) == NULL)
165
if (cairo_dock_quick_hide_is_activated ())
167
cd_message (" => aucune fenetre n'est desormais genante");
168
cairo_dock_deactivate_temporary_auto_hide ();
173
if (! cairo_dock_quick_hide_is_activated ())
175
cd_message (" => une fenetre desormais genante");
176
cairo_dock_activate_temporary_auto_hide ();
150
gtk_widget_queue_draw (pDock->container.pWidget); // pour le fVisibleAlpha
181
152
if (pPrevTaskBar->bShowAppli != pTaskBar->bShowAppli ||
182
153
pPrevTaskBar->bGroupAppliByClass != pTaskBar->bGroupAppliByClass)
187
158
cairo_destroy (pCairoContext);
190
/**if (bUpdateSize) // utile ?...
192
163
cairo_dock_calculate_dock_icons (pDock);
193
gtk_widget_queue_draw (pDock->pWidget); // le 'gdk_window_move_resize' ci-dessous ne provoquera pas le redessin si la taille n'a pas change.
164
gtk_widget_queue_draw (pDock->container.pWidget); // le 'gdk_window_move_resize' ci-dessous ne provoquera pas le redessin si la taille n'a pas change.
195
166
cairo_dock_place_root_dock (pDock);