|
|
83322e0 |
--- WindowMaker-0.91.0/src/menu.c.vns 2005-05-18 21:46:03 +0400
|
|
|
83322e0 |
+++ WindowMaker-0.91.0/src/menu.c 2005-05-18 21:46:03 +0400
|
|
|
83322e0 |
@@ -2077,6 +2077,7 @@
|
|
|
83322e0 |
static void
|
|
|
83322e0 |
menuMouseDown(WObjDescriptor *desc, XEvent *event)
|
|
|
83322e0 |
{
|
|
|
83322e0 |
+ WWindow *wwin; // ADDED BY HMEPAS FOR sw_rclick
|
|
|
83322e0 |
XButtonEvent *bev = &event->xbutton;
|
|
|
83322e0 |
WMenu *menu = desc->parent;
|
|
|
83322e0 |
WMenu *smenu;
|
|
|
83322e0 |
@@ -2160,7 +2161,27 @@
|
|
|
83322e0 |
}
|
|
|
83322e0 |
|
|
|
83322e0 |
} else if (!delayed_select) {
|
|
|
83322e0 |
- selectEntry(menu, entry_no);
|
|
|
83322e0 |
+ // ADDED BY HMEPAS
|
|
|
83322e0 |
+ // FOR WindowMenu open by right click on
|
|
|
83322e0 |
+ // switchmenu entry
|
|
|
83322e0 |
+ if( menu == scr->switch_menu && event->xbutton.button == Button3 ) {
|
|
|
83322e0 |
+ selectEntry(menu, entry_no);
|
|
|
83322e0 |
+ OpenWindowMenu2( (WWindow*)entry->clientdata,
|
|
|
83322e0 |
+ event->xbutton.x_root,
|
|
|
83322e0 |
+ event->xbutton.y_root, False);
|
|
|
83322e0 |
+ wwin = (WWindow*)entry->clientdata;
|
|
|
83322e0 |
+ desc = &wwin->screen_ptr->window_menu->menu->descriptor;
|
|
|
83322e0 |
+ event->xany.send_event = True;
|
|
|
83322e0 |
+ (*desc->handle_mousedown)(desc, event);
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ XUngrabPointer(dpy, CurrentTime);
|
|
|
83322e0 |
+ selectEntry(menu, -1);
|
|
|
83322e0 |
+ return;
|
|
|
83322e0 |
+ }
|
|
|
83322e0 |
+ else {
|
|
|
83322e0 |
+ selectEntry(menu, entry_no);
|
|
|
83322e0 |
+ }
|
|
|
83322e0 |
+ // END OF HMEPAS PATCH
|
|
|
83322e0 |
}
|
|
|
83322e0 |
|
|
|
83322e0 |
if (!wPreferences.wrap_menus && !wPreferences.scrollable_menus) {
|
|
|
83322e0 |
--- WindowMaker-0.91.0/src/funcs.h.vns 2004-10-14 22:03:28 +0400
|
|
|
83322e0 |
+++ WindowMaker-0.91.0/src/funcs.h 2005-05-18 21:46:03 +0400
|
|
|
83322e0 |
@@ -65,6 +65,13 @@
|
|
|
83322e0 |
|
|
|
83322e0 |
void OpenWindowMenu(WWindow *wwin, int x, int y, int keyboard);
|
|
|
83322e0 |
|
|
|
83322e0 |
+// THIS IS NEED FOR MY SW_RIGHT CLICK PATCH
|
|
|
83322e0 |
+// (FOR MOVING WINDOW FROM ANOTHER WORKSPACE TO
|
|
|
83322e0 |
+// CURRENT) ON NATIVE FUNCTION MOVE TO CURRENT
|
|
|
83322e0 |
+// WORKSPACE IS DISABLED
|
|
|
83322e0 |
+// HMEPAS
|
|
|
83322e0 |
+void OpenWindowMenu2(WWindow *wwin, int x, int y, int keyboard);
|
|
|
83322e0 |
+
|
|
|
83322e0 |
void OpenMiniwindowMenu(WWindow *wwin, int x, int y);
|
|
|
83322e0 |
|
|
|
83322e0 |
void OpenWorkspaceMenu(WScreen *scr, int x, int y);
|
|
|
83322e0 |
--- WindowMaker-0.91.0/src/winmenu.c.vns 2004-10-21 07:21:16 +0400
|
|
|
83322e0 |
+++ WindowMaker-0.91.0/src/winmenu.c 2005-05-18 21:52:50 +0400
|
|
|
83322e0 |
@@ -619,7 +619,6 @@
|
|
|
83322e0 |
wMenuRealize(menu);
|
|
|
83322e0 |
}
|
|
|
83322e0 |
|
|
|
83322e0 |
-
|
|
|
83322e0 |
void
|
|
|
83322e0 |
OpenWindowMenu(WWindow *wwin, int x, int y, int keyboard)
|
|
|
83322e0 |
{
|
|
|
83322e0 |
@@ -650,10 +649,46 @@
|
|
|
83322e0 |
updateMenuForWindow(menu, wwin);
|
|
|
83322e0 |
|
|
|
83322e0 |
x -= menu->frame->core->width/2;
|
|
|
83322e0 |
- if (x + menu->frame->core->width > wwin->frame_x+wwin->frame->core->width)
|
|
|
83322e0 |
- x = wwin->frame_x+wwin->frame->core->width - menu->frame->core->width;
|
|
|
83322e0 |
- if (x < wwin->frame_x)
|
|
|
83322e0 |
- x = wwin->frame_x;
|
|
|
83322e0 |
+ if (!wwin->flags.internal_window)
|
|
|
83322e0 |
+ wMenuMapAt(menu, x, y, keyboard);
|
|
|
83322e0 |
+}
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+void
|
|
|
83322e0 |
+OpenWindowMenu2(WWindow *wwin, int x, int y, int keyboard)
|
|
|
83322e0 |
+{
|
|
|
83322e0 |
+ int i;
|
|
|
83322e0 |
+ WMenu *menu;
|
|
|
83322e0 |
+ WScreen *scr = wwin->screen_ptr;
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ wwin->flags.menu_open_for_me = 1;
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ if (!scr->window_menu) {
|
|
|
83322e0 |
+ scr->window_menu = createWindowMenu(scr);
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ /* hack to save some memory allocation/deallocation */
|
|
|
83322e0 |
+ wfree(scr->window_menu->entries[MC_MINIATURIZE]->text);
|
|
|
83322e0 |
+ wfree(scr->window_menu->entries[MC_MAXIMIZE]->text);
|
|
|
83322e0 |
+ wfree(scr->window_menu->entries[MC_SHADE]->text);
|
|
|
83322e0 |
+ } else {
|
|
|
83322e0 |
+ updateWorkspaceMenu(scr->workspace_submenu);
|
|
|
83322e0 |
+ }
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ menu = scr->window_menu;
|
|
|
83322e0 |
+ if (menu->flags.mapped) {
|
|
|
83322e0 |
+ wMenuUnmap(menu);
|
|
|
83322e0 |
+ if (menu->entries[0]->clientdata==wwin) {
|
|
|
83322e0 |
+ return;
|
|
|
83322e0 |
+ }
|
|
|
83322e0 |
+ }
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ updateMenuForWindow(menu, wwin);
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ for (i = 0; i < scr->workspace_submenu->entry_no; i++) {
|
|
|
83322e0 |
+ scr->workspace_submenu->entries[i]->clientdata = wwin;
|
|
|
83322e0 |
+ wMenuSetEnabled(scr->workspace_submenu, i, True);
|
|
|
83322e0 |
+ }
|
|
|
83322e0 |
+
|
|
|
83322e0 |
+ x -= menu->frame->core->width/2;
|
|
|
83322e0 |
|
|
|
83322e0 |
if (!wwin->flags.internal_window)
|
|
|
83322e0 |
wMenuMapAt(menu, x, y, keyboard);
|