Skip to content

Commit

Permalink
Fixed|Refactor|UI|Client: Widget improvements
Browse files Browse the repository at this point in the history
- Use CVarToggleWidget in Video Settings
- Menu eats mouse position events (to avoid "leaking" them to widgets
  underneath)
- Adjusted margins for the dialog heading
  • Loading branch information
skyjake committed Sep 2, 2013
1 parent 2dc8092 commit 1b9f45b
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 21 deletions.
2 changes: 0 additions & 2 deletions doomsday/client/include/ui/dialogs/videosettingsdialog.h
Expand Up @@ -32,8 +32,6 @@ class VideoSettingsDialog : public DialogWidget
VideoSettingsDialog(de::String const &name = "videosettings");

protected slots:
void toggleAntialias();
void toggleVerticalSync();
void changeMode(uint selected);
void changeColorDepth(uint selected);
void showColorAdjustments();
Expand Down
1 change: 1 addition & 0 deletions doomsday/client/include/ui/widgets/menuwidget.h
Expand Up @@ -118,6 +118,7 @@ class MenuWidget : public ScrollAreaWidget

// Events.
void update();
bool handleEvent(de::Event const &event);

public slots:
void dismissPopups();
Expand Down
28 changes: 9 additions & 19 deletions doomsday/client/src/ui/dialogs/videosettingsdialog.cpp
Expand Up @@ -18,6 +18,7 @@

#include "ui/dialogs/videosettingsdialog.h"
#include "ui/widgets/variabletogglewidget.h"
#include "ui/widgets/cvartogglewidget.h"
#include "ui/widgets/choicewidget.h"
#include "ui/widgets/taskbarwidget.h"
#include "SequentialLayout"
Expand Down Expand Up @@ -46,8 +47,8 @@ DENG2_OBSERVES(PersistentCanvasWindow, AttributeChange)
ToggleWidget *fullscreen;
ToggleWidget *maximized;
ToggleWidget *centered;
ToggleWidget *fsaa;
ToggleWidget *vsync;
CVarToggleWidget *fsaa;
CVarToggleWidget *vsync;
ChoiceWidget *modes;
#ifdef USE_COLOR_DEPTH_CHOICE
ChoiceWidget *depths;
Expand All @@ -61,8 +62,8 @@ DENG2_OBSERVES(PersistentCanvasWindow, AttributeChange)
area.add(fullscreen = new ToggleWidget);
area.add(maximized = new ToggleWidget);
area.add(centered = new ToggleWidget);
area.add(fsaa = new ToggleWidget);
area.add(vsync = new ToggleWidget);
area.add(fsaa = new CVarToggleWidget("vid-fsaa"));
area.add(vsync = new CVarToggleWidget("vid-vsync"));
area.add(modes = new ChoiceWidget);
#ifdef USE_COLOR_DEPTH_CHOICE
area.add(depths = new ChoiceWidget);
Expand All @@ -83,8 +84,8 @@ DENG2_OBSERVES(PersistentCanvasWindow, AttributeChange)
fullscreen->setActive(win.isFullScreen());
maximized->setActive(win.isMaximized());
centered->setActive(win.isCentered());
fsaa->setActive(Con_GetInteger("vid-fsaa") != 0);
vsync->setActive(Con_GetInteger("vid-vsync") != 0);
fsaa->updateFromCVar();
vsync->updateFromCVar();

// Select the current resolution/size in the mode list.
Canvas::Size current;
Expand All @@ -97,7 +98,8 @@ DENG2_OBSERVES(PersistentCanvasWindow, AttributeChange)
current = win.windowRect().size();
}

// Update selected display mode.
// Update selected display mode. We'll find the closest one
// because the current canvas size may be anything.
ui::Data::Pos closest = ui::Data::InvalidPos;
int delta;
for(ui::Data::Pos i = 0; i < modes->items().size(); ++i)
Expand Down Expand Up @@ -144,10 +146,8 @@ VideoSettingsDialog::VideoSettingsDialog(String const &name)
d->showFps->setText(tr("Show FPS"));

d->fsaa->setText(tr("Antialias"));
d->fsaa->setAction(new SignalAction(this, SLOT(toggleAntialias())));

d->vsync->setText(tr("VSync"));
d->vsync->setAction(new SignalAction(this, SLOT(toggleVerticalSync())));

LabelWidget *modeLabel = new LabelWidget;
modeLabel->setText(tr("Mode:"));
Expand Down Expand Up @@ -226,16 +226,6 @@ VideoSettingsDialog::VideoSettingsDialog(String const &name)
#endif
}

void VideoSettingsDialog::toggleAntialias()
{
Con_SetInteger("vid-fsaa", !Con_GetInteger("vid-fsaa"));
}

void VideoSettingsDialog::toggleVerticalSync()
{
Con_SetInteger("vid-vsync", !Con_GetInteger("vid-vsync"));
}

void VideoSettingsDialog::changeMode(uint selected)
{
QPoint res = d->modes->items().at(selected).data().toPoint();
Expand Down
4 changes: 4 additions & 0 deletions doomsday/client/src/ui/widgets/dialogwidget.cpp
Expand Up @@ -133,6 +133,10 @@ DENG2_OBSERVES(ui::Data, Removal)
heading = new LabelWidget;
heading->setFont("heading");
heading->margins().setBottom("");
heading->margins().setTop(style().rules().rule("gap") +
style().rules().rule("dialog.gap"));
heading->margins().setLeft(style().rules().rule("gap") +
style().rules().rule("dialog.gap"));
heading->setSizePolicy(ui::Expand, ui::Expand);
heading->setTextColor("accent");
heading->setAlignment(ui::AlignLeft);
Expand Down
13 changes: 13 additions & 0 deletions doomsday/client/src/ui/widgets/menuwidget.cpp
Expand Up @@ -353,6 +353,19 @@ void MenuWidget::update()
ScrollAreaWidget::update();
}

bool MenuWidget::handleEvent(Event const &event)
{
if(event.type() == Event::MousePosition)
{
if(rule().recti().contains(event.as<MouseEvent>().pos()))
{
// Eat position events inside the menu area.
return true;
}
}
return ScrollAreaWidget::handleEvent(event);
}

void MenuWidget::dismissPopups()
{
foreach(PopupWidget *pop, d->openPopups)
Expand Down

0 comments on commit 1b9f45b

Please sign in to comment.