forked from osmocom/wireshark
Fix QCocoaMenu errors.
In PacketList and ProtoTree, create our own QMenus instead of stealing actions from the main window. This only fixes the errors listed in bug 10890. Add "to do" items for other bugs. Bug: 10890 Change-Id: I1c7ce8e4b863de95b2836e0cdcfb25824fe21edd Reviewed-on: https://code.wireshark.org/review/9760 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
parent
dc6d376f67
commit
da5eba636a
|
@ -74,6 +74,8 @@
|
|||
#include <QTreeWidget>
|
||||
|
||||
// To do:
|
||||
// - Fix "apply as filter" behavior.
|
||||
// - Add colorize conversation.
|
||||
// - Use a timer to trigger automatic scrolling.
|
||||
|
||||
// If we ever add the ability to open multiple capture files we might be
|
||||
|
@ -240,7 +242,7 @@ PacketList::PacketList(QWidget *parent) :
|
|||
tail_timer_id_(0),
|
||||
rows_inserted_(false)
|
||||
{
|
||||
QMenu *submenu, *subsubmenu;
|
||||
QMenu *main_menu_item, *submenu, *subsubmenu;
|
||||
QAction *action;
|
||||
|
||||
setItemsExpandable(false);
|
||||
|
@ -270,18 +272,15 @@ PacketList::PacketList(QWidget *parent) :
|
|||
ctx_menu_.addAction(window()->findChild<QAction *>("actionViewEditResolvedName"));
|
||||
ctx_menu_.addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionFollow");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
main_menu_item = window()->findChild<QMenu *>("menuFollow");
|
||||
submenu = new QMenu(main_menu_item->title());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowTCPStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowUDPStream"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowSSLStream"));
|
||||
|
||||
action = window()->findChild<QAction *>("actionSCTP");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
main_menu_item = window()->findChild<QMenu *>("menuSCTP");
|
||||
submenu = new QMenu(main_menu_item->title());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPAnalyseThisAssociation"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionSCTPShowAllAssociations"));
|
||||
|
@ -290,9 +289,8 @@ PacketList::PacketList(QWidget *parent) :
|
|||
ctx_menu_.addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionApply_as_Filter");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
submenu = new QMenu(action->text());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndSelected"));
|
||||
|
@ -301,9 +299,8 @@ PacketList::PacketList(QWidget *parent) :
|
|||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrNotSelected"));
|
||||
|
||||
action = window()->findChild<QAction *>("actionPrepare_a_Filter");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
submenu = new QMenu(action->text());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndSelected"));
|
||||
|
@ -392,18 +389,17 @@ PacketList::PacketList(QWidget *parent) :
|
|||
ctx_menu_.addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionCopy");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
submenu = new QMenu(action->text());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
// " <menuitem name='SummaryTxt' action='/Copy/SummaryTxt'/>\n"
|
||||
// " <menuitem name='SummaryCSV' action='/Copy/SummaryCSV'/>\n"
|
||||
submenu->addAction(window()->findChild<QAction *>("actionEditCopyAsFilter"));
|
||||
submenu->addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionBytes");
|
||||
subsubmenu = new QMenu();
|
||||
action->setMenu(subsubmenu);
|
||||
submenu->addAction(action);
|
||||
subsubmenu = new QMenu(action->text());
|
||||
submenu->addMenu(subsubmenu);
|
||||
|
||||
// " <menuitem name='OffsetHexText' action='/Copy/Bytes/OffsetHexText'/>\n"
|
||||
// " <menuitem name='OffsetHex' action='/Copy/Bytes/OffsetHex'/>\n"
|
||||
// " <menuitem name='PrintableTextOnly' action='/Copy/Bytes/PrintableTextOnly'/>\n"
|
||||
|
|
|
@ -35,6 +35,10 @@
|
|||
#include <QTreeWidgetItemIterator>
|
||||
#include <QUrl>
|
||||
|
||||
// To do:
|
||||
// - Fix "apply as filter" behavior.
|
||||
// - Add colorize conversation.
|
||||
|
||||
/* Fill a single protocol tree item with its string value and set its color. */
|
||||
static void
|
||||
proto_tree_draw_node(proto_node *node, gpointer data)
|
||||
|
@ -149,9 +153,6 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
QTreeWidget(parent),
|
||||
decode_as_(NULL)
|
||||
{
|
||||
QMenu *submenu, *subsubmenu;
|
||||
QAction *action;
|
||||
|
||||
setAccessibleName(tr("Packet details"));
|
||||
// Leave the uniformRowHeights property as-is (false) since items might
|
||||
// have multiple lines (e.g. packet comments). If this slows things down
|
||||
|
@ -163,6 +164,9 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
// Assume we're a child of the main window.
|
||||
// XXX We might want to reimplement setParent() and fill in the context
|
||||
// menu there.
|
||||
QMenu *submenu, *subsubmenu;
|
||||
QAction *action;
|
||||
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionViewExpandSubtrees"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionViewExpandAll"));
|
||||
ctx_menu_.addAction(window()->findChild<QAction *>("actionViewCollapseAll"));
|
||||
|
@ -173,10 +177,8 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
ctx_menu_.addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionApply_as_Filter");
|
||||
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
submenu = new QMenu(action->text());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndSelected"));
|
||||
|
@ -185,9 +187,8 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrNotSelected"));
|
||||
|
||||
action = window()->findChild<QAction *>("actionPrepare_a_Filter");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
submenu = new QMenu(action->text());
|
||||
ctx_menu_.addMenu(submenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFNotSelected"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndSelected"));
|
||||
|
@ -221,9 +222,8 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
ctx_menu_.addSeparator();
|
||||
|
||||
action = window()->findChild<QAction *>("actionCopy");
|
||||
submenu = new QMenu();
|
||||
action->setMenu(submenu);
|
||||
ctx_menu_.addAction(action);
|
||||
subsubmenu = new QMenu(action->text());
|
||||
submenu->addMenu(subsubmenu);
|
||||
submenu->addAction(window()->findChild<QAction *>("actionCopyAllVisibleItems"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionCopyAllVisibleSelectedTreeItems"));
|
||||
submenu->addAction(window()->findChild<QAction *>("actionEditCopyDescription"));
|
||||
|
@ -233,9 +233,8 @@ ProtoTree::ProtoTree(QWidget *parent) :
|
|||
submenu->addAction(window()->findChild<QAction *>("actionEditCopyAsFilter"));
|
||||
|
||||
action = window()->findChild<QAction *>("actionBytes");
|
||||
subsubmenu = new QMenu();
|
||||
action->setMenu(subsubmenu);
|
||||
submenu->addAction(action);
|
||||
subsubmenu = new QMenu(action->text());
|
||||
submenu->addMenu(subsubmenu);
|
||||
subsubmenu->addSeparator();
|
||||
// " <menu name= 'Bytes' action='/Copy/Bytes'>\n"
|
||||
// " <menuitem name='OffsetHexText' action='/Copy/Bytes/OffsetHexText'/>\n"
|
||||
|
|
Loading…
Reference in New Issue