remove kb handling due to missing focus
This commit is contained in:
parent
bc35014269
commit
4556789b0e
|
@ -3,7 +3,6 @@ project('somebar', ['c', 'cpp'],
|
|||
|
||||
wayland_dep = dependency('wayland-client')
|
||||
wayland_cursor_dep = dependency('wayland-cursor')
|
||||
qt5 = import('qt5')
|
||||
qt5_dep = dependency('qt5', modules: ['Core', 'Gui'])
|
||||
|
||||
subdir('protocols')
|
||||
|
@ -13,4 +12,4 @@ executable('somebar',
|
|||
'src/shm_buffer.cpp',
|
||||
'src/bar.cpp',
|
||||
wayland_sources,
|
||||
dependencies: [qt5_dep, wayland_dep, wayland_cursor_dep])
|
||||
dependencies: [wayland_dep, wayland_cursor_dep, qt5_dep])
|
||||
|
|
14
src/bar.cpp
14
src/bar.cpp
|
@ -58,20 +58,20 @@ void Bar::create(wl_output *output)
|
|||
wl_surface_commit(_surface.get());
|
||||
}
|
||||
|
||||
void Bar::click(int x, int, int btn, unsigned int modifiers)
|
||||
void Bar::click(int x, int, int btn)
|
||||
{
|
||||
Arg arg = {0};
|
||||
Arg *argp = nullptr;
|
||||
Control control = Control::None;
|
||||
int control = ClkNone;
|
||||
if (x > _statusX) {
|
||||
control = Control::StatusText;
|
||||
control = ClkStatusText;
|
||||
} else if (x > _titleX) {
|
||||
control = Control::WinTitle;
|
||||
control = ClkWinTitle;
|
||||
} else if (x > _layoutX) {
|
||||
control = Control::LayoutSymbol;
|
||||
control = ClkLayoutSymbol;
|
||||
} else for (auto tag = _tags.size()-1; tag >= 0; tag--) {
|
||||
if (x > _tags[tag].x) {
|
||||
control = Control::TagBar;
|
||||
control = ClkTagBar;
|
||||
arg.ui = 1<<tag;
|
||||
argp = &arg;
|
||||
break;
|
||||
|
@ -79,7 +79,7 @@ void Bar::click(int x, int, int btn, unsigned int modifiers)
|
|||
}
|
||||
for (auto i = 0u; i < sizeof(buttons)/sizeof(buttons[0]); i++) {
|
||||
const auto& button = buttons[i];
|
||||
if (button.control == control && button.btn == btn && button.modifiers == modifiers) {
|
||||
if (button.control == control && button.btn == btn) {
|
||||
button.func(*_mon, *(argp ? argp : &button.arg));
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -56,5 +56,5 @@ public:
|
|||
void setTitle(const char *title);
|
||||
void setStatus(const QString &status);
|
||||
void invalidate();
|
||||
void click(int x, int y, int btn, unsigned int modifiers);
|
||||
void click(int x, int y, int btn);
|
||||
};
|
||||
|
|
|
@ -22,6 +22,14 @@ union Arg {
|
|||
};
|
||||
struct Monitor;
|
||||
|
||||
enum { ClkNone, ClkTagBar, ClkLayoutSymbol, ClkWinTitle, ClkStatusText };
|
||||
struct Button {
|
||||
int control;
|
||||
int btn; // <linux/input-event-codes.h>
|
||||
void (*func)(Monitor &mon, const Arg &arg);
|
||||
const Arg arg;
|
||||
};
|
||||
|
||||
extern wl_display *display;
|
||||
extern wl_compositor *compositor;
|
||||
extern wl_shm *shm;
|
||||
|
@ -33,15 +41,6 @@ void toggleview(Monitor &m, const Arg &arg);
|
|||
void view(Monitor &m, const Arg &arg);
|
||||
void setlayout(Monitor &m, const Arg &arg);
|
||||
|
||||
enum class Control { None, TagBar, LayoutSymbol, WinTitle, StatusText };
|
||||
struct Button {
|
||||
Control control;
|
||||
unsigned int modifiers; // todo xkbcommon
|
||||
int btn; // <linux/input-event-codes.h>
|
||||
void (*func)(Monitor &mon, const Arg &arg);
|
||||
const Arg arg;
|
||||
};
|
||||
|
||||
// wayland smart pointers
|
||||
template<typename T>
|
||||
struct wl_deleter;
|
||||
|
|
|
@ -18,9 +18,9 @@ constexpr ColorScheme colorActive = {QColor(0xee, 0xee, 0xee), QColor(0x00, 0x55
|
|||
constexpr ColorScheme colorUrgent = {colorActive.bg, colorActive.fg};
|
||||
|
||||
constexpr Button buttons[] = {
|
||||
{ Control::TagBar, 0, BTN_LEFT, toggleview, {0} },
|
||||
{ Control::TagBar, 0, BTN_MIDDLE, view, {0} },
|
||||
//{ Control::TagBar, 0, BTN_RIGHT, tag, {0} },
|
||||
{ Control::LayoutSymbol, 0, BTN_LEFT, setlayout, {.ui = 0} },
|
||||
{ Control::LayoutSymbol, 0, BTN_RIGHT, setlayout, {.ui = 2} },
|
||||
{ ClkTagBar, BTN_LEFT, toggleview, {0} },
|
||||
{ ClkTagBar, BTN_LEFT, view, {0} },
|
||||
//{ Clk::TagBar, 0, BTN_RIGHT, tag, {0} },
|
||||
{ ClkLayoutSymbol, BTN_LEFT, setlayout, {.ui = 0} },
|
||||
{ ClkLayoutSymbol, BTN_RIGHT, setlayout, {.ui = 2} },
|
||||
};
|
||||
|
|
|
@ -135,7 +135,7 @@ static const struct wl_pointer_listener pointerListener = {
|
|||
auto& seat = *static_cast<Seat*>(sp);
|
||||
if (!seat.pointer->focusedBar) return;
|
||||
for (auto btn : seat.pointer->btns) {
|
||||
seat.pointer->focusedBar->click(seat.pointer->x, seat.pointer->y, btn, 0);
|
||||
seat.pointer->focusedBar->click(seat.pointer->x, seat.pointer->y, btn);
|
||||
}
|
||||
seat.pointer->btns.clear();
|
||||
},
|
||||
|
@ -150,7 +150,8 @@ static const struct wl_seat_listener seatListener = {
|
|||
auto& seat = *static_cast<Seat*>(sp);
|
||||
auto hasPointer = cap & WL_SEAT_CAPABILITY_POINTER;
|
||||
if (!seat.pointer && hasPointer) {
|
||||
seat.pointer.emplace(SeatPointer {wl_unique_ptr<wl_pointer> {wl_seat_get_pointer(seat.wlSeat.get())}});
|
||||
auto &pointer = seat.pointer.emplace();
|
||||
pointer.wlPointer = wl_unique_ptr<wl_pointer> {wl_seat_get_pointer(seat.wlSeat.get())};
|
||||
wl_pointer_add_listener(seat.pointer->wlPointer.get(), &pointerListener, &seat);
|
||||
} else if (seat.pointer && !hasPointer) {
|
||||
seat.pointer.reset();
|
||||
|
|
Loading…
Reference in New Issue