From 646ff72cdcc3ea5512e22ce979de5e0366e5075e Mon Sep 17 00:00:00 2001 From: PlutonicOverkill Date: Wed, 10 May 2017 20:27:50 +1200 Subject: [PATCH] Add a more elegant way of showing the context menu --- apps/opencs/view/prefs/page.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/apps/opencs/view/prefs/page.cpp b/apps/opencs/view/prefs/page.cpp index 418f07ac8..09191a436 100644 --- a/apps/opencs/view/prefs/page.cpp +++ b/apps/opencs/view/prefs/page.cpp @@ -10,22 +10,20 @@ CSVPrefs::Page::Page (CSMPrefs::Category& category, QWidget *parent) : PageBase (category, parent) { - CSVPrefs::ContextMenuWidget *widget = new CSVPrefs::ContextMenuWidget (category.getKey(), parent); + // topWidget can expand while widget stays the same size + // This is so the context menu triggers over the entire page + // but the user interface looks the same + CSVPrefs::ContextMenuWidget *topWidget = new CSVPrefs::ContextMenuWidget (category.getKey(), parent); + topWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + QWidget* widget = new QWidget(topWidget); mGrid = new QGridLayout (widget); for (CSMPrefs::Category::Iterator iter = category.begin(); iter!=category.end(); ++iter) addSetting (*iter); - // HACK to get widget to consume all available page space so context menu clicks - // will trigger, but so that setting widgets still only take up the left hand side - QWidget* emptyColumn = new QWidget(); - mGrid->addWidget(emptyColumn, 0, 2, -1, 1); - QWidget* emptyRow = new QWidget(); - emptyRow->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding); - mGrid->addWidget(emptyRow, mGrid->rowCount(), 0, 1, -1); - setWidgetResizable(true); - setWidget (widget); + setWidget (topWidget); } void CSVPrefs::Page::addSetting (CSMPrefs::Setting *setting)