diff --git a/README.md b/README.md
index 4458fc4ee..154a45ea2 100644
--- a/README.md
+++ b/README.md
@@ -199,6 +199,8 @@ GDK_CORE_DEVICE_EVENTS=1 ./src/jdim
* ~~スレビュー表示内にアスキーアート(AA)と判定されたレスがあると、スレビュー全体にAAのフォント設定が適用される。
この問題はオプション `--with-pangolayout` を追加してビルドすると回避できる。~~
**0.2.0-20190921以降のバージョンで修正されています。**
+* ~~お気に入りにマウスオーバーすると表示されるツールチップがポインターからずれる。~~
+ **0.2.0-20191005以降のバージョンで修正されています。**
## 通常の起動
diff --git a/docs/manual/2019.md b/docs/manual/2019.md
index 3a051cff7..d9fa0a6fe 100644
--- a/docs/manual/2019.md
+++ b/docs/manual/2019.md
@@ -10,6 +10,12 @@ layout: default
### [0.3.0-unreleased](https://github.com/JDimproved/JDim/compare/JDim-v0.2.0...master) (unreleased)
+- Fix tooltips which are not near mouse pointer on bbs list/thread list for GTK3
+ ([#128](https://github.com/JDimproved/JDim/pull/128))
+- Add github links for previous version manuals
+ ([#130](https://github.com/JDimproved/JDim/pull/130))
+- Revert "[WORKAROUND] Fix build error for manual"
+ ([#129](https://github.com/JDimproved/JDim/pull/129))
- Use range-based for
([#126](https://github.com/JDimproved/JDim/pull/126))
- Refactor string operation
diff --git a/docs/manual/start.md b/docs/manual/start.md
index 7715ed1a8..6c832bfba 100644
--- a/docs/manual/start.md
+++ b/docs/manual/start.md
@@ -147,6 +147,8 @@ GDK_CORE_DEVICE_EVENTS=1 ./src/jdim
* ~~スレビュー表示内にアスキーアート(AA)と判定されたレスがあると、スレビュー全体にAAのフォント設定が適用される。
この問題はオプション `--with-pangolayout` を追加してビルドすると回避できる。~~
**0.2.0-20190921以降のバージョンで修正された。**
+* ~~お気に入りにマウスオーバーすると表示されるツールチップがポインターからずれる。~~
+ **0.2.0-20191005以降のバージョンで修正された。**
[pr-merged]: https://github.com/JDimproved/JDim/pulls?q=is%3Apr+is%3Amerged
diff --git a/src/bbslist/bbslistviewbase.cpp b/src/bbslist/bbslistviewbase.cpp
index 036fe79c3..a77868239 100644
--- a/src/bbslist/bbslistviewbase.cpp
+++ b/src/bbslist/bbslistviewbase.cpp
@@ -183,6 +183,8 @@ BBSListViewBase::BBSListViewBase( const std::string& url,const std::string& arg1
// treeviewのシグナルにコネクト
m_treeview.signal_row_expanded().connect( sigc::mem_fun(*this, &BBSListViewBase::slot_row_exp ) );
m_treeview.signal_row_collapsed().connect( sigc::mem_fun(*this, &BBSListViewBase::slot_row_col ) );
+ m_treeview.set_has_tooltip( true );
+ m_treeview.signal_query_tooltip().connect( sigc::mem_fun(*this, &BBSListViewBase::slot_query_tooltip) );
m_treeview.sig_button_press().connect( sigc::mem_fun(*this, &BBSListViewBase::slot_button_press ) );
m_treeview.sig_button_release().connect( sigc::mem_fun(*this, &BBSListViewBase::slot_button_release ) );
@@ -676,7 +678,6 @@ void BBSListViewBase::focus_out()
{
SKELETON::View::focus_out();
- m_treeview.hide_tooltip();
m_treeview.hide_popup();
}
@@ -1155,8 +1156,6 @@ bool BBSListViewBase::slot_motion_notify( GdkEventMotion* event )
if( m_treeview.get_path_at_pos( x, y, path, column, cell_x, cell_y ) && m_treeview.get_row( path ) ){
- const int mrg = 16; // アイコンの横幅。計算するのが面倒だったのでとりあえず
-
Gtk::TreeModel::Row row = m_treeview.get_row( path );
Glib::ustring subject = row[ m_columns.m_name ];
Glib::ustring url = row[ m_columns.m_url ];
@@ -1167,8 +1166,6 @@ bool BBSListViewBase::slot_motion_notify( GdkEventMotion* event )
// 画像ポップアップ
if( type == TYPE_IMAGE ){
- m_treeview.hide_tooltip();
-
if( DBIMG::get_type_ext( url ) != DBIMG::T_UNKNOWN && DBIMG::get_code( url ) != HTTP_INIT ){
if( m_treeview.pre_popup_url() != url ){
@@ -1180,19 +1177,12 @@ bool BBSListViewBase::slot_motion_notify( GdkEventMotion* event )
else m_treeview.hide_popup();
}
- // ツールチップ
+ // ツールチップはslot_query_tooltipでセットする
else{
-
m_treeview.hide_popup();
-
- Gdk::Rectangle rect;
- m_treeview.get_cell_area( path, *column, rect );
- m_treeview.set_tooltip_min_width( rect.get_width() - mrg );
- m_treeview.set_str_tooltip( subject );
}
}
else{
- m_treeview.hide_tooltip();
m_treeview.hide_popup();
}
@@ -3163,6 +3153,41 @@ void BBSListViewBase::slot_hide_editlistwin()
}
+//
+// ツールチップのセット
+//
+bool BBSListViewBase::slot_query_tooltip( int x, int y, bool keyboard_tooltip,
+ const Glib::RefPtr& tooltip )
+{
+ // NOTE: GTK2版で Gtk::TreeView::get_tooltip_context_path() を使うと
+ // マウスポインターをヘッダーや空行へ動かしたときに segmentation fault でクラッシュする
+ Gtk::TreeModel::iterator iter;
+ if( m_treeview.get_tooltip_context_iter( x, y, keyboard_tooltip, iter ) ) {
+
+ const Gtk::TreeModel::Path path = m_treestore->get_path( iter );
+ m_treeview.set_tooltip_row( tooltip, path );
+
+ const Gtk::TreeModel::Row row = m_treeview.get_row( path );
+ const Glib::ustring& subject = row[ m_columns.m_name ];
+ const Glib::ustring& url = row[ m_columns.m_url ];
+ const int type = row[ m_columns.m_type ];
+
+ m_treeview.reset_pre_popupurl( url );
+
+ // 画像ポップアップはslot_motion_notifyでセットする
+ if( type == TYPE_IMAGE ) return false;
+
+ // ツールチップ
+ m_treeview.hide_popup();
+ tooltip->set_text( subject );
+ return true;
+ }
+ m_treeview.hide_popup();
+ return false;
+}
+
+
+
//
// XML保存
//
diff --git a/src/bbslist/bbslistviewbase.h b/src/bbslist/bbslistviewbase.h
index 5d7aa51fd..5bddec24a 100644
--- a/src/bbslist/bbslistviewbase.h
+++ b/src/bbslist/bbslistviewbase.h
@@ -322,6 +322,8 @@ namespace BBSLIST
// ツリーの編集ウィンドウが閉じた
void slot_hide_editlistwin();
+
+ bool slot_query_tooltip( int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip );
};
}
diff --git a/src/board/boardviewbase.cpp b/src/board/boardviewbase.cpp
index 5deb2eb48..e8ee5aa9f 100644
--- a/src/board/boardviewbase.cpp
+++ b/src/board/boardviewbase.cpp
@@ -177,6 +177,8 @@ BoardViewBase::BoardViewBase( const std::string& url, const bool show_col_board
m_treeview.sig_key_press().connect( sigc::mem_fun(*this, &BoardViewBase::slot_key_press ) );
m_treeview.sig_key_release().connect( sigc::mem_fun(*this, &BoardViewBase::slot_key_release ) );
m_treeview.sig_scroll_event().connect( sigc::mem_fun(*this, &BoardViewBase::slot_scroll_event ) );
+ m_treeview.set_has_tooltip( true );
+ m_treeview.signal_query_tooltip().connect( sigc::mem_fun(*this, &BoardViewBase::slot_query_tooltip) );
m_treeview.signal_drag_data_get().connect( sigc::mem_fun(*this, &BoardViewBase::slot_drag_data_get ) );
m_treeview.sig_dropped_uri_list().connect( sigc::mem_fun(*this, &BoardViewBase::slot_dropped_url_list ) );
@@ -1370,8 +1372,6 @@ void BoardViewBase::focus_view()
void BoardViewBase::focus_out()
{
SKELETON::View::focus_out();
-
- m_treeview.hide_tooltip();
}
@@ -2131,27 +2131,6 @@ bool BoardViewBase::slot_motion_notify( GdkEventMotion* event )
/// マウスジェスチャ
get_control().MG_motion( event );
- const int x = (int)event->x;
- const int y = (int)event->y;
- Gtk::TreeModel::Path path;
- Gtk::TreeView::Column* column;
- int cell_x;
- int cell_y;
-
- // ツールチップに文字列をセットする
- if( m_treeview.get_path_at_pos( x, y, path, column, cell_x, cell_y ) ){
-
- // 列幅よりもツールチップの幅が広い場合はツールチップを表示する
- m_treeview.set_tooltip_min_width( column->get_width() );
-
- if( column->get_title() == ITEM_NAME_BOARD ) m_treeview.set_str_tooltip( get_name_of_cell( path, m_columns.m_col_board ) );
- else if( column->get_title() == ITEM_NAME_NAME ) m_treeview.set_str_tooltip( get_name_of_cell( path, m_columns.m_col_subject ) );
- else if( column->get_title() == ITEM_NAME_SINCE ) m_treeview.set_str_tooltip( get_name_of_cell( path, m_columns.m_col_since ) );
- else if( column->get_title() == ITEM_NAME_LASTWRITE ) m_treeview.set_str_tooltip( get_name_of_cell( path, m_columns.m_col_write ) );
- else if( column->get_title() == ITEM_NAME_ACCESS ) m_treeview.set_str_tooltip( get_name_of_cell( path, m_columns.m_col_access ) );
- else m_treeview.set_str_tooltip( std::string() );
- }
-
return true;
}
@@ -2220,6 +2199,33 @@ bool BoardViewBase::slot_scroll_event( GdkEventScroll* event )
}
+//
+// ツールチップのセット
+//
+bool BoardViewBase::slot_query_tooltip( int x, int y, bool keyboard_tooltip,
+ const Glib::RefPtr& tooltip )
+{
+ // NOTE: GTK2版で Gtk::TreeView::get_tooltip_context_path() を使うと
+ // マウスポインターをヘッダーや空行へ動かしたときに segmentation fault でクラッシュする
+ Gtk::TreeModel::iterator iter;
+ if( m_treeview.get_tooltip_context_iter( x, y, keyboard_tooltip, iter ) ) {
+
+ const Gtk::TreeModel::Path path = m_liststore->get_path( iter );
+ m_treeview.set_tooltip_row( tooltip, path );
+
+ const Gtk::TreeModel::Row row = m_treeview.get_row( path );
+ const Glib::ustring& subject = row[ m_columns.m_col_subject ];
+
+#ifdef _DEBUG
+ std::cout << "BoardViewBase::slot_query_tooltip subject: " << subject << std::endl;
+#endif
+ tooltip->set_text( subject );
+ return true;
+ }
+ return false;
+}
+
+
//
// D&Dで受信側がデータ送信を要求してきた
//
diff --git a/src/board/boardviewbase.h b/src/board/boardviewbase.h
index 68784969c..4fc2a1d22 100644
--- a/src/board/boardviewbase.h
+++ b/src/board/boardviewbase.h
@@ -255,6 +255,7 @@ namespace BOARD
bool slot_motion_notify( GdkEventMotion* event );
bool slot_key_release( GdkEventKey* event );
bool slot_scroll_event( GdkEventScroll* event );
+ bool slot_query_tooltip( int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip );
void slot_bookmark( int bookmark );
void slot_open_tab();
diff --git a/src/fontcolorpref.cpp b/src/fontcolorpref.cpp
index 0c8f6048b..ed5ee4ef3 100644
--- a/src/fontcolorpref.cpp
+++ b/src/fontcolorpref.cpp
@@ -98,13 +98,8 @@ FontColorPref::FontColorPref( Gtk::Window* parent, const std::string& url )
m_combo_font.set_active( 0 );
m_fontbutton.set_font_name( CONFIG::get_fontname( m_font_tbl[ 0 ] ) );
-#if GTKMM_CHECK_VERSION(2,12,0)
m_event_font.set_tooltip_text( m_tooltips_font[ 0 ] );
m_fontbutton.set_tooltip_text( m_tooltips_font[ 0 ] );
-#else
- m_tooltips.set_tip( m_event_font, m_tooltips_font[ 0 ] );
- m_tooltips.set_tip( m_fontbutton, m_tooltips_font[ 0 ] );
-#endif
set_title( "フォントと色の詳細設定" );
#if GTKMM_CHECK_VERSION(3,0,0)
@@ -135,11 +130,7 @@ void FontColorPref::pack_widget()
m_checkbutton_font.add_label( "スレビューでフォント幅の近似計算を厳密に行う(_S)", true ),
m_checkbutton_font.set_active( CONFIG::get_strict_char_width() );
-#if GTKMM_CHECK_VERSION(2,12,0)
m_checkbutton_font.set_tooltip_text( WARNING_STRICTCHAR );
-#else
- m_tooltips.set_tip( m_checkbutton_font, WARNING_STRICTCHAR );
-#endif
m_hbox_checkbutton.pack_start( m_checkbutton_font, Gtk::PACK_SHRINK );
m_vbox_font.pack_start( m_hbox_checkbutton, Gtk::PACK_SHRINK, mrg/2 );
@@ -154,12 +145,7 @@ void FontColorPref::pack_widget()
m_hbox_space.set_spacing ( mrg );
m_hbox_space.pack_start( m_label_space, Gtk::PACK_SHRINK );
m_hbox_space.pack_start( m_spin_space, Gtk::PACK_SHRINK );
- constexpr const char* ss_tip = "スレビューにおいて行の高さを調節します( 標準は 1 )";
-#if GTKMM_CHECK_VERSION(2,12,0)
- m_spin_space.set_tooltip_text( ss_tip );
-#else
- m_tooltips.set_tip( m_spin_space, ss_tip );
-#endif
+ m_spin_space.set_tooltip_text( "スレビューにおいて行の高さを調節します( 標準は 1 )" );
m_vbox_font.pack_start( m_hbox_space, Gtk::PACK_SHRINK, mrg/2 );
set_activate_entry( m_spin_space );
@@ -175,25 +161,15 @@ void FontColorPref::pack_widget()
m_hbox_ubar.pack_start( m_label_ubar, Gtk::PACK_SHRINK );
m_hbox_ubar.pack_start( m_spin_ubar, Gtk::PACK_SHRINK );
m_vbox_font.pack_start( m_hbox_ubar, Gtk::PACK_SHRINK, mrg/2 );
- constexpr const char* su_tip = "スレビューにおいてアンカーなどの下線の位置を調節します( 標準は 1 )";
-#if GTKMM_CHECK_VERSION(2,12,0)
- m_spin_ubar.set_tooltip_text( su_tip );
-#else
- m_tooltips.set_tip( m_spin_ubar, su_tip );
-#endif
+ m_spin_ubar.set_tooltip_text( "スレビューにおいてアンカーなどの下線の位置を調節します( 標準は 1 )" );
set_activate_entry( m_spin_ubar );
// AAレスと判定する正規表現
m_label_aafont.set_text( CONFIG::get_regex_res_aa() );
m_vbox_font.pack_start( m_label_aafont, Gtk::PACK_SHRINK, mrg/2 );
- constexpr const char* la_tip =
- "この正規表現に一致したレスは、アスキーアートフォントで表示します( 次に開いたスレから有効 )";
-#if GTKMM_CHECK_VERSION(2,12,0)
- m_label_aafont.set_tooltip_text( la_tip );
-#else
- m_tooltips.set_tip( m_label_aafont, la_tip );
-#endif
+ m_label_aafont.set_tooltip_text(
+ "この正規表現に一致したレスは、アスキーアートフォントで表示します( 次に開いたスレから有効 )" );
set_activate_entry( m_label_aafont );
@@ -348,13 +324,8 @@ void FontColorPref::slot_combo_font_changed()
{
const int num = m_combo_font.get_active_row_number();
m_fontbutton.set_font_name( CONFIG::get_fontname( m_font_tbl[ num ] ) );
-#if GTKMM_CHECK_VERSION(2,12,0)
m_event_font.set_tooltip_text( m_tooltips_font[ num ] );
m_fontbutton.set_tooltip_text( m_tooltips_font[ num ] );
-#else
- m_tooltips.set_tip( m_event_font, m_tooltips_font[ num ] );
- m_tooltips.set_tip( m_fontbutton, m_tooltips_font[ num ] );
-#endif
}
diff --git a/src/fontcolorpref.h b/src/fontcolorpref.h
index 3e7acb19c..5361689d2 100644
--- a/src/fontcolorpref.h
+++ b/src/fontcolorpref.h
@@ -37,11 +37,6 @@ namespace CORE
{
Gtk::Notebook m_notebook;
-#if !GTKMM_CHECK_VERSION(2,12,0)
- // ツールチップ
- Gtk::Tooltips m_tooltips;
-#endif
-
// フォントの設定
std::vector< int > m_font_tbl;
std::vector< std::string > m_tooltips_font;
diff --git a/src/message/messageviewbase.cpp b/src/message/messageviewbase.cpp
index 944f7760c..801838fbc 100644
--- a/src/message/messageviewbase.cpp
+++ b/src/message/messageviewbase.cpp
@@ -441,15 +441,8 @@ void MessageViewBase::pack_widget()
m_check_fixname.set_label( "固定" );
m_check_fixmail.set_label( "固定" );
- constexpr const char* name_tip = "チェックすると名前欄を保存して固定にする";
- constexpr const char* mail_tip = "チェックするとメール欄を保存して固定にする";
-#if GTKMM_CHECK_VERSION(2,12,0)
- m_check_fixname.set_tooltip_text( name_tip );
- m_check_fixmail.set_tooltip_text( mail_tip );
-#else
- m_tooltip.set_tip( m_check_fixname, name_tip );
- m_tooltip.set_tip( m_check_fixmail, mail_tip );
-#endif
+ m_check_fixname.set_tooltip_text( "チェックすると名前欄を保存して固定にする" );
+ m_check_fixmail.set_tooltip_text( "チェックするとメール欄を保存して固定にする" );
set_name();
set_mail();
diff --git a/src/message/messageviewbase.h b/src/message/messageviewbase.h
index 4c7697d0e..f8a951be7 100644
--- a/src/message/messageviewbase.h
+++ b/src/message/messageviewbase.h
@@ -37,10 +37,6 @@ namespace MESSAGE
{
Post* m_post;
-#if !GTKMM_CHECK_VERSION(2,12,0)
- Gtk::Tooltips m_tooltip;
-#endif
-
Gtk::Notebook m_notebook;
SKELETON::View* m_preview;
Gtk::VBox m_msgview;
diff --git a/src/skeleton/Makefile.am b/src/skeleton/Makefile.am
index 23093cd63..a27bb271e 100644
--- a/src/skeleton/Makefile.am
+++ b/src/skeleton/Makefile.am
@@ -28,7 +28,6 @@ libskeleton_a_SOURCES = \
backforwardbutton.cpp \
popupwinbase.cpp \
popupwin.cpp \
- tooltip.cpp \
entry.cpp \
compentry.cpp \
label_entry.cpp \
@@ -80,7 +79,6 @@ noinst_HEADERS = \
popupwinbase.h \
popupwin.h \
iconpopup.h \
- tooltip.h \
entry.h \
compentry.h \
label_entry.h \
diff --git a/src/skeleton/admin.cpp b/src/skeleton/admin.cpp
index cd2541618..dfa072e4d 100644
--- a/src/skeleton/admin.cpp
+++ b/src/skeleton/admin.cpp
@@ -1804,7 +1804,6 @@ void Admin::focus_out()
SKELETON::View* view = get_current_view();
if( view ) view->focus_out();
- m_notebook->focus_out();
}
diff --git a/src/skeleton/dragnote.cpp b/src/skeleton/dragnote.cpp
index c59521048..b97201d5b 100644
--- a/src/skeleton/dragnote.cpp
+++ b/src/skeleton/dragnote.cpp
@@ -37,21 +37,13 @@ DragableNoteBook::DragableNoteBook()
m_notebook_tab.sig_button_press().connect( sigc::mem_fun( *this, &DragableNoteBook::slot_button_press_event ) );
m_notebook_tab.sig_button_release().connect( sigc::mem_fun( *this, &DragableNoteBook::slot_button_release_event ) );
- m_notebook_tab.sig_tab_motion_event().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_motion_event ) );
- m_notebook_tab.sig_tab_leave_event().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_leave_event ) );
-
m_notebook_tab.sig_tab_drag_motion().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_drag_motion ) );
m_notebook_tab.sig_scroll_event().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_scroll_event ) );
m_hbox_tab.pack_start( m_notebook_tab );
m_hbox_tab.pack_start( m_bt_tabswitch, Gtk::PACK_SHRINK );
- constexpr const char* bt_tabswitch_tip = "タブの一覧表示";
-#if GTKMM_CHECK_VERSION(2,12,0)
- m_bt_tabswitch.set_tooltip_text( bt_tabswitch_tip );
-#else
- m_tooltip_tabswitch.set_tip( m_bt_tabswitch, bt_tabswitch_tip );
-#endif
+ m_bt_tabswitch.set_tooltip_text( "タブの一覧表示" );
pack_start( m_hbox_tab, Gtk::PACK_SHRINK );
pack_start( m_notebook_toolbar, Gtk::PACK_SHRINK );
@@ -79,16 +71,6 @@ DragableNoteBook::~DragableNoteBook()
void DragableNoteBook::clock_in()
{
m_notebook_tab.clock_in();
- m_tooltip.clock_in();
-}
-
-
-//
-// フォーカスアウト
-//
-void DragableNoteBook::focus_out()
-{
- m_tooltip.hide_tooltip();
}
@@ -381,8 +363,6 @@ void DragableNoteBook::remove_page( const int page, const bool adjust_tab )
if( tablabel ) delete tablabel;
- m_tooltip.hide_tooltip();
-
if( ! get_n_pages() ) m_bt_tabswitch.hide_button();
}
@@ -555,9 +535,6 @@ SKELETON::TabLabel* DragableNoteBook::create_tablabel( const std::string& url )
m_control.get_eventbutton( CONTROL::DragStartButton, event );
tablabel->set_dragable( m_dragable, event.button );
- tablabel->sig_tab_motion_event().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_motion_event ) );
- tablabel->sig_tab_leave_event().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_leave_event ) );
-
tablabel->sig_tab_drag_begin().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_drag_begin ) );
tablabel->sig_tab_drag_data_get().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_drag_data_get ) );
tablabel->sig_tab_drag_end().connect( sigc::mem_fun(*this, &DragableNoteBook::slot_drag_end ) );
@@ -688,39 +665,6 @@ bool DragableNoteBook::slot_button_release_event( GdkEventButton* event )
-//
-// タブの中でマウスを動かした
-//
-void DragableNoteBook::slot_motion_event()
-{
- const int page = m_notebook_tab.get_page_under_mouse();
-
-#ifdef _DEBUG
- std::cout << "DragableNoteBook::slot_motion_event page = " << page << std::endl;
-#endif
-
- // ツールチップにテキストをセット
- if( page >= 0 && page < m_notebook_tab.get_n_pages() ){
- SKELETON::TabLabel* tab = m_notebook_tab.get_tablabel( page );
- if( tab ) m_tooltip.set_text( tab->get_fulltext() );
- }
- else m_tooltip.hide_tooltip();
-}
-
-
-//
-// タブからマウスが出た
-//
-void DragableNoteBook::slot_leave_event()
-{
-#ifdef _DEBUG
- std::cout << "DragableNoteBook::slot_leave_event page\n";
-#endif
-
- m_tooltip.hide_tooltip();
-}
-
-
// notebook_tab の上でホイールを回した
bool DragableNoteBook::slot_scroll_event( GdkEventScroll* event )
{
diff --git a/src/skeleton/dragnote.h b/src/skeleton/dragnote.h
index 1c943f64a..7ddc668f1 100644
--- a/src/skeleton/dragnote.h
+++ b/src/skeleton/dragnote.h
@@ -16,8 +16,6 @@
#include "viewnote.h"
#include "tabswitchbutton.h"
-#include "tooltip.h"
-
#include "control/control.h"
#include
@@ -77,9 +75,6 @@ namespace SKELETON
Gtk::HBox m_hbox_tab;
TabSwitchButton m_bt_tabswitch; // タブの切り替えボタン
-#if !GTKMM_CHECK_VERSION(2,12,0)
- Gtk::Tooltips m_tooltip_tabswitch;
-#endif
bool m_show_tabs;
bool m_show_toolbar;
@@ -94,8 +89,6 @@ namespace SKELETON
// 入力コントローラ
CONTROL::Control m_control;
- Tooltip m_tooltip;
-
bool m_dragable;
SKELETON::IconPopup* m_down_arrow;
@@ -121,7 +114,6 @@ namespace SKELETON
~DragableNoteBook();
void clock_in();
- void focus_out();
#if !GTKMM_CHECK_VERSION(3,0,0)
// 枠描画
@@ -205,10 +197,7 @@ namespace SKELETON
// コントローラ
CONTROL::Control& get_control(){ return m_control; }
- // タブからくるシグナルにコネクトする
- void slot_motion_event();
- void slot_leave_event();
-
+ // タブのドラッグ・アンド・ドロップ処理
void slot_drag_begin();
void slot_drag_motion( const int page, const int tab_x, const int tab_y, const int tab_width );
void slot_drag_data_get( Gtk::SelectionData& selection_data );
diff --git a/src/skeleton/dragtreeview.cpp b/src/skeleton/dragtreeview.cpp
index be119e570..29ee5a486 100644
--- a/src/skeleton/dragtreeview.cpp
+++ b/src/skeleton/dragtreeview.cpp
@@ -175,8 +175,6 @@ void DragTreeView::init_font( const std::string& fontname )
#else
modify_font( pfd );
#endif
-
- m_tooltip.modify_font_label( fontname );
}
@@ -190,17 +188,6 @@ void DragTreeView::clock_in()
m_popup_win->view()->clock_in();
return;
}
-
- m_tooltip.clock_in();
-}
-
-
-//
-// ツールチップに文字をセット
-//
-void DragTreeView::set_str_tooltip( const std::string& text )
-{
- m_tooltip.set_text( text );
}
@@ -550,7 +537,6 @@ void DragTreeView::wheelscroll( GdkEventScroll* event )
bool DragTreeView::on_leave_notify_event( GdkEventCrossing* event )
{
- m_tooltip.hide_tooltip();
if( ! is_mouse_on_popup() ){
hide_popup();
m_pre_popup_url = std::string();
diff --git a/src/skeleton/dragtreeview.h b/src/skeleton/dragtreeview.h
index bc7e7af83..ca0851dfb 100644
--- a/src/skeleton/dragtreeview.h
+++ b/src/skeleton/dragtreeview.h
@@ -11,9 +11,9 @@
#ifndef _DRAGTREEVIEW_H
#define _DRAGTREEVIEW_H
-#include "treeviewbase.h"
+#include "gtkmmversion.h"
-#include "tooltip.h"
+#include "treeviewbase.h"
#include "control/control.h"
@@ -38,8 +38,6 @@ namespace SKELETON
Gtk::TreeModel::Path m_path_dragstart;
Gtk::TreeModel::Path m_path_dragpre;
- Tooltip m_tooltip;
-
#if GTKMM_CHECK_VERSION(3,0,0)
static constexpr const char* s_css_classname = u8"jd-dragtreeview";
Glib::RefPtr< Gtk::CssProvider > m_provider = Gtk::CssProvider::create();
@@ -93,13 +91,6 @@ namespace SKELETON
// フォント初期化
void init_font( const std::string& fontname );
-
- // ツールチップ表示
- void set_str_tooltip( const std::string& str );
- // ツールチップ最小幅設定(指定した幅よりもツールチップが広い場合は表示)
- void set_tooltip_min_width( const int min_width ){ m_tooltip.set_min_width( min_width ); }
- void hide_tooltip(){ m_tooltip.hide_tooltip(); }
- void show_tooltip(){ m_tooltip.show_tooltip(); }
// ポップアップウィンドウ表示
const std::string& pre_popup_url() const { return m_pre_popup_url; }
diff --git a/src/skeleton/menubutton.cpp b/src/skeleton/menubutton.cpp
index 0c77852cd..1cde75a94 100644
--- a/src/skeleton/menubutton.cpp
+++ b/src/skeleton/menubutton.cpp
@@ -89,14 +89,9 @@ MenuButton::~MenuButton()
void MenuButton::set_tooltip_arrow( const std::string& tooltip )
{
-#if GTKMM_CHECK_VERSION(2,12,0)
if( m_arrow ) {
m_arrow->set_tooltip_text( tooltip );
}
-#else
- // gtkmm-2.12.0より前のバージョンはボタンの中のWidgetにツールチップを設定できない
- m_tooltip_arrow.set_tip( *this, tooltip );
-#endif
}
diff --git a/src/skeleton/menubutton.h b/src/skeleton/menubutton.h
index 7cd28af1b..ea82842f9 100644
--- a/src/skeleton/menubutton.h
+++ b/src/skeleton/menubutton.h
@@ -25,9 +25,6 @@ namespace SKELETON
std::vector< Gtk::MenuItem* > m_menuitems;
Gtk::Widget* m_label;
-#if !GTKMM_CHECK_VERSION(2,12,0)
- Gtk::Tooltips m_tooltip_arrow;
-#endif
Gtk::Arrow* m_arrow;
bool m_on_arrow;
diff --git a/src/skeleton/tabnote.cpp b/src/skeleton/tabnote.cpp
index 237a319b4..fb545476a 100644
--- a/src/skeleton/tabnote.cpp
+++ b/src/skeleton/tabnote.cpp
@@ -578,6 +578,7 @@ void TabNotebook::set_tab_fulltext( const std::string& str, int page )
SKELETON::TabLabel* tablabel = get_tablabel( page );
if( tablabel && str != tablabel->get_fulltext() ){
tablabel->set_fulltext( str );
+ tablabel->set_tooltip_text( str );
if( m_fixtab ) tablabel->resize_tab( str.length() );
else adjust_tabwidth();
}
diff --git a/src/skeleton/toolbar.cpp b/src/skeleton/toolbar.cpp
index dee9ec9be..7fc34cab3 100644
--- a/src/skeleton/toolbar.cpp
+++ b/src/skeleton/toolbar.cpp
@@ -294,11 +294,7 @@ void ToolBar::pack_transparent_separator()
//
void ToolBar::set_tooltip( Gtk::ToolItem& toolitem, const std::string& tip )
{
-#if GTKMM_CHECK_VERSION(2,12,0)
toolitem.set_tooltip_text( tip );
-#else
- toolitem.set_tooltip( m_tooltip, tip );
-#endif
}
diff --git a/src/skeleton/toolbar.h b/src/skeleton/toolbar.h
index 50ee4762b..4a0f05a6e 100644
--- a/src/skeleton/toolbar.h
+++ b/src/skeleton/toolbar.h
@@ -29,10 +29,6 @@ namespace SKELETON
bool m_enable_slot;
-#if !GTKMM_CHECK_VERSION(2,12,0)
- Gtk::Tooltips m_tooltip;
-#endif
-
// ボタンバー
SKELETON::JDToolbar m_buttonbar;
bool m_buttonbar_shown;
diff --git a/src/skeleton/tooltip.cpp b/src/skeleton/tooltip.cpp
deleted file mode 100644
index 2e6f3a465..000000000
--- a/src/skeleton/tooltip.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// ライセンス: GPL2
-
-//#define _DEBUG
-#include "jddebug.h"
-
-#include "tooltip.h"
-
-#include "global.h"
-
-using namespace SKELETON;
-
-// ツールチップ
-Tooltip::Tooltip()
- : PopupWinBase( POPUPWIN_DRAWFRAME ),
- m_counter( 0 ),
- m_min_width( 0 )
-{
- // 背景色をテーマに合わせる
- set_name( "gtk-tooltips" );
- set_border_width( 4 );
- add( m_label );
- show_all_children();
-}
-
-
-Tooltip::~Tooltip() noexcept = default;
-
-
-// フォント
-void Tooltip::modify_font_label( const std::string& fontname )
-{
- Pango::FontDescription pfd( fontname );
- pfd.set_weight( Pango::WEIGHT_NORMAL );
-#if GTKMM_CHECK_VERSION(3,0,0)
- m_label.override_font( pfd );
-#else
- m_label.modify_font( pfd );
-#endif
-}
-
-
-//
-// クロック入力
-//
-void Tooltip::clock_in()
-{
- const int popup_time = 500 // msec
- / TIMER_TIMEOUT ;
-
- // カウンターが一杯になったらツールチップ表示
- ++m_counter;
- if( m_counter == popup_time ) show_tooltip();
-}
-
-
-
-
-void Tooltip::set_text( const std::string& text )
-{
- if( m_label.get_text() == text ) return;
-
-#ifdef _DEBUG
- std::cout << "Tooltip::set_text" << text << std::endl;
-#endif
-
- hide_tooltip();
- resize( 1, 1 );
- m_label.set_text( text );
- m_counter = 0;
-}
-
-
-
-//
-// 表示
-//
-void Tooltip::show_tooltip()
-{
- if( m_label.get_text().empty() ) return;
-
-#ifdef _DEBUG
- std::cout << "Tooltip::show_tooltip" << m_label.get_text() << std::endl;
-#endif
-
- int x_mouse, y_mouse;
-#if GTKMM_CHECK_VERSION(3,0,0)
- Gdk::Display::get_default()->get_device_manager()->get_client_pointer()->get_position( x_mouse, y_mouse );
-#else
- Gdk::ModifierType mod;
- Gdk::Display::get_default()->get_pointer( x_mouse, y_mouse, mod );
-#endif
-
- // 一度画面外にshow()して幅を確定してから、もし m_min_width よりも
- // 幅が大きければマウスの位置に移動する
- move( -100, -100 );
- show();
- const int width = get_width();
- const int height = get_height();
-
-#ifdef _DEBUG
- std::cout << "width / min_width = " << width << " / " << m_min_width << std::endl;
-#endif
- if( width >= m_min_width ){
-
- // 画面外にはみださないように調整
- const int mrg = 4;
- const int width_desktop = get_screen()->get_width();
- if( x_mouse + width > width_desktop ) x_mouse = MAX( 0, width_desktop - width );
-
- move( x_mouse, y_mouse - height - mrg );
- }
-}
-
-
-void Tooltip::hide_tooltip()
-{
-#ifdef _DEBUG
- std::cout << "Tooltip::hide_tooltip\n";
-#endif
-
- m_counter = 10000;
- hide();
- m_label.set_text( std::string() );
-}
diff --git a/src/skeleton/tooltip.h b/src/skeleton/tooltip.h
deleted file mode 100644
index 3fab9d5c1..000000000
--- a/src/skeleton/tooltip.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// ライセンス: GPL2
-//
-// 自前のツールチップクラス
-//
-
-#ifndef _TOOLTIP_H
-#define _TOOLTIP_H
-
-#include "popupwinbase.h"
-
-namespace SKELETON
-{
- class Tooltip : public PopupWinBase
- {
- Gtk::Label m_label;
-
- int m_counter;
-
- // 横幅が m_min_width より大きければ表示
- int m_min_width;
-
- public:
-
- Tooltip();
- ~Tooltip() noexcept;
-
- void clock_in();
- void modify_font_label( const std::string& fontname );
-
- void set_text( const std::string& text );
- void set_min_width( const int min_width ){ m_min_width = min_width; }
-
- void show_tooltip();
- void hide_tooltip();
- };
-}
-
-
-#endif
diff --git a/src/skeleton/window.cpp b/src/skeleton/window.cpp
index e3a8d92c2..4ac40601d 100644
--- a/src/skeleton/window.cpp
+++ b/src/skeleton/window.cpp
@@ -404,11 +404,7 @@ void JDWindow::set_status( const std::string& stat )
#if GTKMM_CHECK_VERSION(2,5,0)
m_label_stat.set_text( stat );
-#if GTKMM_CHECK_VERSION(2,12,0)
m_label_stat_ebox.set_tooltip_text( stat );
-#else
- m_tooltip.set_tip( m_label_stat_ebox, stat );
-#endif
#else
m_statbar.push( stat );
#endif
diff --git a/src/skeleton/window.h b/src/skeleton/window.h
index c646c1cf7..224cb0bcf 100644
--- a/src/skeleton/window.h
+++ b/src/skeleton/window.h
@@ -45,9 +45,6 @@ namespace SKELETON
Gtk::Label m_label_stat;
Gtk::EventBox m_label_stat_ebox;
Gtk::EventBox m_mginfo_ebox;
-#if !GTKMM_CHECK_VERSION(2,12,0)
- Gtk::Tooltips m_tooltip;
-#endif
#else
Gtk::Statusbar m_statbar;
#endif