[gtkmm-documentation] examples: Update for latest gtkmm4 (remove Gtk::ShadowType, etc.)
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtkmm-documentation] examples: Update for latest gtkmm4 (remove Gtk::ShadowType, etc.)
- Date: Mon, 27 Apr 2020 13:19:34 +0000 (UTC)
commit 7dc55b35e9316691acf37ee3ff551ddc7caac5c2
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date: Mon Apr 27 15:17:14 2020 +0200
examples: Update for latest gtkmm4 (remove Gtk::ShadowType, etc.)
* examples/book/label/examplewindow.cc: Label::set_pattern() is replaced
by Pango markup to get underlined text.
* examples/book/popover/examplewindow.[cc|h]: The ToggleButton has been
replaced by a MenuButton. gtk_get_current_event() has been removed in gtk,
which made it more difficult to decide where to show a Popover when
a day is selected.
Minor changes in several other example programs.
examples/book/aspectframe/examplewindow.cc | 2 +-
examples/book/frame/examplewindow.cc | 5 +-
examples/book/label/examplewindow.cc | 9 ++-
examples/book/popover/examplewindow.cc | 70 ++++++++++++++--------
examples/book/popover/examplewindow.h | 19 ++++--
.../treeview/custom_treemodel/examplewindow.cc | 2 +-
.../others/cellrenderercustom/cellrendererlist.cc | 2 -
.../others/cellrenderercustom/cellrendererpopup.cc | 5 +-
8 files changed, 70 insertions(+), 44 deletions(-)
---
diff --git a/examples/book/aspectframe/examplewindow.cc b/examples/book/aspectframe/examplewindow.cc
index c8b6cfd..a7b6568 100644
--- a/examples/book/aspectframe/examplewindow.cc
+++ b/examples/book/aspectframe/examplewindow.cc
@@ -17,7 +17,7 @@
#include "examplewindow.h"
ExampleWindow::ExampleWindow()
-: m_AspectFrame("2x1", /* label */
+: m_AspectFrame(
Gtk::Align::CENTER, /* center x */
Gtk::Align::CENTER, /* center y */
2.0, /* xsize/ysize = 2 */
diff --git a/examples/book/frame/examplewindow.cc b/examples/book/frame/examplewindow.cc
index c5f5699..5072f02 100644
--- a/examples/book/frame/examplewindow.cc
+++ b/examples/book/frame/examplewindow.cc
@@ -31,10 +31,7 @@ ExampleWindow::ExampleWindow()
m_Frame.set_label("Gtk::Frame Widget");
/* Align the label at the right of the frame */
- //m_Frame.set_label_align(Gtk::Align::END, Gtk::Align::START);
-
- /* Set the style of the frame */
- m_Frame.set_shadow_type(Gtk::ShadowType::ETCHED_OUT);
+ m_Frame.set_label_align(Gtk::Align::END);
}
ExampleWindow::~ExampleWindow()
diff --git a/examples/book/label/examplewindow.cc b/examples/book/label/examplewindow.cc
index 0a57dd5..7963b28 100644
--- a/examples/book/label/examplewindow.cc
+++ b/examples/book/label/examplewindow.cc
@@ -33,8 +33,9 @@ ExampleWindow::ExampleWindow()
m_Label_Multi("This is a Multi-line label.\nSecond line\nThird line"),
m_Label_Left("This is a Left-Justified\nMulti-line label.\nThird line"),
m_Label_Right("This is a Right-Justified\nMulti-line label.\nThird line"),
- m_Label_Underlined("This label is underlined!\n"
- "This one is underlined in quite a funky fashion")
+ m_Label_Underlined("<u>This label is underlined!</u>\n"
+ "<u>T</u>h<u>is one is</u> <u>u</u>n<u>derlin</u>ed "
+ "in<u> q</u>u<u>ite a f</u>u<u>nky</u> fashion")
{
set_title("Label");
@@ -92,9 +93,7 @@ ExampleWindow::ExampleWindow()
m_VBox2.add(m_Frame_FilledWrapped);
m_Label_Underlined.set_justify(Gtk::Justification::LEFT);
- m_Label_Underlined.set_pattern (
- "_________________________ _ _________ _ ______"
- " __ _______ ___");
+ m_Label_Underlined.set_use_markup(true);
m_Frame_Underlined.add(m_Label_Underlined);
m_VBox2.add(m_Frame_Underlined);
}
diff --git a/examples/book/popover/examplewindow.cc b/examples/book/popover/examplewindow.cc
index a6a748a..5d4dc4e 100644
--- a/examples/book/popover/examplewindow.cc
+++ b/examples/book/popover/examplewindow.cc
@@ -18,7 +18,7 @@
ExampleWindow::ExampleWindow()
: m_format_buttons_box(Gtk::Orientation::HORIZONTAL),
- m_toggle_button("Button"),
+ m_menu_button(),
m_toggle_form_label("Non-modal Popover"),
m_toggle_form_combo_label("Popover position:"),
m_calendar_popover_label("Label:")
@@ -28,7 +28,8 @@ ExampleWindow::ExampleWindow()
set_default_size(500, -1);
// Button
- m_toggle_button.signal_toggled().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_toggled));
+ m_menu_button.set_label("Button");
+ m_menu_button.set_popover(m_toggle_form_popover);
// Form popover
configure_form_popover();
@@ -41,7 +42,7 @@ ExampleWindow::ExampleWindow()
// Layout
m_grid.set_row_spacing(6);
- m_grid.attach(m_toggle_button, 0, 0, 1, 1);
+ m_grid.attach(m_menu_button, 0, 0, 1, 1);
m_grid.attach(m_calendar, 0, 1, 6, 1);
m_grid.set_margin(12);
add(m_grid);
@@ -49,12 +50,7 @@ ExampleWindow::ExampleWindow()
ExampleWindow::~ExampleWindow()
{
-}
-
-void ExampleWindow::on_button_toggled()
-{
- bool active = m_toggle_button.get_active();
- m_toggle_form_popover.set_visible(active);
+ m_calendar_popover.unparent();
}
void ExampleWindow::configure_form_popover()
@@ -69,7 +65,6 @@ void ExampleWindow::configure_form_popover()
m_toggle_form_grid.attach(m_toggle_form_combo_label, 0, 2, 1, 1);
m_toggle_form_grid.attach(m_toggle_form_combo, 1, 2, 1, 1);
- m_toggle_form_popover.set_parent(m_toggle_button);
m_toggle_form_popover.add(m_toggle_form_grid);
m_toggle_form_popover.set_position(Gtk::PositionType::BOTTOM);
m_toggle_form_popover.set_margin(6);
@@ -124,11 +119,16 @@ void ExampleWindow::on_combo_changed()
void ExampleWindow::configure_cal_popover()
{
+ m_calendar_event_controller = Gtk::GestureClick::create();
+ m_calendar_event_controller->signal_pressed().connect(sigc::mem_fun(*this,
&ExampleWindow::on_button_pressed));
+ m_calendar_event_controller->signal_released().connect(sigc::mem_fun(*this,
&ExampleWindow::on_button_released));
+ m_calendar.add_controller(m_calendar_event_controller);
+
m_calendar.signal_day_selected().connect(sigc::mem_fun(*this, &ExampleWindow::on_day_selected));
m_calendar_form_grid.set_column_spacing(6);
- m_calendar_form_grid.attach(m_calendar_popover_label, 0, 0, 1, 1);
- m_calendar_form_grid.attach(m_calendar_popover_entry, 1, 0, 1, 1);
+ m_calendar_form_grid.attach(m_calendar_popover_label, 0, 0);
+ m_calendar_form_grid.attach(m_calendar_popover_entry, 1, 0);
m_calendar_popover.set_parent(m_calendar);
m_calendar_popover.add(m_calendar_form_grid);
@@ -137,24 +137,44 @@ void ExampleWindow::configure_cal_popover()
void ExampleWindow::on_day_selected()
{
- const auto current_event = Glib::wrap(gtk_get_current_event(), false);
+ if (m_button_pressed_called)
+ {
+ // on_button_pressed() was called before on_day_selected().
+ show_calendar_popover(m_button_pressed_x, m_button_pressed_y);
+ m_button_pressed_called = false;
+ }
+ else
+ {
+ m_day_selected_called = true;
+ }
+}
- if (current_event->get_event_type() != Gdk::Event::Type::BUTTON_PRESS)
- return;
+void ExampleWindow::on_button_pressed(int, double x, double y)
+{
+ if (m_day_selected_called)
+ {
+ // on_day_selected() was called before on_button_pressed().
+ show_calendar_popover(x, y);
+ m_day_selected_called = false;
+ }
+ else
+ {
+ m_button_pressed_x = x;
+ m_button_pressed_y = y;
+ m_button_pressed_called = true;
+ }
+}
- double x = 0.0;
- double y = 0.0;
- current_event->get_position(x, y);
- Gdk::Rectangle rect;
- auto allocation = m_calendar.get_allocation();
- rect.set_x(x - allocation.get_x());
- rect.set_y(y - allocation.get_y());
- rect.set_width(1);
- rect.set_height(1);
+void ExampleWindow::on_button_released(int, double, double)
+{
+ m_button_pressed_called = false;
+}
+void ExampleWindow::show_calendar_popover(double x, double y)
+{
+ const Gdk::Rectangle rect(x, y, 1, 1);
m_calendar_popover.set_pointing_to(rect);
m_calendar_popover.set_visible(true);
m_calendar_popover_entry.set_text("");
}
-
diff --git a/examples/book/popover/examplewindow.h b/examples/book/popover/examplewindow.h
index dbdb187..271849c 100644
--- a/examples/book/popover/examplewindow.h
+++ b/examples/book/popover/examplewindow.h
@@ -26,10 +26,11 @@ public:
virtual ~ExampleWindow();
protected:
- // Slots
- void on_button_toggled();
+ // Signal handlers
void on_combo_changed();
void on_day_selected();
+ void on_button_pressed(int n_press, double x, double y);
+ void on_button_released(int n_press, double x, double y);
// Containers
Gtk::Grid m_grid;
@@ -38,7 +39,7 @@ protected:
Gtk::Grid m_calendar_form_grid;
// Widgets
- Gtk::ToggleButton m_toggle_button;
+ Gtk::MenuButton m_menu_button;
Gtk::Popover m_toggle_form_popover;
Gtk::Label m_toggle_form_label;
@@ -51,13 +52,21 @@ protected:
Gtk::Label m_calendar_popover_label;
Gtk::Entry m_calendar_popover_entry;
+ // Event controller
+ Glib::RefPtr<Gtk::GestureClick> m_calendar_event_controller;
+
private:
void configure_form_popover();
void configure_form_buttons();
void configure_form_combo();
-
void configure_cal_popover();
+
+ void show_calendar_popover(double x, double y);
+
+ double m_button_pressed_x;
+ double m_button_pressed_y;
+ bool m_button_pressed_called = false;
+ bool m_day_selected_called = false;
};
#endif // GTKMM_EXAMPLEWINDOW_H
-
diff --git a/examples/book/treeview/custom_treemodel/examplewindow.cc
b/examples/book/treeview/custom_treemodel/examplewindow.cc
index 00aa71f..9d9aeba 100644
--- a/examples/book/treeview/custom_treemodel/examplewindow.cc
+++ b/examples/book/treeview/custom_treemodel/examplewindow.cc
@@ -36,7 +36,7 @@ ExampleWindow::ExampleWindow()
// Only show the scrollbars when they are necessary:
m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
- m_ScrolledWindow.set_shadow_type(Gtk::ShadowType::ETCHED_IN);
+ m_ScrolledWindow.set_has_frame(true);
m_ScrolledWindow.set_expand();
m_VBox.add(m_ScrolledWindow);
diff --git a/examples/others/cellrenderercustom/cellrendererlist.cc
b/examples/others/cellrenderercustom/cellrendererlist.cc
index 92f7e08..2e14d4f 100644
--- a/examples/others/cellrenderercustom/cellrendererlist.cc
+++ b/examples/others/cellrenderercustom/cellrendererlist.cc
@@ -18,7 +18,6 @@
#include "cellrendererlist.h"
#include "popupentry.h"
-
namespace
{
@@ -61,7 +60,6 @@ CellRendererList::CellRendererList()
get_popup_window()->add(*frame);
frame->add(tree_view_);
- frame->set_shadow_type(Gtk::ShadowType::OUT);
set_focus_widget(tree_view_);
}
diff --git a/examples/others/cellrenderercustom/cellrendererpopup.cc
b/examples/others/cellrenderercustom/cellrendererpopup.cc
index b4848b1..6491fa3 100644
--- a/examples/others/cellrenderercustom/cellrendererpopup.cc
+++ b/examples/others/cellrenderercustom/cellrendererpopup.cc
@@ -25,6 +25,9 @@ namespace
bool grab_on_window(const Glib::RefPtr<Gdk::Surface>& /* surface */)
{
+/*
+ // gtk_get_current_event_device() has been replaced by
+ // Gtk::EventController::get_current_event_device().
Glib::RefPtr<Gdk::Device> device (Glib::wrap(gtk_get_current_event_device(), true));
if(device)
@@ -35,7 +38,7 @@ bool grab_on_window(const Glib::RefPtr<Gdk::Surface>& /* surface */)
if (seat)
return true;
}
-
+*/
return false;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]