From c58a0a38b59b19eea98624f836da7630715105b9 Mon Sep 17 00:00:00 2001
From: Matt Keadle <mkeadle@gentoo.org>
Date: Sat, 26 Oct 2002 05:19:06 +0000
Subject: Added mousewheel patch

---
 ...lackbox-0.65.0-mousewheel_focus-workspace.patch | 378 +++++++++++++++++++++
 x11-wm/blackbox/files/digest-blackbox-0.65.0-r1    |   1 +
 2 files changed, 379 insertions(+)
 create mode 100644 x11-wm/blackbox/files/blackbox-0.65.0-mousewheel_focus-workspace.patch
 create mode 100644 x11-wm/blackbox/files/digest-blackbox-0.65.0-r1

(limited to 'x11-wm/blackbox/files')

diff --git a/x11-wm/blackbox/files/blackbox-0.65.0-mousewheel_focus-workspace.patch b/x11-wm/blackbox/files/blackbox-0.65.0-mousewheel_focus-workspace.patch
new file mode 100644
index 000000000000..842c60fd6d01
--- /dev/null
+++ b/x11-wm/blackbox/files/blackbox-0.65.0-mousewheel_focus-workspace.patch
@@ -0,0 +1,378 @@
+diff -urN blackbox-0.65.0/nls/C/Configmenu.m blackbox-0.65.0-wheel/nls/C/Configmenu.m
+--- blackbox-0.65.0/nls/C/Configmenu.m	2002-07-17 15:50:57.000000000 -0500
++++ blackbox-0.65.0-wheel/nls/C/Configmenu.m	2002-09-23 17:51:52.000000000 -0500
+@@ -4,6 +4,14 @@
+ # Config Options
+ $ #FocusModel
+ # Focus Model
++$ #MouseWheel
++# Mouse Wheel
++$ #ChangesFocus
++# Changes Focus
++$ #ChangesWorkspace
++# Changes Workspace
++$ #ReverseScroll
++# Reverse Scroll
+ $ #WindowPlacement
+ # Window Placement
+ $ #ImageDithering
+diff -urN blackbox-0.65.0/src/Configmenu.cc blackbox-0.65.0-wheel/src/Configmenu.cc
+--- blackbox-0.65.0/src/Configmenu.cc	2002-08-01 14:35:19.000000000 -0500
++++ blackbox-0.65.0-wheel/src/Configmenu.cc	2002-09-25 00:46:25.000000000 -0500
+@@ -37,10 +37,13 @@
+   setInternalMenu();
+ 
+   focusmenu = new Focusmenu(this);
++  wheelmenu = new Wheelmenu(this);
+   placementmenu = new Placementmenu(this);
+-
++   
+   insert(i18n(ConfigmenuSet, ConfigmenuFocusModel,
+               "Focus Model"), focusmenu);
++  insert(i18n(ConfigmenuSet, ConfigmenuMouseWheel,
++              "Mouse Wheel"), wheelmenu);
+   insert(i18n(ConfigmenuSet, ConfigmenuWindowPlacement,
+               "Window Placement"), placementmenu);
+   insert(i18n(ConfigmenuSet, ConfigmenuImageDithering,
+@@ -57,17 +60,18 @@
+               "Disable Bindings with Scroll Lock"), 6);
+   update();
+ 
+-  setItemSelected(2, getScreen()->getImageControl()->doDither());
+-  setItemSelected(3, getScreen()->doOpaqueMove());
+-  setItemSelected(4, getScreen()->doFullMax());
+-  setItemSelected(5, getScreen()->doFocusNew());
+-  setItemSelected(6, getScreen()->doFocusLast());
+-  setItemSelected(7, getScreen()->allowScrollLock());
++  setItemSelected(3, getScreen()->getImageControl()->doDither());
++  setItemSelected(4, getScreen()->doOpaqueMove());
++  setItemSelected(5, getScreen()->doFullMax());
++  setItemSelected(6, getScreen()->doFocusNew());
++  setItemSelected(7, getScreen()->doFocusLast());
++  setItemSelected(8, getScreen()->allowScrollLock());
+ }
+ 
+ 
+ Configmenu::~Configmenu(void) {
+   delete focusmenu;
++  delete wheelmenu;
+   delete placementmenu;
+ }
+ 
+@@ -131,6 +135,7 @@
+ 
+ void Configmenu::reconfigure(void) {
+   focusmenu->reconfigure();
++  wheelmenu->reconfigure();
+   placementmenu->reconfigure();
+ 
+   Basemenu::reconfigure();
+@@ -194,6 +199,53 @@
+ }
+ 
+ 
++Configmenu::Wheelmenu::Wheelmenu(Configmenu *cm) : Basemenu(cm->getScreen()) {
++  setLabel(i18n(ConfigmenuSet, ConfigmenuMouseWheel, "Mouse Wheel"));
++  setInternalMenu();
++
++  insert(i18n(ConfigmenuSet, ConfigmenuChangesFocus, "Changes Focus"), 1);
++  insert(i18n(ConfigmenuSet, ConfigmenuChangesWorkspace, "Changes Workspace"), 2);
++  insert(i18n(ConfigmenuSet, ConfigmenuReverseScroll, "Reverse Scroll"), 3);  
++  update();
++
++  setItemSelected(0, getScreen()->isChangesFocus());
++  setItemSelected(1, ! getScreen()->isChangesFocus());
++  setItemSelected(2, getScreen()->isReverseScroll());
++}
++
++
++void Configmenu::Wheelmenu::itemSelected(int button, unsigned int index) {
++  if (button != 1)
++    return;
++
++  BasemenuItem *item = find(index);
++
++  if (!item->function())
++    return;
++
++  switch (item->function()) {
++  case 1: // mouse wheel changes focus
++    getScreen()->toggleMouseWheel(BScreen::ChangesFocus);
++    break;
++
++  case 2: // mouse wheel changes workspace
++    getScreen()->toggleMouseWheel(BScreen::ChangesWorkspace);
++    break;
++
++  case 3: // reverse scroll direction
++    if (getScreen()->isReverseScroll())
++      getScreen()->toggleScroll(BScreen::Normal);
++    else
++      getScreen()->toggleScroll(BScreen::Reverse);
++    break;
++  }
++
++  setItemSelected(0, getScreen()->isChangesFocus());
++  setItemSelected(1, ! getScreen()->isChangesFocus());
++  setItemSelected(2, getScreen()->isReverseScroll());
++}
++
++
+ Configmenu::Placementmenu::Placementmenu(Configmenu *cm):
+   Basemenu(cm->getScreen()) {
+   setLabel(i18n(ConfigmenuSet, ConfigmenuWindowPlacement, "Window Placement"));
+diff -urN blackbox-0.65.0/src/Configmenu.hh blackbox-0.65.0-wheel/src/Configmenu.hh
+--- blackbox-0.65.0/src/Configmenu.hh	2002-08-01 14:36:21.000000000 -0500
++++ blackbox-0.65.0-wheel/src/Configmenu.hh	2002-09-23 03:08:31.000000000 -0500
+@@ -45,6 +45,18 @@
+     Focusmenu(Configmenu *cm);
+   };
+ 
++  class Wheelmenu : public Basemenu {
++  private:
++    Wheelmenu(const Wheelmenu&);
++    Wheelmenu& operator=(const Wheelmenu&);
++
++  protected:
++    virtual void itemSelected(int button, unsigned int index);
++
++  public:
++    Wheelmenu(Configmenu *cm);
++  };
++
+   class Placementmenu : public Basemenu {
+   private:
+     Placementmenu(const Placementmenu&);
+@@ -59,9 +71,11 @@
+   };
+ 
+   Focusmenu *focusmenu;
++  Wheelmenu *wheelmenu;
+   Placementmenu *placementmenu;
+ 
+   friend class Focusmenu;
++  friend class Wheelmenu;
+   friend class Placementmenu;
+ 
+   Configmenu(const Configmenu&);
+@@ -75,6 +89,7 @@
+   virtual ~Configmenu(void);
+ 
+   inline Basemenu *getFocusmenu(void) { return focusmenu; }
++  inline Basemenu *getWheelmenu(void) { return wheelmenu; }
+   inline Basemenu *getPlacementmenu(void) { return placementmenu; }
+ 
+   void reconfigure(void);
+diff -urN blackbox-0.65.0/src/Screen.cc blackbox-0.65.0-wheel/src/Screen.cc
+--- blackbox-0.65.0/src/Screen.cc	2002-09-04 12:15:58.000000000 -0500
++++ blackbox-0.65.0-wheel/src/Screen.cc	2002-09-25 02:49:54.000000000 -0500
+@@ -997,6 +997,7 @@
+   *(session_stack + i++) = workspacemenu->getWindowID();
+ 
+   *(session_stack + i++) = configmenu->getFocusmenu()->getWindowID();
++  *(session_stack + i++) = configmenu->getWheelmenu()->getWindowID();
+   *(session_stack + i++) = configmenu->getPlacementmenu()->getWindowID();
+   *(session_stack + i++) = configmenu->getWindowID();
+ 
+@@ -1120,7 +1121,7 @@
+       focused->getScreen()->getScreenNumber() == getScreenNumber() &&
+       current_workspace->getCount() > 1) {
+     do {
+-      next = current_workspace->getNextWindowInList(next);
++      next = current_workspace->getPrevWindowInList(next);
+     } while(next != focused && ! next->setInputFocus());
+ 
+     if (next != focused)
+@@ -1741,6 +1742,46 @@
+       blackbox->checkMenu();
+       rootmenu->show();
+     }
++
++  //mouse wheel up
++  } else if (xbutton->button == 4) {
++    if (this->isReverseScroll()) {
++      if (this->isChangesFocus())
++        this->nextFocus();
++      else
++        if (getCurrentWorkspaceID() >= getWorkspaceCount() - 1)
++          changeWorkspaceID(0);
++        else
++          changeWorkspaceID(getCurrentWorkspaceID() + 1);
++    } else {
++      if (this->isChangesFocus())
++        this->prevFocus();
++      else
++        if (getCurrentWorkspaceID() == 0)
++          changeWorkspaceID(getWorkspaceCount() - 1);
++        else
++          changeWorkspaceID(getCurrentWorkspaceID() - 1);
++    }
++
++  // mouse wheel down          
++  } else if (xbutton->button == 5) {
++    if (this->isReverseScroll()) {
++      if (this->isChangesFocus())
++        this->prevFocus();
++      else
++        if (getCurrentWorkspaceID() == 0)
++          changeWorkspaceID(getWorkspaceCount() - 1);
++        else
++          changeWorkspaceID(getCurrentWorkspaceID() - 1);
++    } else {
++      if (this->isChangesFocus())
++        this->nextFocus();
++      else
++        if (getCurrentWorkspaceID() >= getWorkspaceCount() - 1)
++          changeWorkspaceID(0);
++        else
++          changeWorkspaceID(getCurrentWorkspaceID() + 1);
++    }
+   }
+ }
+ 
+@@ -1762,6 +1803,26 @@
+ }
+ 
+ 
++void BScreen::toggleMouseWheel(MouseWheel model) {
++
++  if (model == ChangesFocus) {
++    saveChangesFocus(True);
++  } else {
++    saveChangesFocus(False);
++  }
++}
++
++
++void BScreen::toggleScroll(Scroll model) {
++
++  if (model == Normal) {
++    saveReverseScroll(False);
++  } else {
++    saveReverseScroll(True);
++  }
++}
++
++
+ BTexture BScreen::readDatabaseTexture(const string &rname,
+                                       const string &rclass,
+                                       const string &default_color) {
+diff -urN blackbox-0.65.0/src/Screen.hh blackbox-0.65.0-wheel/src/Screen.hh
+--- blackbox-0.65.0/src/Screen.hh	2002-09-04 12:15:26.000000000 -0500
++++ blackbox-0.65.0-wheel/src/Screen.hh	2002-09-25 00:52:15.000000000 -0500
+@@ -149,7 +149,8 @@
+ 
+     bool toolbar_on_top, toolbar_auto_hide, sloppy_focus, auto_raise,
+       auto_edge_balance, image_dither, ordered_dither, opaque_move, full_max,
+-      focus_new, focus_last, click_raise, allow_scroll_lock;
++      focus_new, focus_last, click_raise, allow_scroll_lock, changes_focus,
++      reverse_scroll;
+     BColor border_color;
+     XrmDatabase stylerc;
+ 
+@@ -200,6 +201,8 @@
+          WindowShade, WindowIconify, WindowMaximize, WindowClose, WindowRaise,
+          WindowLower, WindowStick, WindowKill, SetStyle };
+   enum FocusModel { SloppyFocus, ClickToFocus };
++  enum MouseWheel { ChangesFocus, ChangesWorkspace };
++  enum Scroll { Normal, Reverse };
+ 
+   BScreen(Blackbox *bb, unsigned int scrn);
+   ~BScreen(void);
+@@ -210,6 +213,10 @@
+   { return resource.toolbar_auto_hide; }
+   inline bool isSloppyFocus(void) const
+   { return resource.sloppy_focus; }
++  inline bool isChangesFocus(void) const
++  { return resource.changes_focus; }
++  inline bool isReverseScroll(void) const
++  { return resource.reverse_scroll; }
+   inline bool isRootColormapInstalled(void) const
+   { return root_colormap_installed; }
+   inline bool doAutoRaise(void) const { return resource.auto_raise; }
+@@ -284,6 +291,8 @@
+ 
+   inline void setRootColormapInstalled(bool r) { root_colormap_installed = r; }
+   inline void saveSloppyFocus(bool s) { resource.sloppy_focus = s; }
++  inline void saveChangesFocus(bool s) { resource.changes_focus = s; }
++  inline void saveReverseScroll(bool s) { resource.reverse_scroll = s; }
+   inline void saveAutoRaise(bool a) { resource.auto_raise = a; }
+   inline void saveClickRaise(bool c) { resource.click_raise = c; }
+   inline void saveWorkspaces(unsigned int w) { resource.workspaces = w; }
+@@ -352,6 +361,8 @@
+   void raiseFocus(void) const;
+   void reconfigure(void);
+   void toggleFocusModel(FocusModel model);
++  void toggleMouseWheel(MouseWheel model);
++  void toggleScroll(Scroll model);
+   void rereadMenu(void);
+   void shutdown(void);
+   void showPosition(int x, int y);
+diff -urN blackbox-0.65.0/src/Window.cc blackbox-0.65.0-wheel/src/Window.cc
+--- blackbox-0.65.0/src/Window.cc	2002-09-17 10:23:35.000000000 -0500
++++ blackbox-0.65.0-wheel/src/Window.cc	2002-09-25 02:54:17.000000000 -0500
+@@ -2663,6 +2663,12 @@
+       XRaiseWindow(blackbox->getXDisplay(),
+                    windowmenu->getSendToMenu()->getWindowID());
+     }
++  } else if (be->button == 4)  { //mouse wheel shade
++    if ((be->window == frame.label || be->window == frame.title) && ! flags.shaded)
++      shade();
++  } else if (be->button == 5)  { //mouse wheel unshade
++    if ((be->window == frame.label || be->window == frame.title) && flags.shaded)
++    shade();
+   }
+ }
+ 
+diff -urN blackbox-0.65.0/src/blackbox.cc blackbox-0.65.0-wheel/src/blackbox.cc
+--- blackbox-0.65.0/src/blackbox.cc	2002-08-25 05:05:45.000000000 -0500
++++ blackbox-0.65.0-wheel/src/blackbox.cc	2002-09-24 18:16:57.000000000 -0500
+@@ -1068,6 +1068,20 @@
+             fmodel.c_str());
+     XrmPutLineResource(&new_blackboxrc, rc_string);
+ 
++    string mwheel;
++    if (screen->isChangesFocus()) {
++      mwheel = "ChangesFocus";
++    } else {
++      mwheel = "ChangesWorkspace";
++    }
++    sprintf(rc_string, "session.screen%d.mouseWheel:  %s", screen_number,
++            mwheel.c_str());
++    XrmPutLineResource(&new_blackboxrc, rc_string);
++
++    sprintf(rc_string, "session.screen%d.reverseScroll: %s", screen_number,
++            ((screen->isReverseScroll()) ? "True" : "False"));
++    XrmPutLineResource(&new_blackboxrc, rc_string);
++
+     sprintf(rc_string, "session.screen%d.workspaces:  %d", screen_number,
+             screen->getWorkspaceCount());
+     XrmPutLineResource(&new_blackboxrc, rc_string);
+@@ -1380,6 +1394,27 @@
+     }
+   }
+ 
++  sprintf(name_lookup,  "session.screen%d.mouseWheel", screen_number);
++  sprintf(class_lookup, "Session.Screen%d.MouseWheel", screen_number);
++  screen->saveChangesFocus(True);
++  if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
++                     &value)) {
++    string mwheel = value.addr;
++
++    if (mwheel.find("ChangesWorkspace") != string::npos) {
++      screen->saveChangesFocus(False);
++    }
++  }
++
++  sprintf(name_lookup, "session.screen%d.reverseScroll", screen_number);
++  sprintf(class_lookup, "Session.Screen%d.ReverseScroll", screen_number);
++  screen->saveReverseScroll(False);
++  if (XrmGetResource(database, name_lookup, class_lookup, &value_type,
++                     &value) &&
++      ! strncasecmp(value.addr, "true", value.size)) {
++    screen->saveReverseScroll(True);
++  }
++
+   sprintf(name_lookup,  "session.screen%d.windowPlacement", screen_number);
+   sprintf(class_lookup, "Session.Screen%d.WindowPlacement", screen_number);
+   screen->savePlacementPolicy(BScreen::RowSmartPlacement);
diff --git a/x11-wm/blackbox/files/digest-blackbox-0.65.0-r1 b/x11-wm/blackbox/files/digest-blackbox-0.65.0-r1
new file mode 100644
index 000000000000..ac23630d0dc1
--- /dev/null
+++ b/x11-wm/blackbox/files/digest-blackbox-0.65.0-r1
@@ -0,0 +1 @@
+MD5 08560fa287c68d65fbe894696d04deaf blackbox-0.65.0.tar.gz 292950
-- 
cgit v1.2.3-65-gdbad