1
1
#pragma once
2
2
3
3
#include < glibmm/dispatcher.h>
4
- #include < glibmm/markup .h>
5
- #include < gtkmm.h>
6
- #include < gtkmm/eventbox .h>
4
+ #include < gtkmm/gestureclick .h>
5
+ #include < gtkmm/eventcontrollerscroll .h>
6
+ #include < gtkmm/eventcontrollermotion .h>
7
7
#include < json/json.h>
8
8
9
9
#include " IModule.hpp"
10
-
11
10
namespace waybar {
12
11
13
12
class AModule : public IModule {
14
13
public:
15
- static constexpr const char *MODULE_CLASS = " module" ;
14
+ static constexpr const char *MODULE_CLASS{ " module" } ;
16
15
17
16
~AModule () override ;
18
17
auto update () -> void override ;
@@ -28,54 +27,70 @@ class AModule : public IModule {
28
27
// Derived classes are able to use it
29
28
AModule (const Json::Value &, const std::string &, const std::string &, bool enable_click = false ,
30
29
bool enable_scroll = false );
31
-
30
+ const std::string name_;
31
+ const Json::Value &config_;
32
+ Glib::RefPtr<Gtk::GestureClick> controllClick_;
33
+ Glib::RefPtr<Gtk::EventControllerScroll> controllScroll_;
34
+ Glib::RefPtr<Gtk::EventControllerMotion> controllMotion_;
32
35
enum SCROLL_DIR { NONE, UP, DOWN, LEFT, RIGHT };
33
36
34
- SCROLL_DIR getScrollDir (GdkEventScroll *e);
37
+ void bindEvents (Gtk::Widget& wg);
38
+ void unBindEvents ();
35
39
bool tooltipEnabled () const ;
36
40
37
- const std::string name_;
38
- const Json::Value &config_;
39
- Gtk::EventBox event_box_;
40
-
41
- virtual void setCursor (Gdk::CursorType const &c);
41
+ virtual void setCursor (const Glib::RefPtr<Gdk::Cursor> &cur);
42
+ virtual void setCursor (const Glib::ustring &name);
42
43
43
- virtual bool handleToggle (GdkEventButton * const &ev );
44
- virtual bool handleMouseEnter (GdkEventCrossing * const &ev );
45
- virtual bool handleMouseLeave (GdkEventCrossing * const &ev );
46
- virtual bool handleScroll (GdkEventScroll * );
47
- virtual bool handleRelease (GdkEventButton * const &ev );
48
- GObject *menu_ ;
44
+ virtual void handleToggle (int n_press, double dx, double dy );
45
+ virtual void handleRelease ( int n_press, double dx, double dy );
46
+ virtual bool handleScroll ( double dx, double dy );
47
+ virtual void handleMouseEnter ( double x, double y );
48
+ virtual void handleMouseLeave ( );
49
+ const SCROLL_DIR getScrollDir (Glib::RefPtr< const Gdk::Event> e) ;
49
50
50
51
private:
51
- bool handleUserEvent (GdkEventButton *const &ev);
52
52
const bool isTooltip;
53
- bool hasUserEvents_;
53
+ const bool isAfter{true };
54
+ bool enableClick_{false };
55
+ bool enableScroll_{false };
56
+ bool hasPressEvents_{false };
57
+ bool hasReleaseEvents_{false };
54
58
std::vector<int > pid_;
55
- gdouble distance_scrolled_y_;
56
- gdouble distance_scrolled_x_;
59
+ double distance_scrolled_x_{0.0 };
60
+ double distance_scrolled_y_{0.0 };
61
+ const Glib::RefPtr<Gdk::Cursor> curDefault;
62
+ const Glib::RefPtr<Gdk::Cursor> curPoint;
63
+ Glib::RefPtr<const Gdk::Event> currEvent_;
57
64
std::map<std::string, std::string> eventActionMap_;
58
- static const inline std::map<std::pair<uint , GdkEventType>, std::string> eventMap_{
59
- {std::make_pair (1 , GdkEventType::GDK_BUTTON_PRESS), " on-click" },
60
- {std::make_pair (1 , GdkEventType::GDK_BUTTON_RELEASE), " on-click-release" },
61
- {std::make_pair (1 , GdkEventType::GDK_2BUTTON_PRESS), " on-double-click" },
62
- {std::make_pair (1 , GdkEventType::GDK_3BUTTON_PRESS), " on-triple-click" },
63
- {std::make_pair (2 , GdkEventType::GDK_BUTTON_PRESS), " on-click-middle" },
64
- {std::make_pair (2 , GdkEventType::GDK_BUTTON_RELEASE), " on-click-middle-release" },
65
- {std::make_pair (2 , GdkEventType::GDK_2BUTTON_PRESS), " on-double-click-middle" },
66
- {std::make_pair (2 , GdkEventType::GDK_3BUTTON_PRESS), " on-triple-click-middle" },
67
- {std::make_pair (3 , GdkEventType::GDK_BUTTON_PRESS), " on-click-right" },
68
- {std::make_pair (3 , GdkEventType::GDK_BUTTON_RELEASE), " on-click-right-release" },
69
- {std::make_pair (3 , GdkEventType::GDK_2BUTTON_PRESS), " on-double-click-right" },
70
- {std::make_pair (3 , GdkEventType::GDK_3BUTTON_PRESS), " on-triple-click-right" },
71
- {std::make_pair (8 , GdkEventType::GDK_BUTTON_PRESS), " on-click-backward" },
72
- {std::make_pair (8 , GdkEventType::GDK_BUTTON_RELEASE), " on-click-backward-release" },
73
- {std::make_pair (8 , GdkEventType::GDK_2BUTTON_PRESS), " on-double-click-backward" },
74
- {std::make_pair (8 , GdkEventType::GDK_3BUTTON_PRESS), " on-triple-click-backward" },
75
- {std::make_pair (9 , GdkEventType::GDK_BUTTON_PRESS), " on-click-forward" },
76
- {std::make_pair (9 , GdkEventType::GDK_BUTTON_RELEASE), " on-click-forward-release" },
77
- {std::make_pair (9 , GdkEventType::GDK_2BUTTON_PRESS), " on-double-click-forward" },
78
- {std::make_pair (9 , GdkEventType::GDK_3BUTTON_PRESS), " on-triple-click-forward" }};
65
+ static const inline std::map<std::pair<std::pair<uint , int >,Gdk::Event::Type>, std::string> eventMap_ {
66
+ {std::make_pair (std::make_pair (1u , 1 ), Gdk::Event::Type::BUTTON_PRESS), " on-click" },
67
+ {std::make_pair (std::make_pair (1u , 1 ), Gdk::Event::Type::BUTTON_RELEASE), " on-click-release" },
68
+ {std::make_pair (std::make_pair (1u , 2 ), Gdk::Event::Type::BUTTON_PRESS), " on-double-click" },
69
+ {std::make_pair (std::make_pair (1u , 3 ), Gdk::Event::Type::BUTTON_PRESS), " on-triple-click" },
70
+ {std::make_pair (std::make_pair (2u , 1 ), Gdk::Event::Type::BUTTON_PRESS), " on-click-middle" },
71
+ {std::make_pair (std::make_pair (2u , 1 ), Gdk::Event::Type::BUTTON_RELEASE), " on-click-middle-release" },
72
+ {std::make_pair (std::make_pair (2u , 2 ), Gdk::Event::Type::BUTTON_PRESS), " on-double-click-middle" },
73
+ {std::make_pair (std::make_pair (2u , 3 ), Gdk::Event::Type::BUTTON_PRESS), " on-triple-click-middle" },
74
+ {std::make_pair (std::make_pair (3u , 1 ), Gdk::Event::Type::BUTTON_PRESS), " on-click-right" },
75
+ {std::make_pair (std::make_pair (3u , 1 ), Gdk::Event::Type::BUTTON_RELEASE), " on-click-right-release" },
76
+ {std::make_pair (std::make_pair (3u , 2 ), Gdk::Event::Type::BUTTON_PRESS), " on-double-click-right" },
77
+ {std::make_pair (std::make_pair (3u , 3 ), Gdk::Event::Type::BUTTON_PRESS), " on-triple-click-right" },
78
+ {std::make_pair (std::make_pair (8u , 1 ), Gdk::Event::Type::BUTTON_PRESS), " on-click-backward" },
79
+ {std::make_pair (std::make_pair (8u , 1 ), Gdk::Event::Type::BUTTON_RELEASE), " on-click-backward-release" },
80
+ {std::make_pair (std::make_pair (8u , 2 ), Gdk::Event::Type::BUTTON_PRESS), " on-double-click-backward" },
81
+ {std::make_pair (std::make_pair (8u , 3 ), Gdk::Event::Type::BUTTON_PRESS), " on-triple-click-backward" },
82
+ {std::make_pair (std::make_pair (9u , 1 ), Gdk::Event::Type::BUTTON_PRESS), " on-click-forward" },
83
+ {std::make_pair (std::make_pair (9u , 1 ), Gdk::Event::Type::BUTTON_RELEASE), " on-click-forward-release" },
84
+ {std::make_pair (std::make_pair (9u , 2 ), Gdk::Event::Type::BUTTON_PRESS), " on-double-click-forward" },
85
+ {std::make_pair (std::make_pair (9u , 3 ), Gdk::Event::Type::BUTTON_PRESS), " on-triple-click-forward" }
86
+ };
87
+ void handleClickEvent (uint n_button, int n_press, Gdk::Event::Type n_evtype);
88
+ void makeControllClick ();
89
+ void makeControllScroll ();
90
+ void makeControllMotion ();
91
+ void removeControllClick ();
92
+ void removeControllScroll ();
93
+ void removeControllMotion ();
79
94
};
80
95
81
96
} // namespace waybar
0 commit comments