#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();
}
}
}
#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
};
#endif // XINERAMA
+#ifdef XFT
+ class Xftmenu : public Basemenu {
+ private:
+ Xftmenu(const Xftmenu&);
+ Xftmenu& operator=(const Xftmenu&);
+
+ protected:
+ virtual void itemSelected(int button, unsigned int index);
+ virtual void setValues(void);
+
+ public:
+ Xftmenu(Configmenu *cm);
+ virtual void reconfigure(void);
+ };
+#endif // XFT
+
Focusmenu *focusmenu;
Placementmenu *placementmenu;
WindowToWindowSnapmenu *windowsnapmenu;
#ifdef XINERAMA
Xineramamenu *xineramamenu;
#endif // XINERAMA
+#ifdef XFT
+ Xftmenu *xftmenu;
+#endif // XFT
// friend class Focusmenu;
// friend class Placementmenu;
#ifdef XINERAMA
inline Basemenu *getXineramamenu(void) { return xineramamenu; }
#endif // XINERAMA
+#ifdef XFT
+ inline Basemenu *getXftmenu(void) { return xftmenu; }
+#endif // XFT
virtual void reconfigure(void);
};
void BScreen::saveAAFonts(bool f) {
resource.aa_fonts = f;
- reconfigure();
config->setValue(screenstr + "antialiasFonts", resource.aa_fonts);
+ reconfigure();
}
void BScreen::saveShadowFonts(bool f) {
resource.shadow_fonts = f;
- reconfigure();
config->setValue(screenstr + "dropShadowFonts", resource.shadow_fonts);
+ reconfigure();
}
if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move))
resource.opaque_move = false;
- if (! config->getValue(screenstr + "dropShadowFonts", resource.shadow_fonts))
- resource.shadow_fonts = false;
-
if (! config->getValue(screenstr + "antialiasFonts", resource.aa_fonts))
resource.aa_fonts = true;
+ if (! resource.aa_fonts ||
+ ! config->getValue(screenstr + "dropShadowFonts", resource.shadow_fonts))
+ resource.shadow_fonts = false;
+
if (! config->getValue(screenstr + "resizeZones", resource.resize_zones) ||
(resource.resize_zones != 1 && resource.resize_zones != 2 &&
resource.resize_zones != 4))
#ifdef XINERAMA
++bbwins;
#endif // XINERAMA
+#ifdef XFT
+ ++bbwins;
+#endif // XFT
Window *session_stack = new
Window[(num + workspacesList.size() + rootmenuList.size() +
#ifdef XINERAMA
*(session_stack + i++) = configmenu->getXineramamenu()->getWindowID();
#endif // XINERAMA
+#ifdef XFT
+ *(session_stack + i++) = configmenu->getXftmenu()->getWindowID();
+#endif // XFT
*(session_stack + i++) = configmenu->getWindowID();
*(session_stack + i++) = slit->getMenu()->getDirectionmenu()->getWindowID();