From b70da7c9de3bada5e9387a2008038baaa5d92dcf Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 22 Sep 2002 21:51:40 +0000 Subject: [PATCH] add an xft menu when --enable-xft is used. dont let dropshadows exist when AA is off, its horrid. --- nls/C/Configmenu.m | 6 ++++ src/Configmenu.cc | 69 +++++++++++++++++++++++++++++++++++++++++++++- src/Configmenu.hh | 22 +++++++++++++++ src/Screen.cc | 17 ++++++++---- 4 files changed, 108 insertions(+), 6 deletions(-) diff --git a/nls/C/Configmenu.m b/nls/C/Configmenu.m index 3fb5bab4..76dc9f39 100644 --- a/nls/C/Configmenu.m +++ b/nls/C/Configmenu.m @@ -72,3 +72,9 @@ $ #XineramaMaximizing # Window Maximizing $ #XineramaSnapping # Window Snapping +$ #XftOptions +# Xft Font Options +$ #XftAA +# Anti-Alias Text +$ #XftShadow +# Drop Shadows Under Text diff --git a/src/Configmenu.cc b/src/Configmenu.cc index 54c047ed..fbb2c66a 100644 --- a/src/Configmenu.cc +++ b/src/Configmenu.cc @@ -33,7 +33,7 @@ #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); @@ -43,6 +43,9 @@ Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) { #ifdef XINERAMA xineramamenu = new Xineramamenu(this); #endif // XINERAMA +#ifdef XFT + xftmenu = new Xftmenu(this); +#endif // XFT insert(i18n(ConfigmenuSet, ConfigmenuFocusModel, "Focus Model"), focusmenu); @@ -55,6 +58,10 @@ Configmenu::Configmenu(BScreen *scr) : Basemenu(scr) { #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); @@ -82,6 +89,9 @@ void Configmenu::setValues(void) { #ifdef XINERAMA ++index; #endif // XINERAMA +#ifdef XFT + ++index; +#endif // XFT setItemSelected(index++, getScreen()->doImageDither()); setItemSelected(index++, getScreen()->doOpaqueMove()); setItemSelected(index++, getScreen()->doWorkspaceWarping()); @@ -101,6 +111,9 @@ Configmenu::~Configmenu(void) { #ifdef XINERAMA delete xineramamenu; #endif // XINERAMA +#ifdef XFT + delete xftmenu; +#endif // XFT } @@ -167,6 +180,9 @@ void Configmenu::reconfigure(void) { #ifdef XINERAMA xineramamenu->reconfigure(); #endif // XINERAMA +#ifdef XFT + xftmenu->reconfigure(); +#endif // XFT Basemenu::reconfigure(); } @@ -546,3 +562,54 @@ void Configmenu::Xineramamenu::itemSelected(int button, unsigned int index) { } } #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 diff --git a/src/Configmenu.hh b/src/Configmenu.hh index 6a80ab4e..081e397f 100644 --- a/src/Configmenu.hh +++ b/src/Configmenu.hh @@ -105,6 +105,22 @@ private: }; #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; @@ -112,6 +128,9 @@ private: #ifdef XINERAMA Xineramamenu *xineramamenu; #endif // XINERAMA +#ifdef XFT + Xftmenu *xftmenu; +#endif // XFT // friend class Focusmenu; // friend class Placementmenu; @@ -134,6 +153,9 @@ public: #ifdef XINERAMA inline Basemenu *getXineramamenu(void) { return xineramamenu; } #endif // XINERAMA +#ifdef XFT + inline Basemenu *getXftmenu(void) { return xftmenu; } +#endif // XFT virtual void reconfigure(void); }; diff --git a/src/Screen.cc b/src/Screen.cc index b105b705..3ce86ec5 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -402,15 +402,15 @@ void BScreen::saveFocusLast(bool f) { 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(); } @@ -682,12 +682,13 @@ void BScreen::load_rc(void) { 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)) @@ -1676,6 +1677,9 @@ void BScreen::raiseWindows(Window *workspace_stack, unsigned int num) { #ifdef XINERAMA ++bbwins; #endif // XINERAMA +#ifdef XFT + ++bbwins; +#endif // XFT Window *session_stack = new Window[(num + workspacesList.size() + rootmenuList.size() + @@ -1699,6 +1703,9 @@ void BScreen::raiseWindows(Window *workspace_stack, unsigned int num) { #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(); -- 2.34.1