Convert FbWinFrame::frameExtentSig to FbTk::Signal
Also, I spotted a potential bug in the code. I marked the place with XXX. Someone should take a look at that.
This commit is contained in:
parent
ff49160b12
commit
2073ae12a4
4 changed files with 13 additions and 23 deletions
|
@ -533,7 +533,7 @@ void FbWinFrame::applyState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
moveResize(new_x, new_y, new_w, new_h);
|
moveResize(new_x, new_y, new_w, new_h);
|
||||||
frameExtentSig().notify();
|
frameExtentSig().emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FbWinFrame::setAlpha(bool focused, int alpha) {
|
void FbWinFrame::setAlpha(bool focused, int alpha) {
|
||||||
|
@ -1478,7 +1478,7 @@ void FbWinFrame::applyDecorations(bool do_move) {
|
||||||
m_state.saveGeometry(x(), y(), width(), height());
|
m_state.saveGeometry(x(), y(), width(), height());
|
||||||
}
|
}
|
||||||
if (client_move)
|
if (client_move)
|
||||||
frameExtentSig().notify();
|
frameExtentSig().emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FbWinFrame::setBorderWidth(bool do_move) {
|
bool FbWinFrame::setBorderWidth(bool do_move) {
|
||||||
|
@ -1529,7 +1529,7 @@ bool FbWinFrame::setBorderWidth(bool do_move) {
|
||||||
alignTabs();
|
alignTabs();
|
||||||
|
|
||||||
if (do_move) {
|
if (do_move) {
|
||||||
frameExtentSig().notify();
|
frameExtentSig().emit();
|
||||||
gravityTranslate(grav_x, grav_y, sizeHints().win_gravity,
|
gravityTranslate(grav_x, grav_y, sizeHints().win_gravity,
|
||||||
m_active_orig_client_bw, false);
|
m_active_orig_client_bw, false);
|
||||||
// if the location changes, shift it
|
// if the location changes, shift it
|
||||||
|
|
|
@ -27,13 +27,13 @@
|
||||||
#include "FbTk/FbWindow.hh"
|
#include "FbTk/FbWindow.hh"
|
||||||
#include "FbTk/EventHandler.hh"
|
#include "FbTk/EventHandler.hh"
|
||||||
#include "FbTk/RefCount.hh"
|
#include "FbTk/RefCount.hh"
|
||||||
#include "FbTk/Subject.hh"
|
|
||||||
#include "FbTk/Color.hh"
|
#include "FbTk/Color.hh"
|
||||||
#include "FbTk/LayerItem.hh"
|
#include "FbTk/LayerItem.hh"
|
||||||
#include "FbTk/TextButton.hh"
|
#include "FbTk/TextButton.hh"
|
||||||
#include "FbTk/DefaultValue.hh"
|
#include "FbTk/DefaultValue.hh"
|
||||||
#include "FbTk/Container.hh"
|
#include "FbTk/Container.hh"
|
||||||
#include "FbTk/Shape.hh"
|
#include "FbTk/Shape.hh"
|
||||||
|
#include "FbTk/Signal.hh"
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
@ -231,8 +231,7 @@ public:
|
||||||
const FbTk::LayerItem &layerItem() const { return m_layeritem; }
|
const FbTk::LayerItem &layerItem() const { return m_layeritem; }
|
||||||
FbTk::LayerItem &layerItem() { return m_layeritem; }
|
FbTk::LayerItem &layerItem() { return m_layeritem; }
|
||||||
|
|
||||||
const FbTk::Subject &frameExtentSig() const { return m_frame_extent_sig; }
|
FbTk::Signal<> &frameExtentSig() { return m_frame_extent_sig; }
|
||||||
FbTk::Subject &frameExtentSig() { return m_frame_extent_sig; }
|
|
||||||
/// @returns true if the window is inside titlebar,
|
/// @returns true if the window is inside titlebar,
|
||||||
/// assuming window is an event window that was generated for this frame.
|
/// assuming window is an event window that was generated for this frame.
|
||||||
bool insideTitlebar(Window win) const;
|
bool insideTitlebar(Window win) const;
|
||||||
|
@ -318,7 +317,7 @@ private:
|
||||||
FbTk::FbWindow m_clientarea; ///< window that sits behind client window to fill gaps @see setClientWindow
|
FbTk::FbWindow m_clientarea; ///< window that sits behind client window to fill gaps @see setClientWindow
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
FbTk::Subject m_frame_extent_sig;
|
FbTk::Signal<> m_frame_extent_sig;
|
||||||
|
|
||||||
typedef std::vector<FbTk::Button *> ButtonList;
|
typedef std::vector<FbTk::Button *> ButtonList;
|
||||||
ButtonList m_buttons_left, ///< buttons to the left
|
ButtonList m_buttons_left, ///< buttons to the left
|
||||||
|
|
|
@ -288,7 +288,7 @@ FluxboxWindow::FluxboxWindow(WinClient &client):
|
||||||
m_resize_corner(RIGHTBOTTOM) {
|
m_resize_corner(RIGHTBOTTOM) {
|
||||||
|
|
||||||
join(m_theme.reconfigSig(), FbTk::MemFun(*this, &FluxboxWindow::themeReconfigured));
|
join(m_theme.reconfigSig(), FbTk::MemFun(*this, &FluxboxWindow::themeReconfigured));
|
||||||
m_frame.frameExtentSig().attach(this);
|
join(m_frame.frameExtentSig(), FbTk::MemFun(*this, &FluxboxWindow::frameExtentChanged));
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|
||||||
|
@ -538,7 +538,7 @@ void FluxboxWindow::init() {
|
||||||
gettimeofday(&now, NULL);
|
gettimeofday(&now, NULL);
|
||||||
m_creation_time = now.tv_sec;
|
m_creation_time = now.tv_sec;
|
||||||
|
|
||||||
frame().frameExtentSig().notify();
|
frame().frameExtentSig().emit();
|
||||||
|
|
||||||
setupWindow();
|
setupWindow();
|
||||||
|
|
||||||
|
@ -1452,6 +1452,7 @@ void FluxboxWindow::setFullscreenLayer() {
|
||||||
void FluxboxWindow::attachWorkAreaSig() {
|
void FluxboxWindow::attachWorkAreaSig() {
|
||||||
// notify when struts change, so we can resize accordingly
|
// notify when struts change, so we can resize accordingly
|
||||||
// Subject checks for duplicates for us
|
// Subject checks for duplicates for us
|
||||||
|
// XXX: this is no longer true with signals
|
||||||
if (m_state.maximized || m_state.fullscreen)
|
if (m_state.maximized || m_state.fullscreen)
|
||||||
join(screen().workspaceAreaSig(),
|
join(screen().workspaceAreaSig(),
|
||||||
FbTk::MemFun(*this, &FluxboxWindow::workspaceAreaChanged));
|
FbTk::MemFun(*this, &FluxboxWindow::workspaceAreaChanged));
|
||||||
|
@ -2677,8 +2678,8 @@ void FluxboxWindow::setTitle(const std::string& title, Focusable &client) {
|
||||||
titleSig().emit(title, *this);
|
titleSig().emit(title, *this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FluxboxWindow::update(FbTk::Subject *subj) {
|
void FluxboxWindow::frameExtentChanged() {
|
||||||
if (m_initialized && subj == &m_frame.frameExtentSig()) {
|
if (m_initialized) {
|
||||||
Fluxbox::instance()->updateFrameExtents(*this);
|
Fluxbox::instance()->updateFrameExtents(*this);
|
||||||
sendConfigureNotify();
|
sendConfigureNotify();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,8 +33,6 @@
|
||||||
|
|
||||||
#include "FbTk/DefaultValue.hh"
|
#include "FbTk/DefaultValue.hh"
|
||||||
#include "FbTk/Timer.hh"
|
#include "FbTk/Timer.hh"
|
||||||
#include "FbTk/Subject.hh"
|
|
||||||
#include "FbTk/Observer.hh"
|
|
||||||
#include "FbTk/EventHandler.hh"
|
#include "FbTk/EventHandler.hh"
|
||||||
#include "FbTk/LayerItem.hh"
|
#include "FbTk/LayerItem.hh"
|
||||||
#include "FbTk/Signal.hh"
|
#include "FbTk/Signal.hh"
|
||||||
|
@ -58,7 +56,7 @@ class Layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates the window frame and handles any window event for it
|
/// Creates the window frame and handles any window event for it
|
||||||
class FluxboxWindow: public Focusable, public FbTk::Observer,
|
class FluxboxWindow: public Focusable,
|
||||||
public FbTk::EventHandler,
|
public FbTk::EventHandler,
|
||||||
private FbTk::SignalTracker {
|
private FbTk::SignalTracker {
|
||||||
public:
|
public:
|
||||||
|
@ -466,15 +464,6 @@ public:
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
class WinSubject: public FbTk::Subject {
|
|
||||||
public:
|
|
||||||
WinSubject(FluxboxWindow &w):m_win(w) { }
|
|
||||||
FluxboxWindow &win() { return m_win; }
|
|
||||||
const FluxboxWindow &win() const { return m_win; }
|
|
||||||
private:
|
|
||||||
FluxboxWindow &m_win;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool oplock; ///< Used to help stop transient loops occurring by locking a window during certain operations
|
bool oplock; ///< Used to help stop transient loops occurring by locking a window during certain operations
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -534,6 +523,7 @@ private:
|
||||||
void focusedWindowChanged(BScreen &screen, FluxboxWindow *focused_win, WinClient* client);
|
void focusedWindowChanged(BScreen &screen, FluxboxWindow *focused_win, WinClient* client);
|
||||||
/// Called when workspace area on screen changed.
|
/// Called when workspace area on screen changed.
|
||||||
void workspaceAreaChanged(BScreen &screen);
|
void workspaceAreaChanged(BScreen &screen);
|
||||||
|
void frameExtentChanged();
|
||||||
|
|
||||||
|
|
||||||
// state and hint signals
|
// state and hint signals
|
||||||
|
|
Loading…
Reference in a new issue