classification
Title: IDLE: Remove tear-off menu feature
Type: enhancement Stage: resolved
Components: IDLE Versions: Python 3.6, Python 3.5, Python 3.4, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: Todd.Rovito, ezio.melotti, markroseman, mcgrete, ned.deily, python-dev, roger.serwy, serhiy.storchaka, taleinat, terry.reedy
Priority: normal Keywords: patch

Created on 2012-01-26 23:41 by mcgrete, last changed 2015-07-30 21:11 by terry.reedy. This issue is now closed.

Files
File name Uploaded Description Edit
IDLE2.6.5_RecentFilesUndocked.png mcgrete, 2012-01-26 23:41 screen capture
issue13884.patch roger.serwy, 2012-01-28 21:54 review
tearoff.patch markroseman, 2015-07-29 19:42 Remove tearoff menus review
tearoff27.patch markroseman, 2015-07-29 19:42 Remove tearoff menus, 2.7 branch review
Messages (16)
msg152050 - (view) Author: Tim McGreevy (mcgrete) Date: 2012-01-26 23:41
When selecting from menu:
File --> Recent Files
the 'Recent Files' dropdown list undocks from the IDLE gui / File dropdown list.  Even after selecting a past file, it remains open until closed manually.

Ubuntu LUCID
amd64
IDLE 2.6.5
TK version 8.5
All installed using Ubuntu supported PPA (Synaptic)

After closing 'Recent Files' subwindow, problem no longer persists until IDLE is terminated and restarted.
msg152054 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2012-01-26 23:58
Could you try with IDLE 2.7/3.2?
msg152067 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2012-01-27 06:45
IDLE has tear-off menus. From Help/IDLE Help:
"Click on the dotted line at the top of a menu to "tear it off":
a separate window containing the menu is created."
This is a feature, not a bug.

On 3.2.2, Win7, the Recent Files sub-menu cannot be torn off unless and until the File menu is torn off.
msg152192 - (view) Author: Roger Serwy (roger.serwy) * (Python committer) Date: 2012-01-28 21:54
Should tear-off menus still be a feature?  This relates to the #13504 meta-issue, in particular entry "4) ANNOYANCE: Get rid of the detachable menus feature.."

Attached is patch against 3.3a0 to disable tear-off menus. (It also makes modifications to Mac-specific code, but I can't test it since I don't have a Mac.)
msg173284 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2012-10-18 17:04
I wonder if anyone uses this feature and would miss it if gone. Since it is a simple matter of passing 'tearoff=0/1' on menu creation, perhaps it should be a configuration feature.
msg173291 - (view) Author: Todd Rovito (Todd.Rovito) * Date: 2012-10-18 19:54
Terry,
   I would not miss the feature at all this is very old school Unix like and most people find it confusing.  At my job I tend to provide Python support to my co-workers and have had many questions about it. In addition I think #13504 meta issue provides even more evidence that removing the tear off menus would be a good thing.  Something to consider with IDLE is it is often the first thing a user sees when using Python and first impressions count in most circumstances. IDLE could be much improved and Roger Serwy has a good start on improvements with his IdleX project.  Thanks for the review and I for one would appreciate this patch getting committed.
msg173293 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2012-10-18 20:12
Yes, please, make it a configuration feature (off by default). Tear-off menus useful for large and deeply nested menus. Do not forget about people with disabilities.
msg173300 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-10-18 21:53
Keep in mind that tear-off menus are not supported on IDLE on OS X when using Aqua Tk (either Carbon or Cocoa), the standard these days.  That's primarily because Aqua Tk uses native OS X menu bars which appear once at the top of the desktop, not in each window.  There are no dotted line menu bars there.  The desktop menu bar menu items change to reflect which window currently has keyboard focus.
msg230381 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2014-10-31 19:27
I haven't seen any other program using it, so I wouldn't mind if they were removed.  People with disabilities probably have better ways to deal with menus, but if adding the option is trivial it's probably better to add it.
msg247611 - (view) Author: Mark Roseman (markroseman) * Date: 2015-07-29 19:42
As indicated in prior comments, the tearoff menus are strictly a holdover from ancient Motif, and are no longer found in current user interfaces on any platform. Because of that, I would strongly support deleting them altogether, rather than making available a configuration option.

I've updated Roger's patch for current 3.x tip (and also extended it to remove the reference to tearoff menus from the help file).
msg247612 - (view) Author: Mark Roseman (markroseman) * Date: 2015-07-29 19:42
Same changes for 2.7 branch
msg247649 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-07-30 03:39
In your online tutorial, your recommend
  root.option_add('*tearOff', FALSE)
Why not here, and be covered everywhere, and in the future?
Or is this needed for each Toplevel?
msg247661 - (view) Author: Tal Einat (taleinat) * (Python committer) Date: 2015-07-30 11:28
+1 for removal.
msg247676 - (view) Author: Mark Roseman (markroseman) * Date: 2015-07-30 14:52
Doing it via the option database vs. on each menu would be my preferred approach. The option database is global, not per toplevel, so would cover everything. Only 'downside' is the whole its-not-an-application-its-a-library thing, though in the highly unlikely case someone was actually using idlelib this way, I'd consider setting that option a public service.

There's no harm doing it the other way (and I was being polite since the previous patch was done that way), but it does very marginally increase maintainability difficulties (remembering to keep the option and add it to any future menus).

Either way - please let's just make this change! :-)
msg247694 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-07-30 20:45
New changeset bead9330438c by Terry Jan Reedy in branch '2.7':
Issue #13884: Idle: Remove tearoff lines from menus. Patch by Roger Serwy.
https://hg.python.org/cpython/rev/bead9330438c

New changeset 6eb4441ed14b by Terry Jan Reedy in branch '3.4':
Issue #13884: Idle: Remove tearoff lines from menus. Patch by Roger Serwy.
https://hg.python.org/cpython/rev/6eb4441ed14b
msg247697 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-07-30 20:58
I decided the accessibility argument does not apply because a) there is only one nested menu, Recent files b) that menu can be very wide and I intend to make it longer, making it a bad candidate for staying on the screen, and c) when torn off, it did not seem accessible from the keyboard.

I decided to keep the patch as is, with tearoff disabled at the point of submenu creation.  Setting the option on root is no easier when there are multiple Tk() calls.  There may be more than one for normal Idle execution.  There are many for testing, and we want the option set for tests.
History
Date User Action Args
2015-07-30 21:11:24terry.reedysetassignee: terry.reedy
2015-07-30 20:58:05terry.reedysetstatus: open -> closed
resolution: fixed
messages: + msg247697

stage: patch review -> resolved
2015-07-30 20:45:19python-devsetnosy: + python-dev
messages: + msg247694
2015-07-30 14:52:07markrosemansetmessages: + msg247676
2015-07-30 11:28:26taleinatsetnosy: + taleinat
messages: + msg247661
2015-07-30 03:39:41terry.reedysetmessages: + msg247649
versions: + Python 3.6
2015-07-29 19:42:52markrosemansetfiles: + tearoff27.patch

messages: + msg247612
2015-07-29 19:42:13markrosemansetfiles: + tearoff.patch
nosy: + markroseman
messages: + msg247611

2014-10-31 19:27:47ezio.melottisetmessages: + msg230381
2014-10-20 04:59:27terry.reedylinkissue13504 dependencies
2014-10-03 03:50:10terry.reedysetversions: + Python 2.7, Python 3.5
2012-10-18 21:53:23ned.deilysetnosy: + ned.deily
messages: + msg173300
2012-10-18 20:12:35serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg173293
2012-10-18 19:54:46Todd.Rovitosetmessages: + msg173291
2012-10-18 17:04:19terry.reedysetmessages: + msg173284
2012-10-18 16:57:29terry.reedysettitle: IDLE 2.6.5 Recent Files undocks -> IDLE: Remove tear-off menu feature
stage: patch review
type: enhancement
versions: + Python 3.4, - Python 2.6
2012-10-18 16:05:45Todd.Rovitosetnosy: + Todd.Rovito
2012-01-28 21:54:03roger.serwysetfiles: + issue13884.patch

nosy: + roger.serwy
messages: + msg152192

keywords: + patch
2012-01-27 06:45:39terry.reedysetmessages: + msg152067
2012-01-26 23:58:20ezio.melottisetnosy: + ezio.melotti, terry.reedy
messages: + msg152054
2012-01-26 23:41:03mcgretecreate