diff options
Diffstat (limited to 'src/Toolbar.cc')
-rw-r--r-- | src/Toolbar.cc | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/src/Toolbar.cc b/src/Toolbar.cc index d9932fa..97e31ed 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc | |||
@@ -22,20 +22,10 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Toolbar.cc,v 1.26 2002/08/04 15:12:51 fluxgen Exp $ | 25 | // $Id: Toolbar.cc,v 1.27 2002/08/12 03:25:55 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Toolbar.hh" | 27 | #include "Toolbar.hh" |
28 | 28 | ||
29 | // stupid macros needed to access some functions in version 2 of the GNU C | ||
30 | // library | ||
31 | #ifndef _GNU_SOURCE | ||
32 | #define _GNU_SOURCE | ||
33 | #endif // _GNU_SOURCE | ||
34 | |||
35 | #ifdef HAVE_CONFIG_H | ||
36 | # include "../config.h" | ||
37 | #endif // HAVE_CONFIG_H | ||
38 | |||
39 | #include "i18n.hh" | 29 | #include "i18n.hh" |
40 | #include "fluxbox.hh" | 30 | #include "fluxbox.hh" |
41 | #include "Clientmenu.hh" | 31 | #include "Clientmenu.hh" |
@@ -46,26 +36,31 @@ | |||
46 | #include "Workspace.hh" | 36 | #include "Workspace.hh" |
47 | #include "Workspacemenu.hh" | 37 | #include "Workspacemenu.hh" |
48 | 38 | ||
39 | // use GNU extensions | ||
40 | #ifndef _GNU_SOURCE | ||
41 | #define _GNU_SOURCE | ||
42 | #endif // _GNU_SOURCE | ||
43 | |||
44 | #ifdef HAVE_CONFIG_H | ||
45 | # include "../config.h" | ||
46 | #endif // HAVE_CONFIG_H | ||
47 | |||
49 | #include <X11/Xutil.h> | 48 | #include <X11/Xutil.h> |
50 | #include <X11/keysym.h> | 49 | #include <X11/keysym.h> |
51 | 50 | ||
52 | #ifdef STDC_HEADERS | ||
53 | # include <string.h> | ||
54 | #endif // STDC_HEADERS | ||
55 | 51 | ||
56 | #ifdef HAVE_STDIO_H | 52 | #include <cstring> |
57 | # include <stdio.h> | 53 | #include <cstdio> |
58 | #endif // HAVE_STDIO_H | ||
59 | 54 | ||
60 | #ifdef TIME_WITH_SYS_TIME | 55 | #ifdef TIME_WITH_SYS_TIME |
61 | # include <sys/time.h> | 56 | #include <sys/time.h> |
62 | # include <time.h> | 57 | #include <time.h> |
63 | #else // !TIME_WITH_SYS_TIME | 58 | #else // !TIME_WITH_SYS_TIME |
64 | # ifdef HAVE_SYS_TIME_H | 59 | #ifdef HAVE_SYS_TIME_H |
65 | # include <sys/time.h> | 60 | #include <sys/time.h> |
66 | # else // !HAVE_SYS_TIME_H | 61 | #else // !HAVE_SYS_TIME_H |
67 | # include <time.h> | 62 | #include <time.h> |
68 | # endif // HAVE_SYS_TIME_H | 63 | #endif // HAVE_SYS_TIME_H |
69 | #endif // TIME_WITH_SYS_TIME | 64 | #endif // TIME_WITH_SYS_TIME |
70 | 65 | ||
71 | #include <iostream> | 66 | #include <iostream> |
@@ -1031,7 +1026,11 @@ void Toolbar::buttonPressEvent(XButtonEvent *be) { | |||
1031 | } else if (be->button == 2 && (! on_top)) { | 1026 | } else if (be->button == 2 && (! on_top)) { |
1032 | XLowerWindow(display, frame.window); | 1027 | XLowerWindow(display, frame.window); |
1033 | } else if (be->button == 3) { | 1028 | } else if (be->button == 3) { |
1034 | if (! toolbarmenu->isVisible()) { | 1029 | FluxboxWindow *fluxboxwin = 0; |
1030 | if ( iconbar && (fluxboxwin = iconbar->findWindow(be->window)) ) { | ||
1031 | Windowmenu *wm = fluxboxwin->getWindowmenu(); | ||
1032 | fluxboxwin->showMenu(be->x_root, be->y_root - wm->height()); | ||
1033 | } else if (! toolbarmenu->isVisible()) { | ||
1035 | int x, y; | 1034 | int x, y; |
1036 | 1035 | ||
1037 | x = be->x_root - (toolbarmenu->width() / 2); | 1036 | x = be->x_root - (toolbarmenu->width() / 2); |
@@ -1173,13 +1172,14 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) { | |||
1173 | //save workspace names | 1172 | //save workspace names |
1174 | Fluxbox::instance()->save_rc(); | 1173 | Fluxbox::instance()->save_rc(); |
1175 | 1174 | ||
1176 | } else if (! (ks == XK_Shift_L || ks == XK_Shift_R || | 1175 | } else if (! IsModifierKey(ks)) {/* ks == XK_Shift_L || ks == XK_Shift_R || |
1177 | ks == XK_Control_L || ks == XK_Control_R || | 1176 | ks == XK_Control_L || ks == XK_Control_R || |
1178 | ks == XK_Caps_Lock || ks == XK_Shift_Lock || | 1177 | ks == XK_Caps_Lock || ks == XK_Shift_Lock || |
1179 | ks == XK_Meta_L || ks == XK_Meta_R || | 1178 | ks == XK_Meta_L || ks == XK_Meta_R || |
1180 | ks == XK_Alt_L || ks == XK_Alt_R || | 1179 | ks == XK_Alt_L || ks == XK_Alt_R || |
1181 | ks == XK_Super_L || ks == XK_Super_R || | 1180 | ks == XK_Super_L || ks == XK_Super_R || |
1182 | ks == XK_Hyper_L || ks == XK_Hyper_R)) { | 1181 | ks == XK_Hyper_L || ks == XK_Hyper_R)) { |
1182 | */ | ||
1183 | 1183 | ||
1184 | if (ks == XK_BackSpace && new_workspace_name.size()) | 1184 | if (ks == XK_BackSpace && new_workspace_name.size()) |
1185 | new_workspace_name.erase(new_workspace_name.size()-1); | 1185 | new_workspace_name.erase(new_workspace_name.size()-1); |
@@ -1196,26 +1196,26 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) { | |||
1196 | XmbTextExtents(screen->getToolbarStyle()->font.set, | 1196 | XmbTextExtents(screen->getToolbarStyle()->font.set, |
1197 | new_workspace_name.c_str(), l, &ink, &logical); | 1197 | new_workspace_name.c_str(), l, &ink, &logical); |
1198 | tw = logical.width; | 1198 | tw = logical.width; |
1199 | } else | 1199 | } else { |
1200 | tw = XTextWidth(screen->getToolbarStyle()->font.fontstruct, | 1200 | tw = XTextWidth(screen->getToolbarStyle()->font.fontstruct, |
1201 | new_workspace_name.c_str(), l); | 1201 | new_workspace_name.c_str(), l); |
1202 | 1202 | } | |
1203 | x = (frame.workspace_label_w - tw) / 2; | 1203 | x = (frame.workspace_label_w - tw) / 2; |
1204 | 1204 | ||
1205 | if (x < (signed) frame.bevel_w) x = frame.bevel_w; | 1205 | if (x < (signed) frame.bevel_w) x = frame.bevel_w; |
1206 | 1206 | ||
1207 | if (i18n->multibyte()) | 1207 | if (i18n->multibyte()) { |
1208 | XmbDrawString(display, frame.workspace_label, | 1208 | XmbDrawString(display, frame.workspace_label, |
1209 | screen->getWindowStyle()->font.set, | 1209 | screen->getWindowStyle()->font.set, |
1210 | screen->getWindowStyle()->l_text_focus_gc, x, 1 - | 1210 | screen->getWindowStyle()->l_text_focus_gc, x, 1 - |
1211 | screen->getWindowStyle()->font.set_extents->max_ink_extent.y, | 1211 | screen->getWindowStyle()->font.set_extents->max_ink_extent.y, |
1212 | new_workspace_name.c_str(), l); | 1212 | new_workspace_name.c_str(), l); |
1213 | else | 1213 | } else { |
1214 | XDrawString(display, frame.workspace_label, | 1214 | XDrawString(display, frame.workspace_label, |
1215 | screen->getWindowStyle()->l_text_focus_gc, x, | 1215 | screen->getWindowStyle()->l_text_focus_gc, x, |
1216 | screen->getToolbarStyle()->font.fontstruct->ascent + 1, | 1216 | screen->getToolbarStyle()->font.fontstruct->ascent + 1, |
1217 | new_workspace_name.c_str(), l); | 1217 | new_workspace_name.c_str(), l); |
1218 | 1218 | } | |
1219 | XDrawRectangle(display, frame.workspace_label, | 1219 | XDrawRectangle(display, frame.workspace_label, |
1220 | screen->getWindowStyle()->l_text_focus_gc, x + tw, 0, 1, | 1220 | screen->getWindowStyle()->l_text_focus_gc, x + tw, 0, 1, |
1221 | frame.label_h - 1); | 1221 | frame.label_h - 1); |
@@ -1308,7 +1308,8 @@ Toolbarmenu::~Toolbarmenu() { | |||
1308 | void Toolbarmenu::itemSelected(int button, unsigned int index) { | 1308 | void Toolbarmenu::itemSelected(int button, unsigned int index) { |
1309 | if (button == 1) { | 1309 | if (button == 1) { |
1310 | BasemenuItem *item = find(index); | 1310 | BasemenuItem *item = find(index); |
1311 | if (! item) return; | 1311 | if (item == 0) |
1312 | return; | ||
1312 | 1313 | ||
1313 | switch (item->function()) { | 1314 | switch (item->function()) { |
1314 | case 1: {// always on top | 1315 | case 1: {// always on top |
@@ -1330,9 +1331,9 @@ void Toolbarmenu::itemSelected(int button, unsigned int index) { | |||
1330 | screen()->saveToolbarAutoHide(toolbar->do_auto_hide); | 1331 | screen()->saveToolbarAutoHide(toolbar->do_auto_hide); |
1331 | setItemSelected(2, change); | 1332 | setItemSelected(2, change); |
1332 | 1333 | ||
1333 | #ifdef SLIT | 1334 | #ifdef SLIT |
1334 | toolbar->screen->getSlit()->reposition(); | 1335 | toolbar->screen->getSlit()->reposition(); |
1335 | #endif // SLIT | 1336 | #endif // SLIT |
1336 | Fluxbox::instance()->save_rc(); | 1337 | Fluxbox::instance()->save_rc(); |
1337 | break; | 1338 | break; |
1338 | } | 1339 | } |