#include "Screen.hh"
Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) {
- setLabel(i18n(ConfigmenuSet, ConfigmenuConfigOptions, "Config options"));
+ setLabel(i18n(ConfigmenuSet, ConfigmenuConfigOptions, "Config Options"));
setInternalMenu();
focusmenu = new Focusmenu(this);
#ifdef XINERAMA
xineramamenu = new Xineramamenu(this);
#endif // XINERAMA
+#ifdef XFT
+ xftmenu = new Xftmenu(this);
+#endif // XFT
insert(i18n(ConfigmenuSet, ConfigmenuFocusModel,
"Focus Model"), focusmenu);
#ifdef XINERAMA
insert(i18n(ConfigmenuSet, ConfigmenuXineramaSupport,
"XineramaSupport"), xineramamenu);
+#endif // XINERAMA
+#ifdef XFT
+ insert(i18n(ConfigmenuSet, ConfigmenuXftOptions,
+ "Xft Font Options"), xftmenu);
#endif // XINERAMA
insert(i18n(ConfigmenuSet, ConfigmenuImageDithering,
"Image Dithering"), 1);
#ifdef XINERAMA
++index;
#endif // XINERAMA
+#ifdef XFT
+ ++index;
+#endif // XFT
setItemSelected(index++, getScreen()->doImageDither());
setItemSelected(index++, getScreen()->doOpaqueMove());
setItemSelected(index++, getScreen()->doWorkspaceWarping());
#ifdef XINERAMA
delete xineramamenu;
#endif // XINERAMA
+#ifdef XFT
+ delete xftmenu;
+#endif // XFT
}
#ifdef XINERAMA
xineramamenu->reconfigure();
#endif // XINERAMA
+#ifdef XFT
+ xftmenu->reconfigure();
+#endif // XFT
Basemenu::reconfigure();
}
bool rl = (getScreen()->getRowPlacementDirection() == BScreen::LeftRight),
tb = (getScreen()->getColPlacementDirection() == BScreen::TopBottom),
- e = placement != BScreen::UnderMousePlacement;
+ e = (placement == BScreen::RowSmartPlacement ||
+ placement == BScreen::ColSmartPlacement);
setItemSelected(5, rl);
setItemSelected(6, ! rl);
setItemSelected(9, getScreen()->getPlaceIgnoreShaded());
setItemSelected(10, getScreen()->getPlaceIgnoreMaximized());
+ setItemEnabled(9, e);
+ setItemEnabled(10, e);
}
switch (item->function()) {
case BScreen::RowSmartPlacement:
getScreen()->savePlacementPolicy(item->function());
-
- setItemSelected(0, true);
- setItemSelected(1, false);
- setItemSelected(2, false);
- setItemSelected(3, false);
- setItemSelected(4, false);
- setItemEnabled(5, true);
- setItemEnabled(6, true);
- setItemEnabled(7, true);
- setItemEnabled(8, true);
-
break;
case BScreen::ColSmartPlacement:
getScreen()->savePlacementPolicy(item->function());
-
- setItemSelected(0, false);
- setItemSelected(1, true);
- setItemSelected(2, false);
- setItemSelected(3, false);
- setItemSelected(4, false);
- setItemEnabled(5, true);
- setItemEnabled(6, true);
- setItemEnabled(7, true);
- setItemEnabled(8, true);
-
break;
case BScreen::CascadePlacement:
getScreen()->savePlacementPolicy(item->function());
-
- setItemSelected(0, false);
- setItemSelected(1, false);
- setItemSelected(2, true);
- setItemSelected(3, false);
- setItemSelected(4, false);
- setItemEnabled(5, true);
- setItemEnabled(6, true);
- setItemEnabled(7, true);
- setItemEnabled(8, true);
-
break;
case BScreen::UnderMousePlacement:
getScreen()->savePlacementPolicy(item->function());
-
- setItemSelected(0, false);
- setItemSelected(1, false);
- setItemSelected(2, false);
- setItemSelected(3, true);
- setItemSelected(4, false);
- setItemEnabled(5, false);
- setItemEnabled(6, false);
- setItemEnabled(7, false);
- setItemEnabled(8, false);
-
break;
case BScreen::ClickMousePlacement:
getScreen()->savePlacementPolicy(item->function());
-
- setItemSelected(0, false);
- setItemSelected(1, false);
- setItemSelected(2, false);
- setItemSelected(3, false);
- setItemSelected(4, true);
- setItemEnabled(5, false);
- setItemEnabled(6, false);
- setItemEnabled(7, false);
- setItemEnabled(8, false);
-
break;
case BScreen::LeftRight:
getScreen()->saveRowPlacementDirection(BScreen::LeftRight);
-
- setItemSelected(5, true);
- setItemSelected(6, false);
-
break;
case BScreen::RightLeft:
getScreen()->saveRowPlacementDirection(BScreen::RightLeft);
-
- setItemSelected(5, false);
- setItemSelected(6, true);
-
break;
case BScreen::TopBottom:
getScreen()->saveColPlacementDirection(BScreen::TopBottom);
-
- setItemSelected(7, true);
- setItemSelected(8, false);
-
break;
case BScreen::BottomTop:
getScreen()->saveColPlacementDirection(BScreen::BottomTop);
-
- setItemSelected(7, false);
- setItemSelected(8, true);
-
break;
case BScreen::IgnoreShaded:
getScreen()->savePlaceIgnoreShaded(! getScreen()->getPlaceIgnoreShaded());
-
- setItemSelected(9, getScreen()->getPlaceIgnoreShaded());
-
break;
case BScreen::IgnoreMaximized:
getScreen()->
savePlaceIgnoreMaximized(! getScreen()->getPlaceIgnoreMaximized());
-
- setItemSelected(10, getScreen()->getPlaceIgnoreMaximized());
-
break;
}
+ setValues();
}
}
}
#endif // XINERAMA
+
+#ifdef XFT
+Configmenu::Xftmenu::Xftmenu(Configmenu *cm):
+ Basemenu(cm->getScreen()) {
+ setLabel(i18n(ConfigmenuSet, ConfigmenuXftOptions, "Xft Font Options"));
+ setInternalMenu();
+
+ insert(i18n(ConfigmenuSet, ConfigmenuXftAA, "Anti-Alias Text"), 1);
+ insert(i18n(ConfigmenuSet, ConfigmenuXftShadow, "Drop Shadows Under Text"),
+ 2);
+
+ update();
+ setValues();
+}
+
+
+void Configmenu::Xftmenu::setValues(void) {
+ setItemSelected(0, getScreen()->doAAFonts());
+ setItemEnabled(1, getScreen()->doAAFonts());
+ setItemSelected(1, getScreen()->doShadowFonts());
+}
+
+
+void Configmenu::Xftmenu::reconfigure(void) {
+ setValues();
+ Basemenu::reconfigure();
+}
+
+
+void Configmenu::Xftmenu::itemSelected(int button, unsigned int index) {
+ if (button != 1)
+ return;
+
+ BasemenuItem *item = find(index);
+
+ if (! item->function())
+ return;
+
+ switch (item->function()) {
+ case 1: // anti-alias text
+ getScreen()->saveAAFonts(! getScreen()->doAAFonts());
+ break;
+
+ case 2: // drop shadows
+ getScreen()->saveShadowFonts(! getScreen()->doShadowFonts());
+ break;
+ }
+
+ setValues();
+}
+#endif // XFT